I2C总线上可以连续以8位(1B)二进制数的方式传输数据。但每启动一次I2C总线,其后的数据传输字节数没有限制。每传输1B后都必须跟随等待一个应答位,并且首先发送的数据位为最高位,在全部数据传输结束后,主控制器发送结束信号,数据传输时序如图12-14所示。
1.数据传输时的总线控制
从图12-14中可以看出,没有时钟信号时数据传输将停止进行,I2C总线接口的“线与”功能将使SCL在低电平时钳住总线。I2C总线的这种特征可以用于当接收器收到一字节数据后,要进行一些其他工作而无法立即接收下一个数据时,迫使总线进入等待状态,直到接收器准备好接收新的数据时,接收器再释放时钟线,使数据传输能够继续正常进行。例如,当接收器按照图12-14中时序接收完主控制器的一字节数据后,产生中断信号并进行中断处理,中断处理完毕后,才能接收下一字节数据,接收器在处理中断过程中将钳住SCL线为低电平,直到中断处理完毕后才释放SCL线。
图12-14 I2C总线上的数据传输时序
2.应答信号
当I2C总线传输数据时,每传送一字节数据后必须跟随等待一个应答信号,即接收器在接收到一字节数据后,向发送器发出特定的低电平信号,表示已收到数据。与应答信号相对应的时钟由主控制器产生,这时发送器必须在这个时钟位上释放数据线,使其处于高电平状态,以便接收器在这一时钟位上送出应答信号。主控制器接收到应答信号后,根据实际情况作出是否继续传递应答信号的判断。若未收到应答信号,就可判断为受控单元出现故障。
图12-15所示是应答信号时序图,应答信号在第9个时钟位出现,接收器输出低电平作为应答信号(ACK),输出高电平则为非应答信号。如果由于某种原因,被控器不产生应答信号时,必须释放总线,将数据线置为高电平,然后主控器可以通过产生一个结束信号来终止总线上的数据传输。
图12-15 I2C总线上应答信号时序图
主控器接收数据时,当接收到最后一个数据字节后,必须给被控制器发送一个非应答信号(ACK),使被控器释放数据线,以便主控器发送停止信号,从而终止数据传输。I2C总线一次完整的数据传输时序如图12-16所示。
图12-16 I2C总线一次完整的数据传输时序
3.数据传送格式
在I2C总线传输数据过程中,必须遵循规定的数据传送格式。按照总线约定,起始信号表明一次传输数据的开始,其后为寻址字节。寻址字节由高7位地址码和最低位作方向位组成读/写控制位,方向位表明主控器与被控器数据传输的方向,方向位为0时表明主控器对被控器进行写操作,为1时表明主控器对被控器进行读操作。在寻址字节后是按指定读/写操作的数据字节与应答位。在数据传输完成后,主控器必须发送停止信号。
总线上的数据传输有很多读/写组合方式,下面介绍I2C总线的三种数据传输格式。
(1)主控器写操作
主控器写操作是指主控器向被寻址的被控器写入n字节数据的操作,整个传输过程中数据传输的方向不变,其数据传输格式如下:
SLAW:寻址字节(写),即器件写操作控制字。(www.xing528.com)
S:起始信号(即输出下降沿)。
ACK:应答信号(即输出“0”电平)。
ACK:非应答信号(即输出“1”电平)。
P:停止信号(即输出上升沿)。
Data-1~Data-n:写入被控器的n字节数据。
(2)主控器读操作
主控器读操作是指主控器从被控器中读出n字节数据的操作,整个传输过程中除了寻址字节外,都是被控器发送、主控器接收的过程,其数据传输格式如下:
其中SLAR是寻址字节(读),即器件读操作控制字。其余的定义与主控器写操作中定义相同。
在上述格式中,主控器发送停止位之前应先发送非应答位,向被控器表明读操作结束。
(3)主控器读/写操作
主控器读/写操作是指主控器在一次数据传输过程中,需要改变数据传输方向的操作,每转变一次数据传输方向,起始信号和寻址字节都必须重复一次,但数据传输的方向相反。其数据传输格式如下:
在上述格式中,Sr为重复起始信号。
从前面三种数据传送格式可以得出I2C总线数据传输操作规则如下:
1)起始、结束和寻址字节都由主控器发送,数据字节的传输方向由寻址字节的方向位确定。
2)寻址字节值表明器件地址及传输方向,器件内部的n个数据地址由器件设计者在该器件的I2C总线数据操作格式中指定,第一个数据字节作为器件内的单元地址数据,并设置了地址自动加、减功能,以减少单元地址寻址操作。
3)每字节传输都必须有相应的应答信号或非应答信号。
4)I2C总线被控器在接收到起始信号后必须将总线逻辑复位,以便对将要开始的被控器地址传送进行预处理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。