引脚复用(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 模块的性能,满足外设信号质量和速率性能要求。

RTL8721Dx:

专用引脚功能组的功能 ID 取值范围为 0~{{IC_PARAM_FUNCID_DEDICATE_END}}

PB30 为例,如下图所示的外设信号均可通过引脚复用连接到该引脚。如果将其功能 ID 配置为 16,TIM9 的 TIM9_TRIG 信号将通过引脚复用直接连接到该引脚。

../../_images/dplus_schematic_diagram_dedicate.svg

备注

  • 专用引脚通常按 功能组 组织,每个功能组包含一组相关引脚。为获得最佳性能,需要在 同一功能组内 选择引脚,避免跨功能组混用。

  • 功能组划分的详细信息,请参考 引脚复用表 批注中的 Group 相关描述。

全矩阵引脚功能组

在全矩阵引脚功能组中,该功能组内几乎所有外设模块的信号均可通过配置功能 ID,灵活映射至任意引脚。此设计提供更高的配置自由度,适用于引脚资源紧张、需灵活调配的应用场景。

备注

  • 有少量 I/O ports 不支持全矩阵功能,详细信息请参考 引脚复用表

  • 全矩阵引脚功能组的灵活性以一定性能为代价:部分 IP 模块在使用全矩阵引脚时,最高传输速率可能低于使用专用引脚的理论上限,用户应根据实际需求权衡选择。

  • 此外,全矩阵引脚功能组中少数引脚可能不支持特定外设,在 引脚复用表 中以 0 标注。

RTL8721Dx:

全矩阵引脚功能组的功能 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。

../../_images/dplus_schematic_diagram_fullmatrix.svg