IIC通信协议

IIC(Inter-Integrated Circuit)

基本介绍 有请kimi同学

                                                                                                                                                      

物理层:上拉电阻

关于这个具体计算,可以参考TI的一篇文档,写的相当清楚了:

https://www.ti.com/lit/ml/slva689/slva689.pdf?ts=1679814584051

简要概括一下

最小值与电源电压VCC,有效逻辑低点读取的VOL电平输出低电平电流IOL相关。至于为啥....en没看懂。估计和IO的输入电流限制有关

最大值与上升沿时间和总线容性负载有关。具体推导见上文链接。总线的容性负载与上拉电阻构成RC电路,R值过大,充放电时间(RC)就会久,而一旦充放电时间超过I2C上升沿、下降沿时间,就会对信号产生影响。

上升沿时间根据c8t6手册为0.3VDD-0.7VDD,这与上文推导公式相符。

具体参数可参考数据手册I2C部分,可以找到公式中的对应参数

更详细的可以参考NXP的I2C规格手册:I2C-bus specification and user manual

(挺全面的,就是太多了,抽空再仔细看看)

根据手册,常用的速度模式有这几种:

不同模式对应参数不同,得出的电阻范围也不同。

哎 来算个3.3V输入标准模式吧 数据如下:

数据手册参考值Rp=4.7K......算的好像不太对啊(计算错误,最大值应该是2.95K)。当然,这都是根据手册极限值算的,实际情况到不了此数值,计算结果也有一定偏差。比如规定负载电容最大 400pF,实际上不会超过 200pF,且与总线上挂的从机数量也有关系。

不同速率采用的电阻一般有以下几种:1.5K、2.2K、4.7K。

需要更精确的需求可以自己计算一下优化波形。

总结:

1.Rp最大值由总线最大容限(Cbmax)决定,过大导致波形畸变,Rp最小值由Vio与上拉驱动电流(最大取3mA)决定,过小导致灌电流过大损坏端口,当VDD=3V时,灌入电流不超过3mA;  2.I2c从设备的数量受总线电容,<=400pF的限制;                                                                            3.噪声恶劣情况下在I2c总线可以串连300欧姆电阻RS可以用于防止SDA和SCL线的高电压毛刺;    4.引脚采用开漏输出                                                                                                                          5.总线空闲时需保持输出高电位,可用端口模拟IIC                                                                            6.PCB布线:低速线无特殊处理

再回过头看看,c8t6的I2C虽然内部有一个内部40K弱上拉电阻,但不符合传输要求,外部还是得接上拉电阻。

关于数据帧格式与通信过程资料有很多,就不重复造轮子了,直接参考

b站铁头山羊的STM32学习笔记6-I2C通信的数据帧格式,结构,寄存器,收发过程_i2c数据帧格式-优快云博客

全面解读I2C(IIC)协议:原理、信号线、数据帧、优点、缺点及应用场景和STM32示例代码程序,带动画演示_i2c协议-优快云博客

【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )_hal iic-优快云博客

I2C总线中上拉电阻、电源电压、总线电容三者之间的函数关系 - 马小跳life - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值