- I2C为什么要加上拉电阻,作用是什么?
- 上拉电阻单纯靠经验么,怎么计算?
- I2C为什么要加上拉电阻,作用是什么?
由于I2C接口的输出模式为开漏输出 ,这种模式只能提供低电平吸收电流,不能自主提供高电平,所以增加上拉使其能够提供高电平状态,并且在I2C总线标准中规定了当是空闲状态的时候,SCL和SDA都为高电平状态,刚好与之对应。
2、I2C上拉电阻单纯靠经验么,怎么计算?
2.1、I2C上拉电阻的最小值计算
上拉电阻最小值的计算公式:Rmin={VDD(min)-V(Ol)}/I(OL)
由于I2C接口内部有MOSFET,所以需要电压高于一定阈值才能使其导通,但是过高也会导致损坏
以发光二极管为例:某型号的发光二极管正向压降Vf=2V,额定电流I=25Ma,要想二极管正常导通发光要高于2V才能导通,但是电流还要限制在额定电流以内,所以LED正常工作的电阻最小值为(5V-2V)/25mA=120Ω
对于I2C根据数据手册可以查到V(OL)和I(OL)
根据以上参数可以得出最小电阻:Rmin={VDD(min)-V(Ol)}/I(OL)=(5V-0.4V)/3mA=1.53K
2.2、I2C上拉电阻的最大值计算
首先给出计算公式:R(max)=t(r)/{0.8473*C(bus)}
t(r) 是上升时间 ;C(bus)是总线电容
C(bus):包括IC的引脚电容,PCB走线电容
其中根据数据手册可以查到对应的引脚电容:
PCB走线电容:假设PCB的电容平均值为10pF
因此SDA的总线电容为18pF,SCL的总线电容为16pF;
t(r) 是上升时间查数据手册可得:
根据以上参数可以得出SDA最大电阻:R(max)=t(r)/{0.8473*C(bus)}=19.6K
SCL最大电阻:R(max)=t(r)/{0.8473*C(bus)}=22.1K
所以I2C上拉电阻选取1.53K~19.6K之间选取。一般选择选1K~10K范围的电阻。