文章目录[隐藏]
浅谈IIC总线通讯协议
相关概念
IIC总线是PHLIPS公司在八十年代初推出的一种同步串行的半双工总线,支持多主机多从机,具备总线裁决功能,用于连接整体电路。
整体电路:同一块板子上,两个芯片之间的连接(SOC<–IIC–>传感器)
IIC硬件结构简单,连接方便,成本较低,因此在各个领域得到了广泛的应用。例如:温湿度传感器,脉搏血氧饱和度传感器,触屏芯片等。
IIC总线需要接两个上拉电阻,使总线在空闲态保持高电平的状态。
IIC总线为两线制,两根双向信号线,一根是数据线(SDA),一根是时钟线(SCL)。
实际使用过程中大多数情况下使用的是单主机多从机的模式。主动发起通讯的叫做主机,只能被动接收通信的叫做从机。挂载到一根IIC总线的所有从设备都有唯一的从机地址。发送数据的器件叫做发送器,接收数据的器件叫做接收器。
时钟信号由主机产生,作用给从机。
IC总线时序图
时序:根据时钟信号的变化,数据线上数据的变化情况。
1.起始信号:时钟线为高电平期间,数据线由高电平向低电平变化。
2.停止信号:时钟线为高电平期间,数据线由低电平向高电平变化。
起始信号和终止信号都是由主机发出的,起始信号产生后,总线就处于占用的态,终止信号产生后,总线就处于空闲态。
3.数据信号:时钟线为高电平期间,接收器从数据线上读取数据,时钟线为低电平期间,发送器向数据线上写入数据。
IIC总线在进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线为低电平期间,数据线上的高电平或低电平状态才允许被变化。
4.应答信号和非应答信号
数据传送时,每一个字节必须保证是8位长度,且先传送高位,每一个被传送的字节后面都必须跟随以为应答位。(即一帧数据有9位)
在一帧数据的第九个时钟周期,低电平期间,接收器向数据线写入数据,高电平期间,发送器从数据线上读取数据。
低电平是应答信号,高电平是非应答信号。
IIC总线的通讯协议
IIC总线上传送的数据信号包括地址信号和真正的数据信号。
主机在起始信号号必须传送一个从机的地址啊(7位),第8位是数据的传送方向(R/W)。
R:表示主机接收数据,用“1”表示。
W:主机发送数据,用“0”表示。
总线上的每一个从机都会将这7位地址码与自己的地址进行比较,如果相同,则认为自己被主机寻址,根据第8位(R/W)将自己设定为接收器或发送器。
1.主机发送一个字节给从机(从机向主机接收一个字节)
2.主机发送多个字节给从机(从机向主机接收多个字节)
3.主机向从机接收一个字节(从机发送一个字节给主机)
4.主机向从机接收多个字节(从机发送多个字节给主机)
从机只能被动的收发数据,主机向从机接收数据,最后会发一个NACK再停止。
如果从机收到的是一个应答信号,会发送下一个字节的数据给主机;如果从机没有收到应答信号,就不会再发送下一个字节的数据。
版权声明:本文为CSDN博主「香菜波波」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fzccz/article/details/121892727
暂无评论