GPIO输出和输入

100 阅读4分钟

1 GPIO 四种输出

  • 推挽:Push-Pull

    • 推 - Push ,向外推电流
    • 挽 - Pull , 从外边向里面拉电流
    • 推挽是交替导通的

1.1 通用推挽输出

  • 电路原理:

    内部由两个 MOS 管 (上管 PMOS, 下管 NMOS)。

    • 输出高电平(1):PMOS管导通,NMOS管截止。电流从 VCC 流出,向负载推电流。
    • 输出低电平(0):PMOS管截止,NMOS管导通。电流流入GND,从负载挽电流。
  • 特点:

    • 输出高低电平的驱动能力都很强。
    • 开关速度快。
    • 不需要外部上拉电阻。

1.2 通用开漏输出

  • 电路原理: 内部只有下管 NMOS 工作,上管 PMOS 处于断开(或不存在)状态。

    • 输出低电平 (0):NMOS 导通,引脚直接接地,强力拉低。
    • 输出高电平 (1):NMOS 截止,引脚处于高阻态 (High Impedance, Hi-Z),相当于断路(悬空)。
  • 特点:

    • 必须外接上拉电阻才能输出高电平。
    • 适合“线与”逻辑(多个设备连接在同一根线上,只要有一个拉低,总线就是低)
    • 适合电平转换(如3.3v的MCU控制5V的外设)。

1.3 复用推挽输出

  • 原理:

    电路结构和“通用推挽”完全相同,区别在于控制源。

    • 通用:引脚的高低电平由CPU与寄存器(ODR)控制。
    • 复用:引脚的高低电平由片上外设(如 UART 发送数据、PWM波形控制器、SPI)自动控制。
  • 特点:

    将引脚控制权交给片内硬件外设,保持推挽的强驱动能力。

1.4 复用开漏输出

  • 原理:

    电路结构与“通用开漏”完全相同。控制源由片上外设接管。

  • 特点:

    既利用外设的自动控制,又保留开漏输出的“线与”特性。

2 输出速率

在配置GPIO时,通常需要选择速度。

这里的速率不是指的是CPU处理速度,而是 引脚电平翻转响应速度,即电平从0变成1需要的时间陡峭程度。

  • 低俗:电平翻转边缘平缓

    • 优点:功耗低,电磁干扰(EMI)小,信号过冲和振铃小。
    • 缺点:无法传输高频信号。
  • 高速、超高速:电平翻转非常陡峭。

    • 优点:能承载高频通信(如50MHZ 以上的 SPI)。
    • 缺点:功耗高,产生较大的噪声干扰,如果走线不好容易产生信号反射和振铃。

原则:够用就行,宁低勿高。

举例:通过引脚驱动LED,选2MHZ就足够了,如果选择最高,LED效果一样吗,但是电路板会向外发射更多高频信号干扰其它电路。

3 GPIO 四种输入

3.1 浮空输入

  • 电路原理:

    GPIO引脚的信号直接进入内部的施密特触发器,内部上拉电阻和下拉电阻全部断开。

  • 特点:

    • 高阻态:引脚对内呈现极大的电阻,几乎不消耗电流。
    • 完全由外部决定:引脚的电平完全取决于外部电路。
    • 不确定性:如果外部悬空(什么都不接),读到的电平是随机的。
  • 适用场景:

    • 外部电路已经有明确的强驱动能力,(例如对方是一个推挽输出芯片)。
    • 外部电路已经自带了上拉或者下拉电阻。
    • 通信协议(如I2C)的数据线,如果外部已接了上拉电阻,MCU可以配置为浮空。

3.2 上拉输入

  • 电路原理:

    内部开启了一个连接到 VCC 的上拉电阻。

  • 特点:

    • 默认高电平:当外部引脚悬空或无输入时,引脚被电阻拉到高电平。
    • 抗干扰:防止引脚悬空时受到噪声干扰而误操作。
  • 适用场景:

    • 按键检测(低电平有效):按键一段接GPIO,另一端接GND。平时读到1,按下后电路接地导通,读到0。
    • 没有接外部上拉电阻的开漏输出设备。

3.3 下拉输入

  • 电路原理:

    内部开启一个连接到GND的下拉电阻。

  • 特点:

    默认低电平:当外部引脚悬空或无输入时,引脚被电阻拉到低电平(逻辑0)。

  • 适用场景:

    • 按键检测(高电平有效):按键一端接GPIO,另一端接VCC。平时读到0,按下后读到1。
    • 防止引脚在系统重启瞬间出现意外的高电平脉冲。

3.4 模拟输入

  • 电路原理:

    施密特触发器被关闭(断开数字逻辑路径),内部上下拉电阻也断开。引脚信号直接通过模拟通道传输给片上的ADC模块。

  • 特点:

    • 不再是 0 或 1:CPU无法通过 GPIO 寄存器读取该引脚的逻辑电平。
    • 纯净电压:目的是为了测量具体的电压值。
    • 省电:因为关闭了数字输入电路,当引脚电压在阈值附件波动时,不会引起数字电路的翻转功耗。
  • 适用场景:

    • ADC采集:连接传感器读取模拟量(温度、光照、电压等)。
    • DAC输出:当适用DAC输出电压时,引脚也需设为模拟模式。
    • 低功耗模式:如果引脚暂时不用,设置模拟输入是最省电的配置。