news 2026/7/29 12:11:32

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 功能图

通用输入/输出(GPIO)QSPI 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 中断相关)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 12:08:48

反相与同相放大器:从原理到实战的电路设计指南

1. 从“反”与“同”说起:两种基础运算放大电路的本质差异在模拟电路设计的入门阶段,反相放大器和同相放大器是绕不开的两座大山。很多初学者在第一次接触时,往往会把注意力集中在那个看起来简单的增益公式Vout - (Rf/Rin) * Vin或Vout (1 …

作者头像 李华
网站建设 2026/7/29 12:07:23

先把 Agent 做好,再谈 AGI

一、问题:没学会走路就跑2026年,"AGI"三个字被喊得震天响。OpenAI说已经滑过人类级AGI,Anthropic说一年内AI会替代所有软件工程师,国内各大厂的世界模型纷纷登顶各种Benchmark。人人都在谈论通用人工智能,人…

作者头像 李华
网站建设 2026/7/29 12:06:57

KMS智能激活工具完整指南:三步永久激活Windows和Office系统

KMS智能激活工具完整指南:三步永久激活Windows和Office系统 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统弹出激活提示而烦恼吗?Office突然变成只读模…

作者头像 李华
网站建设 2026/7/29 12:06:56

Hermes-agent | 第六篇:多模型供应商与统一运行时路由

本文是 Hermes Agent 系列的第 6 篇。上一篇解释了 System Prompt、项目上下文与 Provider Prompt Cache 的生命周期,这一篇继续进入模型调用边界:Hermes Agent 如何把用户选择的 Model、Provider、Endpoint 和 Credential 解析成统一运行时,并在不同 API 协议、辅助任务、凭…

作者头像 李华
网站建设 2026/7/29 12:06:17

FanControl完整指南:3步掌握Windows风扇智能控制

FanControl完整指南:3步掌握Windows风扇智能控制 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanC…

作者头像 李华