# 浅谈IIC总线通讯协议

浅谈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

生成海报
点赞 0

香菜波波

我还没有学会写个人说明!

暂无评论

相关推荐

stm32f373利用esp8266连接onenet平台

学习目标: 1.注册onenet平台 2.esp8266引脚连接 3.stm32373代码移植编写 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 一、注册onene