1、I2C常见设备超过1000种,常见类型有:
温度传感器,RTC(实时时钟芯片),LCD Drivers(液晶屏驱动芯片),ADC/DAC(模数/数模转换芯片)等等;
2、3、I2C总线组成及重要概念:
I2C由SCL(时钟)+SDA(数据)两条信号线组成
SCL上升沿对数据进行采样
属于串行,同步通信
Master和Slave,Transmitter和Receiver,Master-Transmitter,Master-Receiver,Slave-Transmitter,Slave-Receiver
支持多Master和多Slave(时钟同步+总线仲裁)
OD/OC输出(标准/快速/高速)支持线与功能
Push-Pull输出(超快速-5mbits)
芯片输入内含buffer(过滤脉冲尖刺)
需要外部上拉电阻(芯片只输出)
Cbus决定外接设备数量
同一总线上的设备地址的唯一性
4、I2C工作模式
Cbus决定外接设备数量规范定义芯片管脚容性负载必须小于10PF
5、I2C协议传输格式
开始位/重复开始位
数据传输:
1、数据传输最小单元1Byte(8bits)
2、数据先传高位,再穿低位(MSB)
3、一次传输,最大传输Byte数无限制
跟随在每个Byte字节后,有应答位(ACK)和非应答位(NACK)
时钟上升沿采样数据/ACK/NACK,时钟永远由Master产生
6、I2C协议:数据
开始位:SCL在高电平,SDA由高变低;
停止位:SCL在高电平,SDA由低变高;
数据有效性:
SCL在高电平,SDA必须保持稳定
SCL在低电平,SDA改变
7、I2C协议-ACK/NACK:
ACK/NACK跟随在每个Byte字节传输后一位(第9位时钟)
ACK:
(1)Transmitter释放SDA,Receiver控制SDA低电平;
(2)Receiver通知Transmitter已经正确收到数据。
NACK:
(1)Transmitter释放SDA,Receiver控制SDA高电平;
1无:没有主机访问地址的Slave;
2忙:Slave忙碌,无法开始数据传输;
3错:Receiver收到的数据错误;
4停:通知Slave-Transmitter停止发送数据
8、时钟同步:
(1)应用场合:同一总线上有多个Master同时访问Slave
(2)SCL时钟(OC/OD)线与结构
Sm/Fm/Fm+模式支持时钟同步/总线仲裁
UFM和HSM不支持
9、总线仲裁:
(1)应用场合:同一总线上有多个Master同时访问Slave
(2)SDA数据线(OC/OD)线与结构
1、多个Master仲裁过程中,Slave不参与,由Master完成
2、仲裁按每个SDA数据bit逐步进行
3、利用时钟同步的SCL上升沿对SDA采样:
1、如果data1和data2全程保持与SDA上一致,则双MAster都能正常访问同一设备;;
2、如果data1先和与SDA上一致,则data2的Master获得主动权,继续完成相关操作
data1的Master丢失总线SDA控制,且关闭data1的输出