1. GPIO 基础概念

GPIO(General Purpose Input/Output,通用输入输出)是嵌入式系统中最基础、最常用的外设接口。理解 GPIO 的引脚功能、电气特性、上下拉电阻和驱动能力,是后续进行 pinctrl 配置和中断调试的前提。本章从硬件底层出发,系统梳理这些核心概念。

1.1 GPIO 引脚功能

GPIO 引脚通常具有多种可配置的功能模式,通过内部多路复用器(MUX)选择。常见功能包括:

  • 数字输入:读取引脚上的高/低电平状态。
  • 数字输出:驱动引脚输出高/低电平。
  • 复用功能(Alternate Function, AF):引脚被分配给片内外设(如 UART、I2C、SPI、PWM、ADC 等)。
  • 中断触发:配置为边沿触发或电平触发的中断源。
  • 模拟输入:直接连接至 ADC 等模拟模块,此时数字部分通常被禁用。
关键点:同一引脚在不同模式下,其内部电路连接路径完全不同。配置错误可能导致外设无法工作甚至损坏引脚。
GPIO 引脚功能复用结构 GPIO 引脚功能复用结构 GPIO Pad MUX 功能选择 数字输入 数字输出 复用外设 说明 MUX 通过寄存器选择 引脚连接至哪个功能 模块。同一时刻只能 选择一种功能。

1.2 电气特性

GPIO 引脚的电气特性决定了其与外部电路交互时的电压、电流和时序行为。主要参数包括:

参数 典型值(3.3V 系统) 说明
VIH(输入高电平阈值) ≥ 2.0 V 高于此值被识别为逻辑 1
VIL(输入低电平阈值) ≤ 0.8 V 低于此值被识别为逻辑 0
VOH(输出高电平) ≥ 2.4 V(典型 VDD - 0.4V) 输出高时引脚上的电压
VOL(输出低电平) ≤ 0.4 V 输出低时引脚上的电压
IOH / IOL ±4 mA ~ ±20 mA(视芯片而定) 引脚可提供的最大拉/灌电流
上升/下降时间 几 ns ~ 几十 ns 受负载电容和驱动强度影响
注意:不同 SoC 的电气参数差异较大。例如,1.8V 系统的 VIH 约为 1.2V,VIL 约为 0.6V。务必查阅对应芯片的数据手册(Datasheet)。

1.3 上下拉电阻

上下拉电阻用于在引脚悬空(高阻态)时,将电平钳位到一个确定的状态,防止引脚电平浮动导致逻辑不确定或功耗增加。

  • 上拉电阻(Pull-Up):将引脚通过电阻连接到 VDD,默认状态为高电平。
  • 下拉电阻(Pull-Down):将引脚通过电阻连接到 GND,默认状态为低电平。
  • 内部上下拉:SoC 内部集成的可配置电阻,通常为 30kΩ ~ 100kΩ。
  • 外部上下拉:在 PCB 上额外焊接的电阻,阻值可根据需求选择(如 4.7kΩ、10kΩ)。
应用场景:I²C 总线需要外部上拉电阻(通常 4.7kΩ);按键检测通常使用内部上拉,按键按下时引脚接地。
上下拉电阻原理 上下拉电阻原理 上拉 (Pull-Up) VDD Rpull GPIO 引脚 默认高电平 下拉 (Pull-Down) GND Rpd GPIO 引脚 默认低电平 内部上下拉阻值通常为 30kΩ~100kΩ,外部可根据负载和功耗选择

1.4 驱动能力

驱动能力指 GPIO 引脚在输出模式下能够提供的最大电流。它直接影响引脚驱动外部负载(如 LED、继电器、MOSFET 栅极)的能力。

  • 拉电流(Source Current, IOH):引脚输出高电平时,从 VDD 流向负载的电流。
  • 灌电流(Sink Current, IOL):引脚输出低电平时,从负载流入 GND 的电流。
  • 驱动强度配置:许多 SoC 允许通过寄存器调整驱动强度(如 2mA、4mA、8mA、12mA),以平衡信号完整性和功耗。
风险提示:超过最大额定电流可能导致引脚永久损坏。驱动大负载(如继电器线圈)时必须使用外部驱动电路(如三极管、MOSFET 或专用驱动芯片)。
驱动强度设置 典型应用 注意事项
低(2~4 mA) 控制逻辑输入、LED 指示灯(串联电阻) 信号上升沿较缓,适合低速信号
中(6~8 mA) 驱动小功率晶体管、I²C 总线 平衡功耗与速度
高(10~20 mA) 高速信号(SPI、SDIO)、驱动光耦 可能引入 EMI 问题,需注意 PCB 布局
GPIO 驱动能力示意图 GPIO 驱动能力示意图 SoC GPIO 输出 I_OH (拉电流) 负载 VDD I_OL (灌电流) 负载 GND 驱动能力关键点 • 拉电流:引脚输出高时提供电流 • 灌电流:引脚输出低时吸收电流 • 总电流不能超过芯片额定值

1.5 小结