IIC介绍
IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器以及其外围设备。IIC有如下特点
1.总线由数据线SDA和时钟线SCL构成的串行总线。
2.总线上每一个器件都有唯一的地址识别。
3.数据线SDA和SCL都是双向线路,都通过上拉电阻或电流源连接到正的电压,所以总线空闲时都是高电平。
4.总线传输速率有三种,标准模式下100kbit/s,快速模式下400kbit/s,高速模式下3.4Mbit/s。
5.总线支持多设备连接,同时支持多个主机和多个从机,连接总线的接口数量由总线电容400pF的限制决定。如下图
IIC总线协议
IIC总线时序图如下所示
1、起始信号
当SCL为高电平期间,SDA由高到低的跳变。由主机发出该信号,在起始信号产生后,总线就处于被占用状态。准备传输数据
2、停止信号
当SCL为高电平期间,SDA由低到高的跳变。由主机发出该信号,在停止信号产生后,总线就处于被空闲状态。
3、应答信号
发送器每发送一个字节,就在时钟脉冲9期间释放SDA数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答(ACK)
应答信号为高电平时,规定为非应答位(NACK),表示接收器接收该字节没有成功。若接收器是主机,则在它接收到最后一个字节后,发送
一个NACK信号,通知被控发送器结束数据发送,并释放SDA线,以便主机接收器发送一个停止信号。
4、数据有效性
IIC总线进行数据传输时,时钟为高电平期间,数据才会被采集所以数据上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据
线上的高电平或低电平状态才允许变化。
5、数据传输
在IIC总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据,
数据位的传输是边沿触发。
6、空闲状态
IIC总线的SDA与SCL两条信号线同时处于高电平时,规定为总线的空闲状态。
IIC通信操作
1、IIC写操作通讯过程 如下图
1.主机先发送起始信号,
2.主机发送从机地址(7bit)+0(写操作)组成8bit数据,
3.从机验证完是自己的设备地址后,发出应答信号(ACK)。
4.主机发送8bit数据给到从机,若从机一直返回应答,主机一直发数据。直到从机发出非应答信号,主机停止发送数据
5.主机发送停止信号
2、IIC读操作通讯过程 如下图
1.主机发送起始信号
2.主机发送从机地址(7bit)+1(读操作)组成8bit数据
3.从机验证完是自己的设备地址后,发出应答信号(ACK)
4.从机向主机返回8bit数据,主机若一直返回应答,从机一直发数据。直到主机发出非应答信号,从机停止发送数据
5.主机发送停止信号