引脚复用(PINMUX)
简介
在现代 SoC 设计中,外设数量持续增长,而物理引脚数量受封装成本与尺寸的限制。为在有限引脚资源下实现系统功能最大化,芯片集成了 PINMUX(引脚复用)功能:通过软件配置,可将单个物理引脚灵活分配给不同的外设模块使用。
因此,在使用某一外设(如 UART、SPI、I2C 等)前,用户需先通过 PINMUX 将该外设的信号映射到指定的物理引脚,从而建立外设与引脚之间的连接通路。
功能描述
PINMUX 的核心是为每个 I/O port 配备一个独立的多路复用器(Multiplexer)。该复用器负责在多个外设信号中进行选择,确保任意时刻仅有一个外设信号占用该引脚,从而避免多外设争用同一引脚导致的信号冲突。
复用器的选择行为由功能 ID 控制:
功能 ID 是写入引脚复用寄存器的配置值,用于指定引脚当前连接的外设信号。
每个 I/O port 对应一个功能 ID 字段,向该字段写入不同的值,即可将相应的外设信号(如 UART1_RXD、SPI0_CLK、GPIO 等)连接至该引脚。
根据功能 ID 的取值范围,引脚功能可分为两类:专用引脚功能组和全矩阵引脚功能组。
备注
功能 ID 的具体取值及其信号对应关系,请查阅 引脚复用表。
警告
涉及 TrapPin、WakePin、SWDPin 等特殊引脚的使用时,务必先阅读硬件设计指南中的相关注意事项,避免因配置不当导致功能异常。
专用引脚功能组
在专用引脚功能组中,特定外设模块的固定信号仅能连接到对应的专用引脚。其可配置的功能数量相对有限,但这种专用化设计可充分发挥各 IP 模块的性能,满足外设信号质量和速率性能要求。
专用引脚功能组的功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}。
以 PB30 为例,如下图所示的外设信号均可通过引脚复用连接到该引脚。如果将其功能 ID 配置为 16,TIM9 的 TIM9_TRIG 信号将通过引脚复用直接连接到该引脚。
专用引脚功能组的功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}。
以 PB5 为例,如下图所示的外设信号均可通过引脚复用连接到该引脚。如果将其功能 ID 配置为 6,SPI1 的 SPI1_CS 信号将通过引脚复用直接连接到该引脚。
专用引脚功能组的功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}。
以 PB5 为例,如下图所示的外设信号均可通过引脚复用连接到该引脚。如果将其功能 ID 配置为 6,SPI1 的 SPI1_CS 信号将通过引脚复用直接连接到该引脚。
专用引脚功能组的功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}。
以 PB5 为例,如下图所示的外设信号均可通过引脚复用连接到该引脚。如果将其功能 ID 配置为 6,SPI1 的 SPI1_CS 信号将通过引脚复用直接连接到该引脚。
专用引脚功能组的功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}。
以 PB5 为例,如下图所示的外设信号均可通过引脚复用连接到该引脚。如果将其功能 ID 配置为 6,SPI1 的 SPI1_CS 信号将通过引脚复用直接连接到该引脚。
专用引脚功能组的功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}。
以 PA0 为例,如下图所示的外设信号均可通过引脚复用连接到该引脚。如果将其功能 ID 配置为 1,UART2 的 UART2_RXD 信号将通过引脚复用直接连接到该引脚。
备注
专用引脚通常按 功能组 组织,每个功能组包含一组相关引脚。为获得最佳性能,需要在 同一功能组内 选择引脚,避免跨功能组混用。
功能组划分的详细信息,请参考 引脚复用表 批注中的 Group 相关描述。
全矩阵引脚功能组
在全矩阵引脚功能组中,该功能组内几乎所有外设模块的信号均可通过配置功能 ID,灵活映射至任意引脚。此设计提供更高的配置自由度,适用于引脚资源紧张、需灵活调配的应用场景。
备注
全矩阵引脚功能组的功能 ID 取值范围为 {{IC_PARAM_FUNCID_FULL_MATRIX_START}}~{{IC_PARAM_FUNCID_FULL_MATRIX_END}}。
以 PB30 为例:
将
PB30的功能 ID 配置为19时,可以将 UART0 的UART0_TXD信号连接到PB30;将
PB30的功能 ID 配置为20时,则可以将 UART0 的UART0_RXD信号连接到该引脚。以此类推,
PB30可以配置为全矩阵引脚功能组中的任意功能 ID。
全矩阵引脚功能组的功能 ID 取值范围为 {{IC_PARAM_FUNCID_FULL_MATRIX_START}}~{{IC_PARAM_FUNCID_FULL_MATRIX_END}}。
以 PA11 为例:
将
PA11的功能 ID 配置为20时,可以将 UART0 的UART0_TXD信号连接到PA11;将
PA11的功能 ID 配置为21时,则可以将 UART0 的UART0_RXD信号连接到该引脚。以此类推,
PA11可以配置为全矩阵引脚功能组中的任意功能 ID。
全矩阵引脚功能组的功能 ID 取值范围为 {{IC_PARAM_FUNCID_FULL_MATRIX_START}}~{{IC_PARAM_FUNCID_FULL_MATRIX_END}}。
以 PA11 为例:
将
PA11的功能 ID 配置为20时,可以将 UART0 的UART0_TXD信号连接到PA11;将
PA11的功能 ID 配置为21时,则可以将 UART0 的UART0_RXD信号连接到该引脚。以此类推,
PA11可以配置为全矩阵引脚功能组中的任意功能 ID。
全矩阵引脚功能组的功能 ID 取值范围为 {{IC_PARAM_FUNCID_FULL_MATRIX_START}}~{{IC_PARAM_FUNCID_FULL_MATRIX_END}}。
以 PA11 为例:
将
PA11的功能 ID 配置为20时,可以将 UART0 的UART0_TXD信号连接到PA11;将
PA11的功能 ID 配置为21时,则可以将 UART0 的UART0_RXD信号连接到该引脚。以此类推,
PA11可以配置为全矩阵引脚功能组中的任意功能 ID。
全矩阵引脚功能组的功能 ID 取值范围为 {{IC_PARAM_FUNCID_FULL_MATRIX_START}}~{{IC_PARAM_FUNCID_FULL_MATRIX_END}}。
以 PA11 为例:
将
PA11的功能 ID 配置为20时,可以将 UART0 的UART0_TXD信号连接到PA11;将
PA11的功能 ID 配置为21时,则可以将 UART0 的UART0_RXD信号连接到该引脚。以此类推,
PA11可以配置为全矩阵引脚功能组中的任意功能 ID。
不支持。