1.主要特性
IIC有两条线,一条是串行时钟线(SCL),一条是串行数据线(SDA)。
两条线都需要接上拉电阻,总线空闲的时候SCL,SDA处于高电平。
IIC总线上所以的SDA,SCL引脚输出驱动都为开漏结构(OD) ,通过外交上拉电阻实现所以节点SDA, SCL线与逻辑。
支持多主机,通过冲突检测和仲裁机制防止多个主机同时发起数据传输时存在的冲突。
传输速率:
模式 | 速度 |
---|---|
标准模式 | 100kb/s |
快速模式 | 400kb/s |
增强快速模式 | 1Mb/s |
高速模式 | 3.4Mb/s |
极速模式 | 5Mb/s |
2硬件特性
IIC两根线多需要开漏输出接上拉电阻的配置, 以此实现线与的逻辑。
上拉电阻取值有一定要求,太小会导致电流过大,损害端口,太大会导致信号上升缓慢,使数据传输出错。
线与逻辑是的总线不会出现数据冲突,实现了总线的总裁,总线的控制权会交给最后一个输出低电平的设备,其它设备(输出高)通过检测总线上的电平状态(状态低),对比与自己输出状态不一致,则自动退出对总线的控制请求,从而防止了总线上的数据冲突。
3工作时序
-
开始信号:SCL 为高时,SDA从高到低产生开始信号。
-
结束信号:SCL 为高时,SDA从低到高产生结束信号。
-
字节格式:SDA数据线上的每个字节必须是8位,对于每次传输的字节数没有限制。每个字节(8位)数据传送完后紧跟着应答信号(ACK,第9位)。数据的先后顺序为:高位在前 。
-
应答信号:当 I2C 主机发送完 8 位数据以后会将 SDA 设置为输入状态,等待 I2C 从机应答,也就是等到 I2C 从机告诉主机它接收到数据了。应答信号是由从机发出的,主机需要提供应答信号所需的时钟,主机发送完 8 位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过将 SDA 拉低来表示发出应答信号,表示通信成功,否则表示通信失败。
-
数据有效性:IIC数据读取动作在SCL高电平产生,SCL为低电平时是数据改变期。
4主机写从机收
主机对从机发送数据时,主机对从机发送一个开始字节,然后即可一直发送数据。以示例来讲解,其第一帧数据为要操作的寄存器地址,所以为:“[1-Byte]开始字节(写) + [1-Byte]寄存器地址 + [1-Byte]寄存器数据”。