一、I2C 总线特征:
1、总线空闲是,2 根线都被上拉电阻拉高,保持高电平;
2、I2C 总线上的每个设备都可以作主/从设备,每个设备有唯一地址:
I2C 设备地址:由 7 位地址和 1 位 R/W 读写位组成
如:DA3 DA2 DA1 DA0 A2 A1 A0 R/W
- 其中 DA3 DA2 DA1 DA0 这 4 位是器件生产出来就订好了,查手册
- 用户可以自定义的地址码有 3 位:A2 A1 A0
- 最低位为 R/W 位,”0“ 表示主机向从机写数据 ,”1“ 表示主机向从机读数据
- 所以 I2C 设备的地址表示方法有时是不加读写位,读写其他地方定义; 有时是有写地址和读地址2个
3、I2C 总线上可以挂接的设备数量受总线的最大电容 400 pF 限制;
(这个其实不是很严格,主要是因为引脚的驱动电流和带宽限制,当线路上负载电容很大时,方波的上下沿斜率变小,
方波畸变,同时有振铃现象,会影响数据通信。但事实上 400pF 时,仍可正常通信,只是误码风险增大)
4、I2C 总线数据传输速率:
Standard mode : 100kbit/s
Fast mode : 400kbit/s
High-Speed mode:3.4Mbit/s
5、I2C 上拉电阻问题:
由于 SDA 和 SCL 都是集电极开路或漏极开路结构,只能输出“0”,不能输出“1”,所以必须接上拉电阻,
一般上拉电阻可以是 1.5k 、2.2K 、4.7K
二、I2C 总线协议:
1、总线空闲时都为高,SDA:由高到低, 为其实条件
SCL 为高时,SDA:由低到高,为结束条件
2、按字节传送,一次 8 bit
3、数据操作方式:
主往从写数据:
主去从读数据:
主先去R/W,重启其实条件,再去R/W: