1、IIC总线接口操作模式:
主传送模式、主接收模式、从传送模式和从接收模式
2、起始和停止条件
当I2C总线接口未被激活时,一般处于从模式,也就是说,在检测到SDA线上的启动条件之前,接口应处于从模式(当SCL时钟信号保持高电平时,SDA线由高电平到低电平的转变产生启动条件)。当接口状态变为主模式时,SDA线上的数据传送被启动,且SCL信号产生。
启动条件能够在SDA线上传送一个字节的连续数据,停止条件能够结束数据的传送。停止条件是当SCL为高电平时,SDA线上由低电平到高电平的转变。启动和停止条件总是由主设备产生的。当启动条件产生时,I2C总线忙;停止条件产生后几个时钟,I2C总线又变为空闲。
当主设备产生启动条件时,将发送一个从地址通知从设备。这一字节的地址包括7位地址和1位传送方向指示(读或写)。如果第8位是0,表明是写操作(发送操作),如果第8位是1,表明是读数据(接收操作)。
主设备通过发送一个停止条件完成传送操作。如果主设备想继续传送数据到总线上,那么将产生另一个启动条件和另一个从地址,这样,读/写操作就能以不同的格式进行。
3、数据的有效性
SDA 线上的数据必须在时钟的高电平周期保持稳定,数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。
4:总线空闲状态
SDA和SCL两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高;
5:字节格式
发送到SDA 线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位,首先传输的是数据的最高位MSB。
5:响应
数据传输必须带响应,相关的响应时钟脉冲由主机产生,在响应的时钟脉冲期间发送器释放SDA 线(高)。在响应的时钟脉冲期间接收器必须将SDA 线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低。
1):应答信号ACK
I2C总线的数据都是以字节(8位)的方式传送的,发送器件每发送一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个ACK(把数据总线的电平拉低)来表示数据成功接收。
2):无应答信号NACK
在时钟的第9个脉冲期间发送器释放数据总线,接收器不拉低数据总线表示一个NACK,NACK有两种用途:
a、一般表示接收器未成功接收数据字节;b、当接收器是主控器时,它收到最后一个字节后,应发送一个NACK信号,以通知被控发送器结束数据发送,并释放总线,以便主控接收器发送一个停止信号STOP。