引脚复用(PINMUX)

简介

在现代 SoC 设计中,外设数量不断增加,而物理引脚数量受封装成本和尺寸限制。芯片集成了 PINMUX(引脚复用)功能,允许单个物理引脚通过软件配置连接到不同的外设模块。PINMUX 技术通过引脚功能的灵活分配,在有限的引脚资源下实现了系统功能最大化。

当需要使用某个外设(如 UART、SPI、I2C 等)时,用户须先通过 PINMUX 配置将对应的物理引脚映射到该外设信号,将外设信号传递到 I/O 引脚。

功能描述

芯片的各个 I/O 引脚配备独立的 多路复用器(Multiplexer),用于连接各个外设模块。通过多路复用机制,复用器确保在任意时刻只有一个外设信号能够占用指定的 I/O 引脚,从而有效避免多个外设同时访问同一引脚时产生的信号冲突。

功能 ID 是写入引脚复用寄存器的配置值,用于指定该引脚所连接的外设功能。每个 I/O 引脚对应一个功能 ID 字段,向该字段写入不同的值,即可将引脚切换至对应的外设信号(如 UART1_RXDSPI0_CLKGPIO 等)。

根据功能 ID, 引脚功能组分为两类: 专用引脚功能组全矩阵引脚功能组 —— 值较低的功能 ID 对应专用引脚功能组,值较高的对应全矩阵引脚功能组。

备注

功能 ID 的具体取值及信号对应关系可在 引脚复用表 中查阅。

警告

有关 TrapPin、WakePin、SWDpin、SpecialPin 等特殊引脚的使用,务必阅读 硬件设计指南 相关注意事项,以避免因配置不当导致功能异常。

专用引脚功能组

专用引脚功能组中,每个引脚仅能连接特定的外设模块,且只能映射至该模块的固定信号。虽然可配置的功能数量相对有限,但这种专用化设计能够充分发挥各 IP 模块的性能,满足高传输速率等要求。

RTL8721Dx:

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

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

../../_images/dplus_schematic_diagram_dedicate.svg

备注

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

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

全矩阵功能组

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

备注

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

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

RTL8721Dx:

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

../../_images/dplus_schematic_diagram_fullmatrix.svg