I2C 的开漏和上拉电阻

来源:互联网 发布:客户生日提醒软件 编辑:程序博客网 时间:2024/05/16 11:52
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。  结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。   应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。 

I2C <wbr>的开漏和上拉电阻

开漏是指放大电路中三极管集电极开路;
上拉电阻是用来把无源器件点的电位拉到电源电位;
 可以将多个开漏输出的Pin,连接到一条线上。形成 “与逻辑” 关系。当PIN_A、PIN_B、PIN_C任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理。(有一个变低,就把SDA拉低了。说明开始传送信号)。



I2C总线中有2个口线,SDASCL。这两个口线对为OC输出。什么是OC呢?相对OC还有什么输出呢?
OC就是开漏输出(Open Collector)的简称,有时候也叫OD输出(Open-Drain),OD是对mos管而言,OC是对双极型管而言,在用法上没啥区别。
相对于OC输出,另一种输出叫推挽输出(Push-Pull),一般的MCU管脚输出可以设置这两种模式。这里分别介绍下这两种输出的不同点。
 
推挽输出 : 可以输出高、低电平连接数字器件,推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.
开漏输出 输出端相当于三极管的集电极未接任何电平, 要得到高电平状态需要上拉电阻才行,适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内)
 
简单的这样理解就可以了。如果管脚设置成推挽输出模式,输出高时,IO口相当于VCC, 输出低时IO口相当于接地。如果管脚设置成开漏输出模式,输出高时,IO口的电平会和与其相连的口线进行与操作,如果都为高,才会被上拉拉成高电平,输出为低时,也相当于接地。
 
I2C总线要实现线与的功能,所以SDASCL总线都必须设置为开漏输出模式。

一般的用法是会在漏极外部的电路添加上拉电阻。
I2C主线上的电阻是上拉电阻,是为了保证电平状态,不是供电的;比如控制器无输出信号的时候,主线上确定为高电平,有低电平信号时,则主线上信号被拉低,为确定的低电平;
0 0
原创粉丝点击