首页 > 其他分享 >硬件知识--IIC协议

硬件知识--IIC协议

时间:2022-11-25 09:44:21浏览次数:74  
标签:发送 数据线 -- 主机 应答 硬件 从机 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、通信完成后,主机发送停止信号释放总线。

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

标签:发送,数据线,--,主机,应答,硬件,从机,IIC
From: https://www.cnblogs.com/amxiang/p/16924178.html

相关文章

  • IIC时序图
    IIC(Inter-IntegratedCircuit)总线是一种由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。它是半双工通信方式。IIC串行总线一般有两根信号线,一根......
  • js二维数组行列互换
    constaa=[[1,2,3],[4,5,6],[7,8,9]]functiontransfer(aa){constnewArr=aa[0].map((col,i)=>{returnaa.map(row=>{return......
  • vue获取内网ip
    vue获取内网ip函数getIPs1(callback){varip_dups={};//compatibilityforfirefoxandchromevarRTCPeerConnection=window.RTCPeerConnection|......
  • tomcat运行mybatis项目 启动没完没了
    原因:在mybatis的xml文件中会存在语法或者其他的错误,但是文件有没有提示,平时有看不出来,这时候启动项目的时候,会发现console一直无限循环,但是你看不到异常的抛出,原因在于这......
  • 用NetCore + ReactJS 实现一个前后端分离的网站 (3) 仓储、服务层的实现以及数据库接
    用NetCore+ReactJS实现一个前后端分离的网站(3)仓储层的实现1.前言这两天在仓储模式上纠结了几回,差点放弃仓储层的实现,因为从网上搜到一些文章,说efcore已经是按照......
  • CentOS7.9 MySQL5.1 安装
    1.下载相关mysql源码包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-5.1.63-linux-x86_64-glibc23.tar.gz2.安装相关依赖包yuminstallbisongcc......
  • Django 创建子应用、目录结构、路由分发
    目录创建项目目录结构路由分发路由分组创建项目创建项目diango-adminstartprojectmy_project/项目名称创建子应用python3manage.pystartappapp01/子应用名称......
  • greedy
    621.任务调度器classSolution:defleastInterval(self,tasks:List[str],n:int)->int:#1.假设任务间隔为n,最短完成任务时间就是任务总数......
  • 昌平怀柔高防物理机,线路稳延迟低
    普通公司无法为服务器建立一间机房,用空调保证恒温恒湿防尘供电,而且适宜人生存的温度却不适用于服务器,相反适宜服务器的温度又不是适应人的生存。随着现在云服务器的广泛应......
  • 多线程与高并发
    一、Volatile1.1可见性read(读取):从主内存读取数据load(载入):将主内存读取到的数据写入工作内存use(使用):从工作内存读取数据来计算assign(赋值):将计算好的值重新赋值到......