GPIO 上拉和下拉输入,推挽和开漏输出

——

整理自网络。

上拉输入和下拉输入

上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理,也是将不确定的信号通过一个电阻钳位在低电平。如果没有上拉/下拉电阻,在没有外界输入的情况下输入端是悬空的,它的电平是未知的。
强弱(强上拉、弱上拉、强下拉、弱下拉)只是上拉电阻的阻值不同,没有什么严格区分。

以下两图引自https://www.dgzj.com/dianzi/96971.html

上拉电阻加到VCC。
GPIO 上拉和下拉输入,推挽和开漏输出
下拉电阻加到GND。
GPIO 上拉和下拉输入,推挽和开漏输出

拉电流和灌电流

转自https://blog.csdn.net/zhangfan406/article/details/81909436 灌电流和拉电流简介

拉电流和灌电流是衡量电路输出驱动能力的参数。
灌电流(sink current),对一个端口而言,如果电流方向是向其内部流动的则是“灌电流。
拉电流(sourcing current),对一个端口而言,如果电流方向是向其外部流动的则是“拉电流”。

由于数字电路的输出只有高、低(0,1)两种电平值,高电平输出时,一般是输出端对负载提供电流,其提供电流的数值叫“拉电流”;低电平输出时,一般是输出端要吸收负载的电流,其吸收电流的数值叫“灌(入)电流”。

推挽输出

推挽输出(Push–pull output)是一种使用一对选择性地从相连负载灌电流或者拉电流的器件的电路。推挽输出的最大特点是可以真正的输出高电平和低电平,在两种电平下都具有驱动能力。

推挽电路使用两个参数相同的三极管或MOSFET,以推挽方式(图腾柱方式)存在于电路中。电路工作时,两只对称的开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。
GPIO 上拉和下拉输入,推挽和开漏输出
当内部输出1电平时,上边的MOS管导通同时下边的MOS管截止,IO口输出高电平。
当内部输出0电平时,上边的MOS管截至同时下边的MOS管导通,IO口输出低电平。

由于推挽输出模式可以不需要外部辅助电路就可以直接输出高低电平,所以可以用于直接控制数字电路。
缺点:推挽输出的电平是CPU的逻辑电平,所以电压值是固定的。

开漏输出

对于开漏输出和推挽输出的区别最普遍的说法就是开漏输出无法真正输出高电平,即高电平时没有驱动能力,需要借助外部上拉电阻完成对外驱动。
GPIO 上拉和下拉输入,推挽和开漏输出
开漏输出模式下,通过外部电源实现高低电平,这个外部电源不需要跟CPU的电平完全一致,对于一些外围器件,如果其电平与CPU不同,只需要上拉对应的电平电源即可,一般应用在I2C、SMBUS通讯等需要“线与”功能的总线电路中。

部分内容引用自https://blog.csdn.net/u012351051/article/details/104409272 理解CPU的 推免、开漏输出以及应用场景