IIC通信协议

      最后更新:2022-07-17 15:31:46 手机定位技术交流文章

      目录

        • 一、IIC简介
            • 1、设备连接
        • 第二,I2C协定的时机
            • 1、时序详解
            • 2、IIC写操作
            • 3、IIC读操作

      一、IIC简介

      IIC (I2C,Inter-Integrated Circuit)即集成电路总线,这是一种双线串行巴士,它是由菲利普斯公司开发的,用于连接微控制器及其周边设备。它通常用于与主机和接收机在少量数据和短的传输距离中通信。

      I2C总线由数据线SDA和时钟线SCL构成通信线路,既可用于发送数据,也可接收数据。只有一根数据线,属于半双工通信方式。

      标准模式:100kbit/s 快模式:400kbit/s 快模式:3.4Mbit/s

      1、设备连接

      在这里插入图片描述
      图1 设备连接

      在图1中,SDA是一个串行数据线,由于I2C设备通常使用与总线连接的泄漏结构,所以SCL和SDA都需要连接到一个拖拉阻尼器。当公共汽车免费时,两个线路处于高压平衡状态,当任何连接到总线的设备输出低压水平时,都将使总线拉低,这意味着每个设备的SDA和SCL是“线到线”关系。I2C总线支持多个主机和两个工作模式的主机,通常是以主要的方式工作,我们的开发团队使用主源方法.在主从工作方式中,系统中只有一个主机,其他设备是I2C总线的外部接收器。在主从工作方式中,发送主机启动数据(发出启动信号)和生成时钟信号,数据发送完成后,发出停止信号。

      第二,I2C协定的时机

      1、时序详解

      IIC通信过程由五个部分组成:开始、结束、发送、响应和接收。

      • 【在发送、接受数据时】当SCL为高电平时,SDA线不允许变化;当SCL线为低电平时,SDA可以任意0,1变化;
      • [任何时候]只有当SCL处于高电压正常状态时,IIC电路在SDA线上记录电压水平(0或1);当SCL处于低电压正常状态时,没有IIC样本SDA,无论SDA是高还是低。

      空闲状态:在 I2C 器件开始通信(传输数据)之前,串行时钟线 SCL 和串行数据线 SDA 线由于上拉的原因处于高电平状态,此时 I2C 总线处于空闲状态。

      如果主机想开始传输数据,只要在SCL下调SDA线,就可以获得高功率,产生一个起始信号,从机器检测到初始信号,准备接收数据,当数据传输完成,主机只产生停止信号,告诉机器终止数据传输,为高电流正常,在SCL中产生停止信号,SDA从低水平跳到高水平,从机器检测到停止信号,停止接收数据。图5显示I2C的总时间序列。在开始信号处于闲置状态之前,这部分是启动信号前的数据传输状态,停止信号后的数据传输状态,主机可以向主机写数据,你也可以从机器上读出输出数据,数据的传输由双向数据线(SDA)完成。停止信号产生后,公共汽车又处于闲置状态.

      IIC启动信号:当SCK是高压时,SDA从高到低,代表启动

      IIC停止信号:当SCK是高压时,SDA从低到高,表示停止
      在这里插入图片描述
      图2

      除开站和停站外,IIC巴士亦应按以下方式:当SCL低时,数据不能改变;当SCL高时,数据必须保持稳定
      在这里插入图片描述
      图3

      IIC响应信号:第9个钟在第8位之后发出低压平衡信号
      在这里插入图片描述
      图4IIC响应信号

      IIC协议整体时序

      由图 可知,我们发出信号后,当串行时钟线SCL处于低压平衡时,主机开始发送传输的数据;SDA允许改变传输数据位(对于高电压,0 为低电平),当SCL处于高电位时,SDA要求稳定,它相当于1位数据传输的时钟周期,经过八小时的循环,传输8位数据,即一个字节。第八个钟表周期结束时,主机释放SDA,让服务器响应,在第九个时钟周期中,响应时将SDA从机器上拉下来;如果第九个钟表周期,一般使用高电压的SCL,SDA未被发现为低水平,视为非应答,这表明数据传输失败了。在第九个钟表周期结束时,将SDA从机器中释放,让主机传输数据,如果主机发送停止信号,此次传输结束。我们应该注意,数据是以8位元传输的, 即每单位一个字节.它首先发送了线程的最高 bit 。
      在这里插入图片描述
      图5IIC协议总时间序列

      2、IIC写操作

      (一)生成启动位置

      (2) 传送器件地址Device_Address,器件地址的最后一位为数据的传输方向位,R/W低电平0表示主机往从机写数据(W),1表示主机从从机读数据(R)。ACK应答,应答是从机发送给主机的应答。

      (三)将输入设备的注册地址分别转移到高地址和低地址,即要写的数据的位置。

      (四)数据传输应写的资料。

      (5)生成一个停止信号。
      在这里插入图片描述
      图6 单次写时序

      3、IIC读操作

      (一)生成启动信号

      (2)设备地址(写 Device_Address),ACK。

      (3)文本地址,ACK。

      (四)重新生成启动信号

      (5)再次发送设备地址,ACK。

      (六)读取单个部门的数据,直到数据最终完成为止,不会对ACK信号作出响应。

      (7)生成一个停止信号。
      在这里插入图片描述
      图7 随机地址读

      图7显示了随机阅读序列,发送设备地址和字地址后,同时发送初始信号和设备地址,第一个设备地址之后的读写控制位置是"0",也就是写命令,第二个发送设备地址之后的读写控制位置是"1",也就是读。这是因为我们需要使从机内的存储单元地址指针指向我们想要读取的存储单元地址处,所以首先发送了一次 Dummy Write 也就是虚写操作,之所以称为虚写,因为我们真的不想写数据,相反,地址指针被用来指向操作中的字地址的位置。等从机应答后,你可以通过阅读当前地址来读取数据.

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/29920.html

          热门文章

          文章分类