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输出电压时,引脚也需设为模拟模式。
- 低功耗模式:如果引脚暂时不用,设置模拟输入是最省电的配置。