一文了解I2C(2)
起始,停止和响应
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。
CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
传输数据
发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制.每个字节必须跟一个响应
位,首先传输的数据是最高位(MSB).如果从机要完成一些其他功能后才能接收或发送下一个完整的数据字节,
可以使时钟线SCL保持低电平迫使主机进入等待状态.当从机准备好接收下一个数据字节并释放时钟线SCL后,
数据传输继续.
响应
数据传输必须带响应,相关的响应时钟脉冲由主机产生,在响应的时钟脉冲期间,发送器释放SDA线(高).在
响应的时钟脉冲期间,接收器必须将SDA线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平.
仲裁和时钟发生
同步
时钟同步通过线与连接I2C接口到SCL线来执行.就是说:SCL线的高到低切换会使器件开始
数它们的低电平周期,而且一旦器件的时钟变低电平,它会使SCL线保持这种状态知道到达时钟
的高电平.但是,如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL线的状
态.因此,SCL线被有最长低电平周期的器件保持低电平.此时,低电平周期的器件会进入高电平的
等待状态.
当所有有关的器件数完了它们的低电平周期后,时钟线被释放并变为高电平.之后,器件时钟和SCL线的状态没有差别.而且所有器件会开始它们上午高电平周期.首先完成高电平周期的器件会再次将SCL线拉低.
这样,产生的同步SCL时钟的低电平周期由低电平周期最长的器件决定,而高电平周期由高电平周期最短的器件决定.
仲裁
主机只能在总线空闲的时候启动传输.当SCL线是高电平时,仲裁在SDA线发生,这样其他主机发送低电
平时发送高电平的主机将断开它的数据输出级,因为总线上的电平和它自己的电平不相同.
7位的地址格式
数据的传输遵循下面的格式,在起始条件(S)后,发送一个从机地址.这个地址共有7位,紧接着的第8位是数据方
向位(R/W)--’0’表示发送(写),’1’表示请求数据(读).数据传输一般由主机产生的停止位(P)终止.如果主机仍希望
在总线上通讯,它可以产生重复起始条件(Sr)和寻址另一个从机,而不是首先产生一个停止条件.
快速模式
高速模式