i2c通信协议(i2c通信协议原理)

      最后更新:2023-08-30 03:51

      I2C通信协议的原理是什么,时序图是怎样的??

      作 者:■ 西安电子科技大学 郑旭阳 李兵兵 黄新平 摘要:介绍模拟I2C总线的多主节点通信原理,并提出一种新的实现方法。这种采用延时接收比较来实现仲裁的方法,可使不具有I2C接口的普通微控制器(MCU)能够实现模拟I2C总线的多主通信,同时对I2C总线的推广起到了积极作用。关键词:模拟I2C总线 仲裁 多主通信I2C总线(Inter IC BUS)是Philips公司推出的双向两线串行通信标准。由于它具有接口少、通信效率高等优点,现已得到广泛的应用[1~3]。它除了可以进行简单的单主节点通信外,还可以应用在多主节点的通信系统中。在多主节点通信系统中,如果两个或者更多的主节点同时启动数据传输,总线具有冲突检测和仲裁功能,保证通信正常进行并防止数据破坏。现在许多微控制器(MCU)都具有I2C总线接口,能方便地进行I2C总线设计。对于没有I2C总线接口的MCU,可以采用两条I/O接口线进行模拟[2,3]。目前,一些介绍模拟I2C的资料主要讲的是在单主节点系统中进行的通信,这使得模拟I2C总线的应用具有一定的局限性。本文根据总线仲裁的思想,提出一种多主节点通信的思想及实现流程。1 I2C总线系统简介[1~3]I2C总线系统是由SCL(串行时钟)和SDA(串行数据)两根总线构成的。该总线有严格的时序要求,总线工作时,由串行时钟线SCL传送时钟脉冲,由串行数据线SDA传送数据。总线协议规定,各主节点进行通信时都要有起始、结束、发送数据和应答信号。这些信号都是通信过程中的基本单元。总线传送的每1帧数据均是1个字节,每当发送完1个字节后,接收节点就相应给一应答信号。协议规定,在启动总线后的第1个字节的高7位是对从节点的寻址地址,第8位为方向位(“0”表示主节点对从节点的写操作;“1”表示主节点对从节点的读操作),其余的字节为操作数据。图1列出I2C总线上几个基本信号的时序。图1中包括起始信号、停止信号、应答信号、非应答信号以及传输数据“0”和数据“1”的时序。起始信号就是在SCL线为高时SDA线从高变化到低;停止信号就是在SCL线为高时SDA线从低变化到高;应答信号是在SCL为高时SDA为低;非应答信号相反,是在SCL为高时SDA为高。传输数据“0”和数据“1”与发送应答位和非应答位时序图是相同的。图2表示了一个完整的数据传送过程。在I2C总线发送起始信号后,发送从机的7位寻址地址和1位表示这次操作性质的读写位,在有应答信号后开始传送数据,直到发送停止信号。数据是以字节为单位的。发送节点每发送1个字节就要检测SDA线上有没有收到应答信号,有则继续发送,否则将停止发送数据。2 I2C总线的仲裁在多主的通信系统中。总线上有多个节点,它们都有自己的寻址地址,可以作为从节点被别的节点访问,同时它们都可以作为主节点向其他的节点发送控制字节和传送数据。但是如果有两个或两个以上的节点都向总线上发送启动信号并开始传送数据,这样就形成了冲突。要解决这种冲突,就要进行仲裁的判决,这就是I2C总线上的仲裁。I2C总线上的仲裁分两部分:SCL线的同步和SDA线的仲裁。SCL同步是由于总线具有线“与”的逻辑功能,即只要有一个节点发送低电平时,总线上就表现为低电平。当所有的节点都发送高电平时,总线才能表现为高电平。正是由于线“与”逻辑功能的原理,当多个节点同时发送时钟信号时,在总线上表现的是统一的时钟信号。这就是SCL的同步原理。SDA线的仲裁也是建立在总线具有线“与”逻辑功能的原理上的。节点在发送1位数据后,比较总线上所呈现的数据与自己发送的是否一致。是,继续发送;否则,退出竞争。图3中给出了两个节点在总线上的仲裁过程。SDA线的仲裁可以保证I2C总线系统在多个主节点同时企图控制总线时通信正常进行并且数据不丢失。总线系统通过仲裁只允许一个主节点可以继续占据总线[1]。图3是以两个节点为例的仲裁过程。DATA1和DATA2分别是主节点向总线所发送的数据信号,SDA为总线上所呈现的数据信号,SCL是总线上所呈现的时钟信号。当主节点1、2同时发送起始信号时,两个主节点都发送了高电平信号。这时总线上呈现的信号为高电平,两个主节点都检测到总线上的信号与自己发送的信号相同,继续发送数据。第2个时钟周期,2个主节点都发送低电平信号,在总线上呈现的信号为低电平,仍继续发送数据。在第3个时钟周期,主节点1发送高电平信号,而主节点2发送低电平信号。根据总线的线“与”的逻辑功能,总线上的信号为低电平,这时主节点1检测到总线上的数据和自己所发送的数据不一样,就断开数据的输出级,转为从机接收状态。这样主节点2就赢得了总线,而且数据没有丢失,即总线的数据与主节点2所发送的数据一样,而主节点1在转为从节点后继续接收数据,同样也没有丢掉SDA线上的数据。因此在仲裁过程中数据没有丢失。
      I2C通信协议的原理是什么,时序图是怎样的??

      谁能用简单通俗犀利的语言说说I2C是什么

      I2C是一种串行通讯协议 硬件上:是利用两根引线(经过电阻上拉的),一根线传送时钟信号,另一根传送与时钟信号对齐的数据信号,通信双方只有在输出低的时候将引线设置成低,输出高则输出高阻即可 软件上:有一套I2C通信规则,称之为I2C协议,通过这个协议,通信双方可交换数据
      谁能用简单通俗犀利的语言说说I2C是什么

      I2C传输数据是怎么回事?

      要学好I2C通信,你必须了解I2C通信协议,就是实现制定的规则,时序可以自己写,只要满足条件就好,起始信号之后,如果写数据,就要通过SDA线将数据发送出去,SDA上信号变化都是在SCL低电平期间变化的,在SCL高电平期间要保证SDA上的信号稳定,一般读数据是在SCL高电平期间读写的。
      I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。 关于I2C: 是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线支持任何IC 生产过程(CMOS、双极性)。通过串行数据(SDA)线和串行时钟 (SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。LCD 驱动器只能作为接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表1)。主机是初始化总线的数据传输并产生允许传输的时钟信号的器件。此时,任何被寻址的器件都被认为是从机。
      I2C传输数据是怎么回事?

      51单片机之间能用i2c协议通信吗

      可以,两个51单片机之间可以用I2C通信,有同步和异步两种,郭天祥的51书里有具体的讲解,你可以去看看
      51单片机可以和I2CEEPROM进行i2c 通讯。 单片机之间比较难,要靠软件搭建I2C协议。很麻烦。
      软件模拟呗,一个io做sda,一个做scl
      可以啊,用IO口模拟SDA SCL就行
      肯定能呀,好像是模拟的
      51单片机之间能用i2c协议通信吗

      在用51单片机与传感器用I2C通信,看了很多介绍I2C通信协议的,但是我就是不知道I2C总线到底是

      普通线就行 I2C就是个读写协议,就是你看到的的那个数据传输在时钟的上升沿开始传输,下降沿结束......只有遵守这样的协议,才能通信
      I2C的两根线定义一个是SCL时钟线,一个是SDA数据线,一般51单片机作为主机,通过对SCL的高低电平设置,来讲0或1的数据通过SDA线发送给对方。 再具体的协议你就要自己看了
      两个普通的导线连接
      在用51单片机与传感器用I2C通信,看了很多介绍I2C通信协议的,但是我就是不知道I2C总线到底是

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类