通过使用多功能且高速的端口扩展器,提升您的MCU的I/O功能,该扩展器非常适合对电源敏感的应用场景
A
A
硬件概览
它是如何工作的?
Expand 18 Click 基于 NXP 的 PCAL9714,这是一款超低电压转换的 14 位 SPI I/O 扩展器。该板为各种微控制器(MCU)系列提供了 I/O 扩展,能够以最少的连接要求增加额外的 GPIO(通用输入/输出)引脚。它通过 SPI 接口工作,因此与多种 MCU 兼容。其超低电压接口支持与工作电压低至 1.1V 的 MCU 直接通信,同时可与不同电压水平的 I/O 设备进行接口。这种 I/O 扩展解决方案特别适合需要与传感器、按键、键盘等输入设备进行接口的任务,同时确保功耗和引脚使用保持在最低水平。Expand 18 Click 中使用的 PCAL9714 具有集成的电平转换功能,在具有混合电源的系统中提供了极大的灵活性。它需要两个独立的电源:一个用于逻辑侧,另一个用于核心电路。逻辑侧可以通过 VCC SEL 跳线选择由 3.3V 或 5V mikroBUS™ 电源轨供电,而核心电路可以从 3.3V mikroBUS™ 电源轨或连接到 VEXT 引脚的外部电源
供电,支持 1.65V 到 5V 的电压。核心电路电源通过 VDDP SEL 跳线进行调节,以确保针对不同应用需求的最佳电压管理。Expand 18 Click 通过 4 线 SPI 接口与主 MCU 通信,支持最高 5MHz 的时钟频率,确保高效且可靠的数据传输。除了 SPI 接口外,板上还包括一个低电平有效的 RST 引脚,以便在超时或操作问题时重置 PCAL9714。上电复位将寄存器恢复为默认状态并重新初始化 SPI 状态机,而 RST 引脚则允许在不需要完全断电的情况下进行相同的重置过程。PCAL9714 还集成了 Agile I/O 功能,增强了 I/O 的功能。这些功能包括可编程输出驱动强度、可锁定输入、可编程上拉和下拉电阻、可屏蔽中断、中断状态寄存器,以及可配置的开漏或推挽输出。此外,Agile I/O Plus 还提供按电平或边缘指定的中断,并能够单独清除中断而不影响其他事件。当输入状态与相应的输入端口寄存器状态发生变化时,中断(INT)引脚被
触发,提醒主 MCU 该变化。上电时,所有 I/O 都配置为输入。不过,主 MCU 可以轻松地将其重新配置为输入或输出,只需写入相应的 I/O 配置位即可。每个 I/O 的数据存储在相应的输入或输出寄存器中,输入端口寄存器的极性可以通过极性反转寄存器反转,从而无需外部逻辑门。可编程上拉和下拉电阻进一步减少了对离散元件的需求。扩展器输出提供 25mA 的灌电流能力,能够直接驱动 LED,同时保持低功耗。此外,PCAL9714 还具有一个用于 SPI 总线地址编程的硬件引脚,通过 ADDR SEL 跳线访问,最多允许四个设备共享同一个 SPI 总线。该 Click 板™ 可以在 3.3V 或 5V 逻辑电压水平下运行,选择通过 VCC SEL 跳线进行。这使得 3.3V 和 5V 的 MCU 都能正确使用通信线路。此外,该 Click 板™ 还配备了易于使用的函数库和示例代码,可作为进一步开发的参考。
功能概述
开发板
PIC18F57Q43 Curiosity Nano 评估套件是一款尖端的硬件平台,旨在评估 PIC18-Q43 系列内的微控制器。其设计的核心是包含了功能强大的 PIC18F57Q43 微控制器(MCU),提供先进的功能和稳健的性能。这个评估套件的关键特点包括一个黄 色用户 LED 和一个响应灵敏的机械用户开关,提供无
缝的交互和测试。为一个 32.768kHz 水晶振荡器足迹提供支持,确保精准的定时能力。套件内置的调试器拥有一个绿色电源和状态 LED,使编程和调试变得直观高效。此外,增强其实用性的还有虚拟串行端口 (CDC)和一个调试 GPIO 通道(DGI GPIO),提供广泛的连接选项。该套件通过 USB 供电,拥有由
MIC5353 LDO 调节器提供支持的可调目标电压功能,确保在 1.8V 至 5.1V 的输出电压范围内稳定运行,最大输出电流为 500mA,受环境温度和电压限制。
微控制器概述
MCU卡片 / MCU

建筑
PIC
MCU 内存 (KB)
128
硅供应商
Microchip
引脚数
48
RAM (字节)
8196
你完善了我!
配件
Curiosity Nano Base for Click boards 是一款多功能硬件扩展平台,专为简化 Curiosity Nano 套件与扩展板之间的集成而设计,特别针对符合 mikroBUS™ 标准的 Click 板和 Xplained Pro 扩展板。这款创新的基板(屏蔽板)提供了无缝的连接和扩展可能性,简化了实验和开发过程。主要特点包括从 Curiosity Nano 套件提供 USB 电源兼容性,以及为增强灵活性而提供的另一种外部电源输入选项。板载锂离子/锂聚合物充电器和管理电路确保电池供电应用的平稳运行,简化了使用和管理。此外,基板内置了一个固定的 3.3V 电源供应单元,专用于目标和 mikroBUS™ 电源轨,以及一个固定的 5.0V 升压转换器,专供 mikroBUS™ 插座的 5V 电源轨,为各种连接设备提供稳定的电力供应。
Wire Jumpers Male to Female (15 cm length, 10pcs) 是一套高质量的跳线,专为简化原型设计和测试而设计。每根跳线长15厘米,一端为公头连接器,另一端为母头连接器,方便在面包板或其他电子项目中轻松连接组件。该套装包含十根不同颜色的跳线,便于电路中的清晰识别和组织。这些跳线非常适合DIY项目、设置和其他电子应用,在需要快速、可靠连接的场合下提供了理想的解决方案。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
该库包含 Expand 18 Click 驱动程序的 API。
关键功能:
expand18_set_pin_direction- 此函数设置所选引脚的方向。expand18_set_all_pins_value- 此函数设置所有输出引脚的值。expand18_read_port_value- 此函数读取所选端口输入引脚的值。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* @file main.c
* @brief Expand 18 Click example
*
* # Description
* This example demonstrates the use of Expand 18 Click board by setting and reading
* the ports state.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes the driver and performs the Click default configuration which sets
* the port 0 as output and the port 1 as input with pull-down enabled.
*
* ## Application Task
* Sets the pins of the port 0 and then reads the status of both ports and
* displays the results on the USB UART approximately once per second.
*
* @author Stefan Filipovic
*
*/
#include "board.h"
#include "log.h"
#include "expand18.h"
static expand18_t expand18;
static log_t logger;
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
expand18_cfg_t expand18_cfg; /**< Click config object. */
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
expand18_cfg_setup( &expand18_cfg );
EXPAND18_MAP_MIKROBUS( expand18_cfg, MIKROBUS_1 );
if ( SPI_MASTER_ERROR == expand18_init( &expand18, &expand18_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( EXPAND18_ERROR == expand18_default_cfg ( &expand18 ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
void application_task ( void )
{
uint8_t port_value = 0;
for ( uint16_t pin_num = EXPAND18_PIN_0_MASK; pin_num <= EXPAND18_PIN_7_MASK; pin_num <<= 1 )
{
expand18_set_all_pins_value( &expand18, pin_num );
expand18_read_port_value( &expand18, EXPAND18_PORT_0, &port_value );
log_printf( &logger, " Status port 0 (output): 0x%.2X\r\n", ( uint16_t ) port_value );
expand18_read_port_value( &expand18, EXPAND18_PORT_1, &port_value );
log_printf( &logger, " Status port 1 (input) : 0x%.2X\r\n\n", ( uint16_t ) port_value );
Delay_ms( 1000 );
}
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:端口扩展器



































