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

香菜波波

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

暂无评论

发表评论

相关推荐

STM32开发笔记04---配置系统时间

架构图 思考重点 本文的目的是使用HSE外部晶振来配置系统时钟参考手册中的时钟树如何理解理解开发版初始化过程中对系统时钟的操作如何自行变更系统时钟 配置时钟源 在开发版STM32F429,以HSE, HSI, PLL作为主要