用图示及公式讲清楚灌电流和拉电流的区别
不管是单片机的IO口,还是一般的上拉下拉电路,都会有灌电流和拉电流的身影。
了解可以帮助我们更好地理解和设计电路。
灌电流,英文sink current,指被动输入电流,是从输出口流入电流,下图,当PTB0输出低的时候,LED亮,电流的方向就是从VCC流进PTB0管脚。
拉电流,英文sourcing current,指主动输出电流,是从输出口输出电流,下图,当PTB1输出高的时候,LED亮,电流的方向就是从PTB1流进地。
大致画出PTB0的内部结构, 当INPUT输出高电平时,LED亮。
当三极管在饱和状态时,三极管集电极和发射极之间近似为一个开关,PTB0上的电压为:U=5*R2/(R1+R2)
从上述公式可以看出,R1越小时,灌电流越大,PTB0电压越大。灌电流越大时,三极管的饱和压降越大,PTB0的低电平就越大。逻辑门的低电平有一个Uilmax,当高于这个值的时候,就无法识别为逻辑0,所以灌电流是有一个上限的。
如下,简易画出PTB1的内部结构,当VF2输出高电平时,LED亮。
当三极管在饱和状态时,三极管集电极和发射极之间近似为一个开关,PTB1上的电压为:U2=5*R4/(R3+R4)
从上述公式可以看出,R3越小时,拉电流越大,PTB1电压越大。拉电流越大时,输出端的高电平就越低。逻辑门的高电平有一个Uihmin,当低于这个值的时候,就无法识别为1,所以拉电流也是有一个上限的。
如下是一个实际问题,波形是单总线的复位应答信号。
可看出,在主机发送复位信号拉低总线,然后释放,再由上拉电阻上拉至高电平,然后从机拉低总线应答,发现从机的低电平比较高,电压并没有拉低到0V。
这个原因就是上面说到的,灌电流过大,说明这个上拉选得比较小,如果这个从机的低电平再高一些,可能就无法被主机识别,导致通信失败。
今天的内容到这里就结束了,希望对你有帮助,我们下一期见。