I2C协议研读(二):位传输和数据传输

3. 一般特征:GENERAL CHARACTERISTICS

        SDA和SCL均为双向线路,通过电流源或上拉电阻连接到正电源电压(见图3)。 总线空闲时,两条线均为高电平。 连接到总线的设备的输出级必须具有漏极开路或集电极开路才能执行线与功能。 I2C总线上的数据在标准模式下可以高达100 kbit / s的速率传输,在快速模式下可以高达400 kbit / s的速率传输,在高速模式下可以高达3.4 Mbit / s的速率传输。 连接到总线的接口数量仅取决于400 pF的总线电容极限。

                                                                               标准模式和快速模式

4. 位传输:BIT TRANSFER

由于可以连接到I2C总线的各种不同的技术设备(CMOS,NMOS,双极性),逻辑0低和1高的电平并不固定,并且取决于相关的VDD电平。 每个传输的数据位产生一个时钟脉冲。

(1)数据有效性Data validity

      SDA线上的数据必须在时钟的高电平期间保持稳定。 仅当SCL线上的时钟信号为低电平时,数据线的高或低状态才能改变。

(2)开始停止条件:START AND STOP CONDITIONS

在I2C总线的过程中,会出现特殊情况,这些情况被定义为START(S)和STOP(P)条件。
SCL为高电平时,SDA线上从高电平到低电平的过渡就是这样一种独特的情况。 这种情况表明启动条件。
SCL为高电平时,SDA线上的由低到高的跳变定义了一个停止条件。
启动和停止条件始终由主机生成。 START条件后,总线被视为繁忙。 在停止条件之后的某个时间,总线被视为再次空闲。

如果产生重复的START(Sr)而不是STOP条件,则总线将保持繁忙状态。 在这方面,START(S)和重复的START(Sr)条件在功能上是相同的(请参见图10)。

如果它们包含必要的接口硬件,则通过连接到总线的设备检测启动和停止条件很容易。 但是,没有这种接口的微控制器必须在每个时钟周期内至少对SDA线采样两次,以检测过渡情况。

5. 数据传输: TRANSFERRING DATA

(1)字节格式

SDA线上的每个字节必须是8位长,每次传输的字节数量没有限制。每个字节前必须有确认位。首先以最高有效位(MSB)传输数据(参见图6)。如果从机在执行其他功能(例如,服务内部中断)之前无法接收或发送另一个完整的数据字节,则可以将时钟线SCL保持为低电平以强制主机进入等待状态。 当从机准备好接收另一个数据字节时,数据传输将继续,并释放时钟线SCL。

在某些情况下,允许使用与I2C总线格式不同的格式(例如,用于CBUS兼容设备)。 以这样的地址开头的消息即使在传输字节期间也可以通过产生STOP条件来终止。 在这种情况下,不会产生任何确认(请参见第10.1.3节)。

(2)确认

数据传输必须要有确认,主机生成确认时钟脉冲,发送器在确认时钟脉冲期间释放SDA线(HIGH)

接收器必须在确认时钟脉冲期间拉低SDA线,以使其在此时钟脉冲的高电平期间保持稳定的低电平(见图7)。 当然,还必须考虑设置和保持时间(在第15节中指定)。

通常,已寻址的接收器有义务在接收到每个字节后生成确认,除非消息以CBUS地址开头(请参见10.1.3节)。

当从机没有确认从机地址(例如,由于它正在执行某些实时功能而无法接收或发送地址)时,从机必须将数据线保持为高电平。 然后,主机可以产生停止条件以中止传输,或产生重复的开始条件以开始新的传输。

如果从机接收器确实确认了从机地址,但是在传输之后的某个时间不能再接收任何数据字节,则主机必须再次中止传输。 由从机在随后的第一个字节上产生不应答表示。 从机将数据线置于高电平,而主机则产生STOP或重复的START条件。

如果主机接收器参与传输,则它必须通过不对从机时钟输出的最后一个字节生成确认来向从机发送器发信号通知数据结束。 从机发送器必须释放数据线以允许主机产生STOP或重复的START条件。

猜你喜欢

转载自blog.csdn.net/yinuoheqian123/article/details/105594769