首页 > 技术文章 > IIC时序图详解

huainanhai 2019-04-25 18:28 原文

1、IIC总线具有2根双向信号线,1根是数据线SDA,另1根是时钟线SCL。
2、IIC总线上可以挂很多设备:多个主设备(单片机A和B),多个从设备(外围 设备)
3、多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就叫做总线竞争。
I2C通过总线仲裁,以决定哪台主机控制总线
4、IIC总线通过上拉电阻(一般取4.7k-10k)接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出低电平时,总线的信号变低。
即各器件的SDA及SCL都是线与关系。
5、每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传输可以是由主机发送数据到其它器件,
这时主机 即为发送器,总线上收数据的器件则为接收器。
6、I2C的原则是:在SCL=1(高电平)时,SDA千万别忽悠!!!
否则,SDA下跳则"判罚"为"起始信号S",SDA上跳则"判罚"为"停止信号P".
在SCL=0(低电平)时,SDA随便忽悠!!!
7、每个字节后应该由对方回送一个应答信号ACK做为对方在线的标志.
8、非应答信号一般在所有字节的最后一个字节后.一般要由双方协议签定.
9、SCL必须由主机发送,否则天下大乱.
10、首字节是"片选信号",即7位从机地址加1位方向(读写)控制.
11、从机收到(听到)自己的地址才能发送应答信号(必须应答!!!)表示自己在线.
其他地址的从机不允许忽悠!!!(当然群呼可以忽悠但只能听不许说话)
12、读写是站在主机的立场上定义的. "读"是主机接收从机数据,"写"是主机发送数据给从机.
13、如果主机向从机发送地址,从机怎么知道这个地址就是主机的,这个地址是怎么计算出来的"
严格讲,主机不是向从机发送地址,
而是主机往总线上发送地址(这个地址是某个从机的,而不是主机的,所以不存在“从机怎么知道这个地址就是主机的”的问题),
所有的从机都能接收到主机发出的地址,然后每个从机都将主机发出的地址与自己的地址比较,如果匹配上了,
这个从机就会向主机发出一个响应信号。主机收到响应信号后,开始向总线上发送数据,与这个从机的通讯就建立起来了。
如果主机没有收到响应信号,则表示寻址失败。

推荐阅读