I2C协议要点

来源:互联网 发布:avmoo.pw.tw新域名 编辑:程序博客网 时间:2024/05/04 22:14

1.I2C只有两根线,一根数据线SDA,一根时钟线SCL。

2.SDA和SCL 都是双向线路 都通过一个电流源或上拉电阻连接到正的电源电压。

3.每传输一个数据位就产生一个时钟脉冲.

4.SDA线上的数据必须在时钟的高电平周期保持稳定,数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变见图 

5.在I2C 总线中唯一例外的是起始S 和停止P 条件(和第4点相比)。

6.SCL 线是高电平时SDA线从高电平向低电平切换这个情况表示起始条件 当SCL 是高电平时SDA线由低电平向高电平切换表示停止条件.

7.发送到SDA线上的每个字节必须为8 位每次传输可以发送的字节数量不受限制.

8.每个字节后必须跟一个响应位.

9.首先传输的是数据的最高位 MSB

10.如果从机要完成一些其他功能后例如一个内部中断服务程序才能接收或发送下一个完整的数据字节可以使时钟线SCL 保持低电平迫使主机进入等待状态当从机准备好接收下一个数据字节并释放时钟线SCL 后数据传输继续.

11.数据传输必须带响应相关的响应时钟脉冲由主机产生在响应的时钟脉冲期间发送器释放SDA线(高).在响应的时钟脉冲期间接收器必须将SDA线拉低使它在这个时钟脉冲的高电平期间保持稳定的低电平.

 

12. 同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定 而高电平周期由高电平时钟周期最短的器件决定.

13.仲裁:主机只能在总线空闲的时侯启动传输 两个或多个主机可能在起始条件的最小持续时间 tHD;STA 内产生一个起始条件结果在总线上产生一个规定的起始条件. 当SCL 线是高电平时仲裁在SDA线发生这样在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同.

14.仲裁可以持续多位它的第一个阶段是比较地址位. 如果每个主机都尝试寻址相同的器件仲裁会继续比较数据位(如果是主机发送器), 或者比较响应位(如果是主机接收器), 因为I2C 总线的地址和数据信息由赢得仲裁的主机决定在仲裁过程中不会丢失信息.

 

15.在字节级的快速传输中 器件可以快速接收数据字节 但需要更多时间保存接收到的字节或准备另一个要发送的字节然后从机以一种握手过程. 在接收和响应一个字节后使SCL 线保持低电平迫使主机进入等待状态直到从机准备好下一个要传输的字节.

16.在起始条件S 后发送了一个从机地址这个地址共有7 位紧接着的第8 位是数据方向位R/ W 0 表示发送写 1 表示请求数据读 数据传输一般由主机产生的停止位 P 终止 但是 如果主机仍希望在总线上通讯 它可以产生重复起始条件 Sr和寻址另一个从机而不是首先产生一个停止条件

 

 

原创粉丝点击