i2c时序图的详细讲解

 i2c简易时序图

  启动信号:

  SCL为高电平的时候,SDA由高电平向低电平跳变。结束信号:SCL为高电平的时候,SDA由低电平向高电平跳变。

  应答信号:

  I2C总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功,对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

  写时序:

  开始信号:主机+从设备地址+写命令,从机应答,应答成功,表示有这个设备,然后主机+设备内部寄存器地址,此时不用再加写命令控制字,从机应答,应答成功,表示设备内有这个地址,主机写入数据,从机应答,是否继续发送,不发送的话,发送停止信号P。

  读时序:

  要想读设备,首先要知道将要所读取设备的地址告诉从设备,从设备才能将数据放到(发送)SDA上使主设备读取,从设备将数据放入SDA上的过程,由硬件主动完成,不用人为的写入。所以首先先写入从机地址,然后+写控制命令,从机应答,应答成功,表示有这个设备,然后写入内部寄存器地址,此时不用再加写命令控制字,从机应答,应答成功,表示设备内有这个地址。然后主机继续发出:写入从机地址,然后+读命令,从机应答,应答成功,此时便可以读取数据了,从设备已经将数据放入到SDA上了。地址跟设备已经验证了,不用再进行验证。

  启动信号与停止信号的时序图如下图所示:

  数据位发送:

  在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据0,高电平为数据1。只有在SCL为低电平期间,才允许SDA上的电平改变状态。逻辑0的电平为低电压,而逻辑1则为高电平。时序如下图所示

  应答信号时序图如下图所示:

i2c时序图的详细讲解

  当进行一次写时序的时候,SDA上的数据变化的时序图如下:

i2c时序图的详细讲解

  当进行一次读的时候,SDA上的数据变化的时序图如下:

i2c时序图的详细讲解

  i2c协议中的数据传输时序图如下:

i2c时序图的详细讲解

  I2C总线信号时序总结

  总线空闲状态

  I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。

i2c时序图的详细讲解

  启动信号

  在时钟线SCL保持高电平期间,数据线SDA上的电平被拉低(即负跳变),定义为I2C总线总线的启动信号,它标志着一次数据传输的开始。启动信号是一种电平跳变时序信号,而不是一个电平信号。启动信号是由主控器主动建立的,在建立该信号之前I2C总线必须处于空闲状态。

  重启动信号

  在主控器控制总线期间完成了一次数据通信(发送或接收)之后,如果想继续占用总线再进行一次数据通信(发送或接收),而又不释放总线,就需要利用重启动Sr信号时序。重启动信号Sr既作为前一次数据传输的结束,又作为后一次数据传输的开始。利用重启动信号的优点是,在前后两次通信之间主控器不需要释放总线,这样就不会丢失总线的控制权,即不让其他主器件节点抢占总线。

  重启动信号

  在主控器控制总线期间完成了一次数据通信(发送或接收)之后,如果想继续占用总线再进行一次数据通信(发送或接收),而又不释放总线,就需要利用重启动Sr信号时序。重启动信号Sr既作为前一次数据传输的结束,又作为后一次数据传输的开始。利用重启动信号的优点是,在前后两次通信之间主控器不需要释放总线,这样就不会丢失总线的控制权,即不让其他主器件节点抢占总线。

  停止信号

  在时钟线SCL保持高电平期间,数据线SDA被释放,使得SDA返回高电平(即正跳变),称为I2C总线的停止信号,它标志着一次数据传输的终止。停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,I2C总线将返回空闲状态。

  不是在数据有效性中规定在SDA只能在SCL的低电平的时候变化,为何STAR,STOP不一样?首先STAR和STOP不是数据,所以可以不遵守数据有效性中的规定,其它数据都遵守,而STAR和STOP“不遵守”导致STAR和STOP更容易被识别。这样不是不遵守而是更有优势。

  起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态,在停止条件的某段时间后总线被认为再次处于空闲状态。

  如果产生重复起始(Sr) 条件而不产生停止条件,总线会一直处于忙的状态。此时的起始条件(S)和重复起始(Sr) 条件在功能上是一样的。

  如果连接到总线的器件合并了必要的接口硬件,那么用它们检测起始和停止条件十分简便。但是没有这种接口的微控制器在每个时钟周期至少要采样SDA 线两次来判别有没有发生电平切换。

  i2c时序图的详细讲解

  数据位传送

  在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据0,高电平为数据1。只有在SCL为低电平期间,才允许SDA上的电平改变状态。逻辑0的电平为低电压,而逻辑1的电平取决于器件本身的正电源电压VDD(当使用独立电源时)。数据位的传输是边沿触发。

  i2c时序图的详细讲解

  应答信号

  I2C总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

  i2c时序图的详细讲解

  插入等待时间

  如果被控器需要延迟下一个数据字节开始传送的时间,则可以通过把时钟线SCL电平拉低并且保持,使主控器进入等待状态。一旦被控器释放时钟线,数据传输就得以继续下去,这样就使得被控器得到足够时间转移已经收到的数据字节,或者准备好即将发送的数据字节。带有CPU的被控器在对收到的地址字节做出应答之后,需要一定的时间去执行中断服务子程序,来分析或比较地址码,其间就把SCL线钳位在低电平上,直到处理妥当后才释放SCL线,进而使主控器继续后续数据字节的发送。

  i2c时序图的详细讲解

  总线封锁状态

  在特殊情况下,如果需要禁止所有发生在I2C总线上的通信活动,封锁或关闭总线是一种可行途径,只要挂接于该总线上的任意一个器件将时钟线SCL锁定在低电平上即可。

  总线竞争的仲裁

  总线上可能挂接有多个器件,有时会发生两个或多个主器件同时想占用总线的情况,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的:当多个主器件同时想占用总线时,如果某个主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出级。总线竞争的仲裁是在两个层次上进行的。首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性。由于是利用I2C总线上的信息进行仲裁,因此不会造成信息的丢失。

  为何识别到“0”将丢失仲裁呢?因为对于OD门,只能驱动到低电平,释放总线只能通过不驱动总线释放,停止驱动即产生“1”,但是发现总线还是“0”,这说明还有主机在跟自己竞争总线使用权,自己线驱动到“1”,确检测到“0”,那代表自己已经失去了仲裁。

  主机只能在总线空闲的时侯启动传送。两个或多个主机可能在起始条件的最小持续时间tHD;STA 内产生一个起始条件,结果在总线上产生一个规定的起始条件。

  当SCL 线是高电平时,仲裁在SDA 线发生;这样,在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同。然后,进一步获得其的判定条件:

  仲裁可以持续多位。首先是比较地址位。如果每个主机都试图寻址同一的器件,仲裁会继续比较数据位(假设主机是发送器),或者比较响应位(假设主机是接收器)。

  I2C 总线的地址和数据信息由赢得仲裁的主机决定,在仲裁过程中不会丢失信息。丢失仲裁的主机可以产生时钟脉冲直到丢失仲裁的该字节末尾。

  此外,如果主机也结合了从机功能,而且在寻址阶段丢失仲裁,它很可能就是赢得仲裁的主机在寻址的器件。那么,丢失仲裁的主机必须立即切换到它的从机模式。

  I2C 总线的控制只由地址或主机码以及竞争主机发送的数据决定,没有中央主机,总线也没有任何定制的优先权。

  在串行传输过程中时,一旦有重复的起始条件或停止条件发送到I2C 总线的时侯,仲裁过程仍在进行。如果可能产生这样的情况,有关的主机必须在帧格式相同位置发送这个重复起始条件或停止条件。

  i2c时序图的详细讲解

  上图显示了两个主机的仲裁过程,当然可能包含更多的内容,由连接到总线的主机数量决定。此时产生DATA1 的主机的内部数据电平与SDA 线的实际电平有一些差别,如果关断数据输出,这就意味着DATA1 的主机总线连接了一个高输出电平,这不会影响由赢得仲裁的主机初始化的数据传输。

  时钟信号的同步

  在I2C总线上传送信息时的时钟同步信号是由挂接在SCL线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。 同时,常见的SP1和I2C其波特率都为SCL频率的二分之一

  i2c时序图的详细讲解

  • 13
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: iic_slaver.rar_iic时序是一个嵌入式文档类资源。在嵌入式系统中,iic_slaver.rar文件是一个包含了iic(Inter-Integrated Circuit)接口的从设备(slaver)的时序信息的压缩文件。 iic是一种串行通信协议,主要用于各种嵌入式设备之间的数据传输。iic接口由两根线组成,一根是数据线(SDA),另一根是时钟线(SCL)。在iic_slaver.rar中,我们可以找到从设备在这个接口上进行数据传输的具体时序信息。 iic_slave.rar文件中的时序信息对于开发者来说是非常重要的,因为它们描述了从设备与主设备之间的数据传输时机、数据的发送和接收顺序,以及时钟信号的频率等细节。通过分析时序信息,开发者可以了解从设备与主设备之间的通信规则,从而正确编写驱动程序以实现数据的稳定传输。 此外,iic_slaver.rar_iic时序还可能包含从设备的相关文档,如寄存器映射表和时序图等。这些文档提供了关于从设备硬件的更详细的信息,帮助开发者了解从设备的工作原理和寄存器的使用方法。 总之,iic_slaver.rar_iic时序是一个非常实用的嵌入式文档资源,它包含了关于iic接口从设备的时序信息以及相关的文档资料,对于进行嵌入式开发的人员来说,这些资料是非常重要的参考。 ### 回答2: iic_slaver.rar_iic时序是一种嵌入式文档类资源。嵌入式系统是指嵌入在其他设备或系统中的计算机系统,通常用于控制、监测或通信等目的。这种时序文档资源主要用于描述iic从设备的时序,以指导嵌入式开发人员在设计和实现中遵循正确的时序要求。 在嵌入式系统中,IIC(Inter-Integrated Circuit)是一种常见的串行通信接口协议,用于在主设备和从设备之间进行数据传输。IIC协议通常被用于连接各种外设(如传感器、存储器等)和微控制器等嵌入式系统中的主控制器。 iic_slaver.rar_iic时序资源是一个被压缩为.rar文件的文档资源。该资源通过解压缩后,可以获取到其中的iic时序文档,该文档对于嵌入式开发人员来说非常有用。iic时序文档描述了在使用IIC协议进行通信时所需的时序要求,包括信号的时序顺序、时钟信号的频率、数据传输的速率等。 嵌入式系统的开发通常需要遵循一定的时序规范,以确保数据传输的准确性和稳定性。因此,iic_slaver.rar_iic时序文档资源可以为开发人员提供了解和理解IIC协议时序要求的参考资料。在使用这一资源时,开发人员可以通过查阅其中的iic时序文档,了解IIC协议的时序要求,并根据文档中的指导,设计和调整嵌入式系统中与IIC通信相关的电路和程序。 总之,iic_slaver.rar_iic时序是一种嵌入式文档类资源,通过提供IIC通信协议的时序要求文档,帮助嵌入式开发人员编写和调试与IIC相关的程序和电路。 ### 回答3: iic_slaver.rar_iic时序是一种嵌入式文档类资源。在嵌入式系统中,I2C总线被广泛应用于连接微处理器和各种外设,用于实现数据传输和通信。iic_slaver.rar文件中包含了关于I2C从机(iic_slaver)的相关文档和资源。 I2C(Inter-Integrated Circuit)是由飞利浦公司开发的一种串行通信总线标准。它采用两根线进行数据传输,即SDA(Serial Data Line)和SCL(Serial Clock Line)。其中SDA用于数据传输,SCL用于时钟同步。通过使用I2C总线,嵌入式设备可以与各种传感器、存储器、显示器、控制器等外设进行通信。 iic_slaver.rar文件中的I2C时序文档详细描述了iic_slaver从机设备与主控设备之间的数据传输时序要求。通过按照这些时序要求进行数据读取和写入操作,可以实现可靠的数据传输和通信。这些时序要求包括时钟频率、数据传输速率、起始信号、停止信号等。 此外,iic_slaver.rar文件中可能还包含有关iic_slaver从机设备的硬件设计参考资料、软件开发工具和示例代码等。这些资源可以帮助开发人员设计和开发符合I2C标准的嵌入式设备,并实现与其他设备的通信和数据交换。 总之,iic_slaver.rar_iic时序是一种嵌入式文档类资源,它提供了关于I2C从机设备的时序要求、硬件设计参考和开发工具等资源,帮助开发人员设计和实现嵌入式设备之间的可靠通信和数据传输。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值