RP2040 GPIO 全解:分组、功能选择、电气特性、中断触发,全是开发干货

📅 2026/7/29 12:11:34
RP2040 GPIO 全解:分组、功能选择、电气特性、中断触发,全是开发干货
GPIO 接口和外设RP2040 具有 36 个多功能通用输入/输出引脚分为两组​QSPI 组​共 6 个引脚 QSPI_SS、QSPI_SCLK 和 QSPI_SD0 到 QSPI_SD3负责连外部 Flash平时是 “专用插座”用来读 Flash 里的程序​**用户组GPIO0~GPIO29**​这是我们编程常用的 “通用插座”能接各种设备。其中 GPIO26~29 还额外支持 “模拟输入”能接温度传感器、电位器这类输出模拟信号的设备。每个 GPIO 都可以由处理器上运行的软件或许多其他功能块直接控制。1.功能选择一个示例 IO 的逻辑结构如图所示图 2.40 RP2040 芯片 GPIO 功能选择逻辑架构图左边的 PIO、SPI 等模块通过 “功能选择器” 选一个经信号反转 / 强制逻辑后要么输出信号到引脚要么接收引脚输入还能触发中断。其中每个 GPIO 都可以由多个外设中的一个来控制即每个 GPIO 引脚都能切换成不同的功能或者由 SIO 中的软件控制寄存器来控制你可以通过 “FUNCSEL” 这个 “功能开关”写 GPIO 的 CTRL 寄存器选择当前引脚要当什么用比如把 GPIO0 设为 SPI0 的接收引脚引脚的信号还能 “反转”比如原本输出高电平反转后变成低电平或者强制设为固定的高低电平注意一个引脚同时只能选一个功能一个外设比如 UART0 的接收也只能连一个引脚 —— 像 “一个插座同时只能插一个电器一个电器也只能插一个插座”。分配给每个 GPIO 的函数是通过写入 GPIO 的 CTRL 寄存器中的 FUNCSEL 字段来选择的。以 GPIO0_CTRL 为例每个 IO 上的可用功能见下表图 2.41 RP2040 芯片 GPIO 功能复用控制图0-20图 2.42 RP2040 芯片 GPIO 功能复用控制图21-29每个 GPIO 都可以同时选择一个函数。同样地每个外设输入例如 UART0 RX一次只能在一个 GPIO 上进行选择。如果相同的外设输入连接到多个 GPIO则外设输入将看到这些 GPIO 输入的逻辑 OR。GPIO bank 的功能说明如下图 2.43 GPIO bank 功能图通用输入/输出GPIOQSPI bank 功能说明如下图 2.44 QSPI 接口引脚功能映射表SCK、CSn、SD0图 2.45 QSPI 接口引脚功能映射表SD1、SD2、SD3这是 RP2040 的 QSPI 组引脚功能选项表展示了 QSPI_SCK、QSPI_CSn、QSPI_SD0~SD3 这 6 个引脚的可用功能每个引脚默认对应 “XIP” 功能用于连接外部 Flash实现从 Flash 直接执行程序同时都支持 “SIO” 功能可切换为软件控制的普通 GPIO 使用。GPIO QSPI bank 功能说明如下图 2.46 GPIO QSPI bank 功能配置图“XIP” 是连接外部 Flash 的同步串行接口让芯片能直接从 SPI / 双 SPI/Quad-SPI Flash 中执行程序“SIO” 是软件控制 GPIO 的功能选择该功能后可通过专门的寄存器控制这些引脚且能随时读取引脚的状态。六个 QSPI Bank GPIO 引脚通常被 XIP 外设用于与外部闪存设备通信。然而有两种情况下这些引脚可以用作软件控制的 GPIO如果外部 Flash 用的是 “SPI / 双 SPI” 模式其中 SD2、SD3 引脚用不上能当普通 GPIO如果芯片不用 Flash只靠 USB 启动这 6 个引脚都能当普通 GPIO 用。2.中断GPIO 外部中断可被配置为如下四种类型并且中断类型可以被随时修改图 2.47 GPIO 中断与 Pad 结构说明3.Pads每个 GPIO 都通过一个“Pads”连接到片外世界。Pads 是芯片内部逻辑和外部电路之间的电气接口。它们转换信号电压电平支持更高的电流并提供一些静电放电 ESD 事件保护。图 2.48 GPIO Pad 电气特性与结构框图Pads 的电气特性可以调整以满足外部电路。可进行以下调整​驱动强度​调整引脚能输出的电流比如接亮 LED 要 8mA接敏感传感器只用 2mA​压摆率​调整引脚信号变化的快慢接高速设备用 “快速”接低速设备用 “慢速” 更稳定​上拉 / 下拉​引脚没接设备时自动保持高电平或低电平避免引脚 “乱飘” 导致设备误触发​施密特触发​让输入信号更 “抗干扰”比如外部信号有点波动也能稳定识别成高 / 低电平​关闭输入缓冲​引脚不用时关掉 “信号接收”能省电。用户 bank IO 寄存器的基址为 0x40014000图 2.49 GPIO 寄存器地址映射表GPIO0 至 GPIO14图 2.50 GPIO 寄存器地址映射表GPIO15 至 GPIO24图 2.51 中断控制器寄存器映射表PROC0 与 PROC1 中断相关图 2.52 GPIO 寄存器地址映射表PROC0 与 PROC1 中断相关图 2.53 中断控制器寄存器映射表PROC1 与 DORMANT_WAKE 中断相关