我是靠谱客的博主 暴躁飞鸟,最近开发中收集的这篇文章主要介绍硬件知识3--IIC协议IIC协议,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

IIC协议

IIC通信只有两条线就可以实现,一条是时钟线SCL,另一条是数据线SDA。是一种半双工通信协议。

关于IIC协议主要记住以下几点:

1、数据线SDA只有在时钟线SCL为低电平的时候才能改变电平状态。起始信号、应答信号、结束信号除外。

2、在传输数据时,每个时钟线SCL的高电平时刻采集数据线SDA电平状态,每个时钟线SCL的低电平时刻数据线SDA电平状态发生改变。

3、每一次通信都需要接收器回复一个应答信号给发送器。

4、发送、接收双方都能控制时钟线和数据线。

这里注意一个问题,收发双方都能驱动数据线,那么在同一时刻,一方驱动数据线为高电平,另一方驱动数据线为低电平,这样电路就会烧掉。关于这个问题,在另一篇文章:硬件知识2–协议类(基于百问网硬件操作大全视频教程)_山、的博客-CSDN博客中有介绍,这里不再详细说明,只简单说一下。
在这里插入图片描述

在硬件电路上,采用三极管来驱动时钟线和数据线,如上图所示。这样,如果双方只要有一方驱动三极管,那个数据线就会被拉低,不用担心电路被烧毁。

下面主要介绍下IIC的时序。

在这里插入图片描述

分析一下上面的时序:

起始信号:SCL = 1,SDA产生一个下降沿。

结束信号:SCL = 1,SDA产生一个上升沿。

ACK应答信号:应答信号由从机发出,一个时钟内,SDA始终为低电平,则认为是应答信号,主机接收到了从机的应答,才会正常继续通信。

主机每次发送8个bit,然后等待从机的应答信号。在第一个发送的时候,发送的不是数据,而是7位的从机地址加一位的工作模式,R/W = 0:写数据;R/W = 1:读数据。从第二次开始,传输的八位数据就都是真正的数据了,当然每次发送一个字节都要等待从机的应答。

读操作的时序跟上面的差不多,只不过是从机发送数据,主机回应,流程是:主机产生开始信号–>主机发送7bit设备地址+1bitR/W–>从机回应–>从机发送8bit数据–>主机回应–> …从机发送8bit数据–>主机回应–>主机发送结束信号。

写操作流程
在这里插入图片描述

读操作流程:

在这里插入图片描述

上图中,灰色背景表示数据方向为"主→从",白色背景表示"从→主"

根据上面信息可以总结下IIC总线的通信过程:

1、主机发送起始信号启用总线。

2、主机发送一个字节的数据指明从机地址和后续数据的传输方向(7bit的地址,1bit的方向命令)。

3、被寻址的从机发送应答信号回应主机。

4、发送器发送一个字节的数据。

5、接收器发送应答信号回应发送器、

6、…(循环第4、5步骤)

7、通信完成后,主机发送停止信号释放总线。

注意:上面的发送器和接收器既可以是主机又可以是从机,主要看谁发送数据,谁接收数据。

最后

以上就是暴躁飞鸟为你收集整理的硬件知识3--IIC协议IIC协议的全部内容,希望文章能够帮你解决硬件知识3--IIC协议IIC协议所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部