I2C协议要点总结
https://baijiahao.baidu.com/s?id=1747946282739071669&wfr=spider&for=pc
一文看懂I2C协议
https://zhuanlan.zhihu.com/p/362287272
I2C,IIC或者Inter-Integrated Circuit Bus
两线式串行总线,半双工同步传输类型总线,
一根串行时钟线(SCL),一根串行数据线(SDA);
SCL:主设备始终产生SCL;
从设备如果有SCL控制功能,可以把SCL拉低,让主设备数据别发送那么快,可称为时钟拉伸。(比较少用)
SDA:主从设备都可以产生,具有接收和发送功能。
可接多个主设备,多个从设备;
只有一个主设备时,控制权在这个主设备上面;(常用)
当有多个主设备时,
仲裁(针对SDA)——主设备要参与总线仲裁,谁在SDA线先发送低电平,谁掌握对总线的控制权;
时钟同步(针对SCL)——SCL的波形是通过把所有主设备输出的时钟通过“与”计算得到的
7位地址+1位读/写位(标准,常用)
先传地址的高位,最后加一位读写位。读为高,写为低。
举例说明:
如下图为7bit地址+1bit写的I2C波形,紫色为SCL波形,蓝色为SDA波形。可以看出一共传输8位数据,为11000100,高7位为地址位,二进制表示位0B1100010,十六进制表示为0x62;最低位为0,表示写,说明主设备准备向从设备写入数据。
如下图为7bit地址+1bit读的I2C波形,可以看出一共传输8位数据,为11000101,高7位为地址位,二进制表示为0B1100010,十六进制表示为0x62;最低位为1,表示读,说明主设备准备向从设备读取数据。
8位地址
所谓8位地址其实就是上面所写的7位地址加1位读写位的形式,有的厂家直接告诉你两个8位地址,一个读地址,一个写地址,只要把它们高7位取出来,即是I2C的地址。
10位地址
10位地址比较少用,需要传输2个字节。
格式:
第一个字节:11110+10位地址的最高两位+1位读写位;
第二个字节:10位地址的低8位;
同样也是先传高位,再传低位。
由于不常用,故仅作介绍。
保留地址
I2C还有一些保留地址,这些地址是不能作为从设备的地址的。比如上面10位地址提到的第一个字节为11110xxx, 这就是保留地址,高5位只要出现11110,说明主设备接下来传输的是一个10位地址。保留地址同样比较少见,不展开讨论,需要用到再查询协议即可。
开始和结束
由主设备发起;
开始标志:SCL为高电平时,SDA从高电平跳变为低电平。
结束标志:SCL为高电平时,SDA从低电平跳变为高电平。
数据传输格式
以字节为单位;
先传高位,再传低位;
一个字节传输完成,后面要加一个ACK响应位;
可以连续传输多个字节;
SCL为高电平时,SDA需保持稳定;
SCL为低电平时,SDA可进行高低电平翻转。
如下图,紫色为SCL波形,蓝色为SDA波形。在开始和结束之间,共传输了3个字节的数据,
第一个字节是一个写地址0xE0,可以看出传输的数据为111000000;共9位;先传地址的高位,再传地址的低位,然后加1位ACK位。ACK位是一个低电平。
第二个字节是一个数据0xB0;
第三个字节也是一个数据0x98;
这些都已经给逻辑分析仪解析出来了。
同时图中还能看出,在SCL为高电平时,SDA数据稳定;SCL为低电平时,SDA进行高低电平的翻转。
主设备再发送一个读地址0xC5,表示需要从从设备读取数据,从设备发ACK确认。然后从设备发送一个字节数据0x02给主设备,主设备收到之后,认为已经接收了需要的数据,不需要再接收了。所以给出一个NACK的信号,紧接着再给出结束信号,结束本次通信。
SCL,SDA两线通过上拉电阻接电源上;接上上面的所有设备做“线与”操作。
上拉电阻一般大于1KΩ,小于10KΩ。可根据电压,接口最大灌入电流,内部mos管导通电压来做大概的估算。
比如电压1.8V,管脚输入电流为3mA,mos管导通电压为0.4V,Rp = (1.8-0.4)/0.003 = 466.6Ω,在这个估算的值上,升高阻值,可以降低功耗。
一个总线上如果采用7位地址,理论可以接127个设备,但又受到两线之间电容为400pF的限制,本身驱动能力有限,实际可接的设备少于8个。
电路这里仅做简单的使用总结,不再重复I2C的各种理论。
参考文献:
https://blog.csdn.net/chenhuanqiangnihao/article/details/112313860
https://zhuanlan.zhihu.com/p/470999923
https://blog.csdn.net/chenhuanqiangnihao/article/details/114027867
https://www.likecs.com/show-204658628.html
https://blog.csdn.net/SummerXRT/article/details/118582930
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)