引脚复用(PINMUX)
简介
在现代 SoC 设计中,外设数量不断增加,而物理引脚数量受封装成本和尺寸限制。芯片集成了 PINMUX(引脚复用)功能,允许单个物理引脚通过软件配置连接到不同的外设模块。PINMUX 技术通过引脚功能的灵活分配,在有限的引脚资源下实现了系统功能最大化。
当需要使用某个外设(如 UART、SPI、I2C 等)时,用户须先通过 PINMUX 配置将对应的物理引脚映射到该外设信号,将外设信号传递到 I/O 引脚。
功能描述
芯片的各个 I/O 引脚配备独立的 多路复用器(Multiplexer),用于连接各个外设模块。通过多路复用机制,复用器确保在任意时刻只有一个外设信号能够占用指定的 I/O 引脚,从而有效避免多个外设同时访问同一引脚时产生的信号冲突。
功能 ID 是写入引脚复用寄存器的配置值,用于指定该引脚所连接的外设功能。每个 I/O 引脚对应一个功能 ID 字段,向该字段写入不同的值,即可将引脚切换至对应的外设信号(如 UART1_RXD、 SPI0_CLK、 GPIO 等)。
根据功能 ID, 引脚功能组分为两类: 专用引脚功能组 和 全矩阵引脚功能组 —— 值较低的功能 ID 对应专用引脚功能组,值较高的对应全矩阵引脚功能组。
备注
功能 ID 的具体取值及信号对应关系可在 引脚复用表 中查阅。
警告
有关 TrapPin、WakePin、SWDpin、SpecialPin 等特殊引脚的使用,务必阅读 硬件设计指南 相关注意事项,以避免因配置不当导致功能异常。
专用引脚功能组
专用引脚功能组中,每个引脚仅能连接特定的外设模块,且只能映射至该模块的固定信号。虽然可配置的功能数量相对有限,但这种专用化设计能够充分发挥各 IP 模块的性能,满足高传输速率等要求。
专用引脚功能组的 功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}。
以 PB30 为例,它可以连接到如下图所示的几个外设信号上。如果将其 功能 ID 配置为 16,该引脚将通过引脚复用直接连接到 TIM9 的 TIM9_TRIG 信号。
专用引脚功能组的 功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}
以 PB5 为例,它可以连接到如下图所示的几个外设信号上。如果将其 功能 ID 配置为 6,可以将 PB5 连接到 SPI1 的 SPI1_CS 信号。
专用引脚功能组的 功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}
以 PB5 为例,它可以连接到如下图所示的几个外设信号上。如果将其 功能 ID 配置为 6,可以将 PB5 连接到 SPI1 的 SPI1_CS 信号。
专用引脚功能组的 功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}
以 PB5 为例,它可以连接到如下图所示的几个外设信号上。如果将其 功能 ID 配置为 6,可以将 PB5 连接到 SPI1 的 SPI1_CS 信号。
专用引脚功能组的 功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}
以 PB5 为例,它可以连接到如下图所示的几个外设信号上。如果将其 功能 ID 配置为 6,可以将 PB5 连接到 SPI1 的 SPI1_CS 信号。
备注
专用引脚通常按功能组进行组织,每个功能组包含一组相关的引脚。为获得最佳性能,建议选择同一功能组内的引脚,避免跨功能组混用。
有关功能组划分的详细信息,参考 引脚复用表 中批注中的
Group相关描述。
全矩阵功能组
全矩阵功能组中,每个引脚通过配置不同的功能 ID,可灵活映射至该功能组内几乎所有外设模块的所有信号。这种设计提供了更高的配置自由度,适用于引脚资源紧张、需要灵活调配的应用场景。
备注
全矩阵功能组的灵活性以一定的性能为代价:部分 IP 模块在使用全矩阵引脚时,最高传输速率可能低于使用专用引脚的理论上限,用户需根据实际需求权衡选择。
全矩阵功能组中可能有少数引脚对特定外设不支持,在 引脚复用表 中以
0标注。
全矩阵引脚功能组的 功能 ID 取值范围为 {{IC_PARAM_FUNCID_FULL_MATRIX_START}}~{{IC_PARAM_FUNCID_FULL_MATRIX_END}}。
以 PB30 为例:
将
PB30的 功能 ID 配置为19时,可以将PB30连接到 UART0 的UART0_TXD信号;将
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时,可以将PA11连接到 UART0 的UART0_TXD信号;将
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时,可以将PA11连接到 UART0 的UART0_TXD信号;将
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时,可以将PA11连接到 UART0 的UART0_TXD信号;将
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时,可以将PA11连接到 UART0 的UART0_TXD信号;将
PA11的 功能 ID 配置为21时,则可以将其连接到 UART0 的UART0_RXD信号。以此类推,
PA11可以配置为全矩阵引脚功能组中的任意功能 ID。
不支持。