IIC主要有条双向信号线:
SDA:数据线
SCL:时钟线
IIC概述:
IIC是飞利浦公司推出的一种串行总线,是具备多主机系统所需的总线裁决和高低速器件同步功能的高性能串行总线。
IIC总线通过上拉电阻(上拉电阻可以分到电压)接正电源。所以当总线空闲时,两根线均为高电平。连接到总线上的任意一个器件输出低电平,呢么总线型号就会被拉低,那么所有器件连接的总线都是低电平,这就是一种线“与”的关系(0与上任何数都是0嘛~)。
IIC总线示例图:
每个接到IIc总线上的器件都有一个唯一地址,发送数据的为发送器,接收的叫接收器。
若有多个主机企图启动总线传送数据,为了避免混乱,IIC总线要通过总线仲裁,以决定由哪一台主机控制总线。
IIC总线的数据传输:
1.数据位的有效性规定
IIC总线传输数据时,时钟信号为高电平期间,数据线上的电平必须保持不变,只有在时钟线上的信号为低电平的时候,数据线上的电平才能变化。 时序示例图如下图。
2.起始信号和终止信号
SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 时序示例图如下图。
起始信号由主机发出,主机发出起始信号后,总线就处于被占用的状态,终止信号产生后,总线就处于空闲状态。
当主机发送完一个字节的数据后,接收器必须通过SDA数据线发回一个应答信号(发送地址也算)。
3.总线的寻址
IIC总线协议有明确的规定:采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。位定义如下图。
D0位为0时向从机写数据,为1时从机向主机发数据,也即主机从从机读数据。
主机发送地址时。总线上的每个从机都将这7位地址码和自己的地址比较,如果相同,那么在看r/w位以确定自己是发送器还是接收器。
IIC总线上的数据信号是广义的,既包括地址信号,又包括真正的数据信号。
在数据传输完成后可以发送一个终止信号,但若还想继续对别的从机发送,则可以不发终止信号,转而重新发送一个起始信号就行。也就是,可以发送多个起始信号,一个终止信号。
3.几种数据交换的情况
ps:非应答就是我不接收了,可以直接终止,然后主机发送终止信号。
应答、非应答、起止和终止信号的时序图如下:
待续....