GPIO-常见名词
Push-pull output 推挽输出
Pull-pull output 模式指, 输出端口通过两个晶体管的开关来控制电平状态, 其可以实现高电平和低电平两种状态.
这里的 Push-pull 描述的是输出的状态, Push 指输出高电平:
- 上面是 NPN 型晶体管, 栅极输入高电平时导通
- 下面是 PNP 型晶体管, 栅极输入低电平时导通
此时输出控制部分输出高电平, 开关导通.
Pull 指最终输出低电平:
此时输出控制部分输出低电平, 开关断开.
该状态的好处在于 “驱动能力强”, 即输出电压高, 此时几乎就是 VCC 大小 (没有额外电阻来分压).
Open-drain output 开漏输出
Open-drain output 模式指, 输出端口由一个 NPN 晶体管的开关来控制, 其只能实现低电平, 而不能直接输出高电平 (可以配合上拉电阻实现).
Open-drain 就是指晶体管的连接方式, 由于 Source 极接地, 不管 “输出控制” 输出如何, 都持续保持低电平 (开关就算打开, 没电源也没输出):
若加上上拉电阻, 则
- 当 “输出控制” 高电平时, 输出低电平
- 当 “输出控制” 低电平时, 输出高电平
上拉电阻越大, 驱动能力越弱 (至少从这张图来看是这样的).
Floating input 浮空输入
浮空输入是指将输入引脚未连接到任何外部信号源或电路, 使其处于未定义的状态. 在这种情况下, 输入引脚既不连接到高电平 (VDD) 也不连接到低电平 (GND), 而是处于开路状态.
Pull-up resistor
使用 Pull-up resistor 的原因在于, 输出电压由于外部接入电阻的分压而降低了:
Pull-up resistor 接在电源和单片机引脚之间, 用于提高电源的驱动能力:
(为什么后面讲)
假设单片机内部为, 当上面的 MOS 导通时, 此时测得的是电源电压:
若加上外部电阻, 可以把电路等效为:
(电源有内阻, MOS 有阻抗)
此时由于电阻串联分压, 导致测得的电压减小.
在接上 pull-up resistor 之后, 可以视为内阻与其并联, 电阻减小, 因此串联分压减小, 输出电压增大:
本质就是让上拉电阻与单片机的内阻并联, 减小串联分压, 以增大输出驱动电压.
Pull-up input 上拉输入
指输入端口与电源间接一个电阻, 表现出持续的高电平:
- 若输入 “高电平”, 则最终输入高电平
- 若输入 “低电平”, 此时由
VDD
驱动, 也输入高电平
Pull-down input 下拉输入
指输入1端口与地间接一个电阻, 表现出持续的低电平;
(有点没搞懂)