IIC通信通常用开漏输出,无法做到真正的高电平,如果在漏极接上拉电阻可以进行电平转换。一般IO端口的驱动能力在2ma~4ma量级。
1.阻值不能过大,也不能过小
阻值不能过小,功耗问题: IIC通信协议允许最低低电平为0.4V,如果上拉电阻过小会导致VDD灌入端口的电流较大,功耗也会很大,导致端口输出的低电平值增大。故通常选上拉电阻一般不低于1kΩ的电阻(当VDD = 3V时,灌入电流不超过3ma)。
阻值不能过大,速度问题:通信速度取决于上拉电阻和电容形成的RC延时,RC延时越大,波形越偏离方波,而趋近于正弦波,数据读写的正确率越低。
2.负载电容不超过400pf
IIC总线上器件逐渐增多时,总线的负载电容也会相应增加,当总的负载电容大于400pf时,就不能可靠工作。
3.推荐负载
推荐使用1.5k、2.2k、4.7k的上拉电阻。
4.软件IIC如何不加上拉工作
在接收数据的时候端口设置为输入,发送数据时设置为开漏输出,可以避免使用开漏输出和加上拉电阻,本人实战经验表明虽然软件IIC采用开漏输出效率更高,但是稳定性没有切换输入输出好,之前测试MPU6050采用开漏输出时出了问题。