(1)I2C速度
标准模式下:100Kbps 快速模式下:400Kbps 高速模式下:3.4Mbps 串口的最高速度是115.2Kbps,和I2C的标准速度差不多。
(2)I2C结构
如上图所示:I2C是OC(集电极开路)或OD(漏极开路)输出结构。I2C总线上挂的I2C器件越多,就要求I2C的驱动能力越强,R的取值就要越小,标准模式下R选择10k,快速模式下R选取1k。实际设计中,一般是先选取4.7k上拉电阻,然后在调试的时候根据实测的I2C波形再调整R的值。
(3)I2C总线上最多能挂多少个I2C器件?
I2C器件的数量由两个条件决定:
a. I2C从设备的地址位数,I2C标准中有7位地址,2^7=128。
b. 挂在I2C总线上所有I2C器件的管脚寄生电容之和,I2C总线规范要求,I2C总线容性负载最大不能超过470pF。
(4)I2C工作原理?
空闲情况下,SCL和SDA都处于高电平状态。SCL是主设备发出的,SDA是双向数据线,主从设备都可以控制。
开始标志,SCL信号处于高电平期间,SDA信号出现一个由高电平向低电平的跳变。
结束标志,SCL信号处于高电平期间,SDA信号出现一个由低电平向高电平的跳变。
有效数据,在SCL处于高电平期间,SDA保持状态稳定的数据才是有效数据,只有在SCL处于低电平状态时,SDA才允许状态切换。只有这样才可以辨认开始和标志位,开始和结束都是在SCL处于高电平时候发生跳变。
SLAVE ADDRESS为7bits数据,R/W=1,为读,=0,为写。DATA数据位8bits。在读的情况下,当主设备发送从地址,接收到从地址的应答信号后,马上接收数据,当不做应该时,就表示数据传输结束。
(5)UART与I2C
a. 串口通信一对一的全双工通信。因为有固定的波特率,所以它不需要时钟的同步。串口可以配置传输bits数为6、7、8,传输格式更为灵活。依靠奇偶校验来判断接收到的数据是否正确。
b. I2C通信是一对多的半双工通信。如果也有固定波特率,相信一根线也能完成通信,但速度不固定,所以需要使用一根SCL来同步。I2C总线按字节传输,即每次传输8bits二进制数据。依靠从设备的应答来完成通信。