单片机 IO 口的三种状态,分别是开漏、推挽、高阻态,我们通过下图来分析下另外这三种状态。
在上方的示意图中,T1代表一个PNP三极管,T2代表一个NPN三极管。最左边展示的是一种称为准双向输出的IO口结构。与准双向输出不同的是,开漏输出去掉了内部的上拉电阻。当开漏输出需要输出高电平时,T2关闭,IO口的电平需要通过外部的上拉电阻来拉高成为高电平。如果没有外部上拉电阻,IO口的电平将处于不确定状态。标准的51单片机的P0口通常默认为开漏输出,如果需要使用,外部需要添加上拉电阻。而强推挽输出具有较强的驱动能力。如上图第三张小图所示,当内部输出高电平时,通过MOS管直接输出电流,没有电阻进行限流,因此具备较大的电流输出能力。当内部输出低电平时,反向电流也可以很大,强推挽输出的一个特点就是驱动能力强。
单片机的IO口还有一种状态称为高阻态。通常我们在将IO口用作输入引脚时,可以将其设置为高阻态。高阻态引脚本身如果不连接外部输入信号时,使用万用表进行测量时可能是高电平也可能是低电平,它的状态完全取决于外部输入信号的电平。高阻态引脚对地的等效电阻很大(理论上接近于无穷大,但实际总是有一个有限值),因此被称为高阻态。
组成开漏形式的电路有以下几个特点:
-
利用 外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很小的栅极驱动电流; -
可以将多个开漏输出的Pin,连接到一条线上。形成 “与逻辑” 关系。当PIN_A、PIN_B、PIN_C任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理; -
可以利用改变上拉电源的电压,改变传输电平。IC的逻辑电平由电源Vcc1决定,而输出高电平则由Vcc2决定。这样我们就可以用低电平逻辑控制输出高电平逻辑了; -
开漏Pin不连接外部的上拉电阻,则只能输出低电平(因此对于经典的51单片机的P0口而言,要想做输入输出功能必须加外部上拉电阻,否则无法输出高电平逻辑); -
标准的开漏脚一般只有输出的能力。添加其它的判断电路,才能具备双向输入、输出的能力。
应用中需注意:
-
开漏和开集的原理类似,在许多应用中我们利用开集电路代替开漏电路。例如,某输入Pin要求由开漏电路驱动。则我们常见的驱动方式是利用一个三极管组成开集电路来驱动它,即方便又节省成本;
-
上拉电阻R pull-up的 阻值 决定了 逻辑电平转换的沿的速度 。阻值越大,速度越低功耗越小。反之亦然。
推挽输出视频讲解
(常规电路,不需要翻译,应该也很好懂得吧,可自行网上查阅)
高阻态的实质:
电路分析时高阻态可做开路理解。你可以把它看作输出(输入)电阻非常大。他的极限可以认为悬空。也就是说理论上高阻态不是悬空,它是对地或对电源电阻极大的状态。而实际应用上与引脚的悬空几乎是一样的。
高阻态的意义:
当门电路的输出上拉管导通而下拉管截止时,输出为高电平;反之就是低电平;如上拉管和下拉管都截止时,输出端就相当于浮空(没有电流流动),其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制 。
典型应用:
-
在总线连接的结构上。总线上挂有多个设备,设备与总线以高阻的形式连接。这样在设备不占用总线时自动释放总线,以方便其他设备获得总线的使用权;
-
大部分单片机I/O使用时都可以设置为高阻输入,如凌阳,AVR等等。高阻输入可以认为输入电阻是无穷大的,认为I/O对前级影响极小,而且不产生电流(不衰减),而且在一定程度上也增加了芯片的抗电压冲击能力。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !