当前位置: 首页 > news >正文

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 中断相关)

http://www.cnnetsun.cn/news/3729104.html

相关文章:

  • 如何高效分析飞行控制系统:专业级PID调优与黑盒日志分析完全指南
  • 反相与同相放大器:从原理到实战的电路设计指南
  • 先把 Agent 做好,再谈 AGI
  • KMS智能激活工具完整指南:三步永久激活Windows和Office系统
  • Hermes-agent | 第六篇:多模型供应商与统一运行时路由
  • FanControl完整指南:3步掌握Windows风扇智能控制
  • 深度掌控AMD Ryzen:SMUDebugTool硬件级调试与性能优化指南
  • OpenClaw团队协作工具:智能工单与需求管理实践
  • RWA(现实世界资产代币化)为何成为币安关注的新方向?
  • 微信数据安全备份:如何合法合规地解密本地聊天记录?
  • KMS_VL_ALL_AIO终极指南:3分钟搞定Windows和Office免费激活
  • 终极免费激活指南:KMS智能激活工具完整使用教程
  • Python数据清洗实战:手机号缺失问题的解决方案
  • 高校毕业生就业满意度调查设计与分析实践
  • 西门子PLC恒压供水系统设计与PID控制实践
  • JTBD决策清单:客户成功总监如何把‘上BI‘翻译成可验收的业务任务
  • Sunshine游戏串流服务器:三步搭建家庭游戏共享平台
  • SpringBoot高校就业管理系统设计与实现
  • 淘宝淘金币自动化脚本:每天节省25分钟的终极解决方案
  • 解密WSABuilds:在Windows上构建完整Android生态的技术深度剖析
  • 烘焙铝箔杯选金色还是黑金?从样品图、规格表和服务资料看清楚
  • FlexRay车载网络协议:高带宽、强实时、高可靠的通信基石
  • Cesium 空间分析:把 “坡向” 计算搬到浏览器
  • 三维凹凸地形图渲染实战(1):软件工具下载与安装
  • 数字人对口型技巧,2026年音频驱动数字工作流,5款横评实测
  • Visual Studio 2022 C++项目创建与配置全指南:从环境搭建到调试优化
  • Python对象序列化技术详解与最佳实践
  • Python多线程编程实战:从基础到爬虫优化
  • SSM框架实现社区空巢老人帮扶管理系统开发指南
  • 从零DIY AR眼镜:硬件选型、软件架构与实战调试全解析