1、常见I2C设备
EEPROM
温湿度传感器,例如:AHT10
电量计,例如:TI的BQ34Z100
日历时钟
模数或数模转换器
2、I2C总线结构
- I2C只有两根线:数据线SDA和时钟线SCL;
- SDA 和 SCL 都是双向线路
- I2C设备并联在I2C总线上
- 每个设备都有一个地址,一根总线上的设备地址不能有重复的
- 地址长度为7位或10位
- 7位I2C总线可以挂接127个不同地址的I2C设备,0号"设备"作为群呼地址,并且总线电容不超过400PF
- I2C设备分为主机、从机
- 同一总线上可以有多个主机(控制器)
- 通讯速率:标准模式100kbit/s 、快速模式 400kbit/s、高速模式3.4Mbit/s
- 7位I2C总线可以挂接127个不同地址的I2C设备,0号"设备"作为群呼地址
- 10位I2C总线可以挂接更多的10位I2C设备.
3、协议层
传输协议分类:读、写、复合
3.1 读操作
阴影部分:主机 发送
非阴影部分:从机 发送
S:起始
SLAVE ADDRESS:从机地址
读写标志:这里是‘1’表示读
第一个A:从机应答
DATA:从机发来的数据
第二个A:主机应答
A上一杠:非应答
P:停止
3.2 写操作
阴影部分:主机 发送
非阴影部分:从机 发送
S:起始
SLAVE ADDRESS:从机地址
读写标志:这里是‘0’表示写
第一个A:从机应答
DATA:主机发来的数据
第二个A:从机应答
A上一杠:非应答
P:停止
3.3 复合操作
复合操作就是一次性可以执行多次读、多次写,并且读和写是交替进行。
阴影部分:主机 发送
非阴影部分:注意——此时非阴影不一定都是从机发送,而是根据读写位来决定,后面的数据是主机发送还是从机发送。
S:起始
SLAVE ADDRESS:从机地址
读写标志:这里可以是‘0’表示写、或者‘1’表示读
P:停止
3.4 起始、停止信号
当时钟线SCL 是高电平时,数据线SDA 线从高电平向低电平切换,表示通讯的起始。
当时钟线SCL 是高电平时, 数据线SDA线由低电平向高电平切换,表示通讯的停止。
3.5 从机地址
从起始位开始的第一个字节的头 7 位组成了从机地址,I 2 C 总线委员会协调 I 2 C 地址的分配,几种特别的地址如下:
3.6 数据有效
时钟线SCL为高电平的时候,数据线SDA才有效
SDA 为高电平时表示数据“1”,
SDA 为低电平时表示数据“0”。
时钟线SCL为低电平的时候,数据线SDA 无效( 一般在这个时候 SDA 进行电平切换)
3.7 响应
响应包括“应答 (ACK)”和“非应答 (NACK)”两种信号。
无论主、从机,作为数据接收端时,接收到 I2C 传输的一个字节数据或地址后:
若希望对方继续发送数据,则需要向对方发送“应答 (ACK)”信号,
发送方会继续发送下一个数据;
若接收端希望结束数据传输,则向对方发送“非应答 (NACK)”信号,
发送方接收到该信号后会产生一个停止信号,结束信号传输。