位置:51电子网 » 技术资料 » 接口电路

I2C总线信号时序分析

发布时间:2008/11/24 0:00:00 访问次数:1025

  在i2c总线通信的过程中,参与通信的双方互相之间所传输的信息种类归纳如下。

  主控器向被控器发送的信息种类有:启动信号、停止信号、7位地址码、读/写控制位、10位地址码、数据字节、重启动信号、应答信号、时钟脉冲。

  被控器向主控器发送的信息种类有:应答信号、数据字节、时钟低电平。

  下面对i2c总线通信过程中出现的几种信号状态和时序进行分析。

  ①总线空闲状态。

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

  ②启动信号。

  在时钟线scl保持高电平期间,数据线sda上的电平被拉低(即负跳变),定义为i2c总线总线的启动信号,它标志着一次数据传输的开始。

  启动信号是一种电平跳变时序信号,而不是一个电平信号。启动信号是由主控器主动建立的,在建立该信号之前i2c总线必须处于空闲状态,如图1所示。

  图1 i2c总线上的启动信号和停止信号

  ③停止信号。

  在时钟线scl保持高电平期间,数据线sda被释放,使得sda返回高电平(即正跳变),称为i2c总线的停止信号,它标志着一次数据传输的终止。

  停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,i2c总线将返回空闲状态。

  ④数据位传送。

  在i2c总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在scl串行时钟的配合下,在sda上逐位地串行传送每一位数据。

  进行数据传送时,在scl呈现高电平期间,sda上的电平必须保持稳定,低电平为数据0,高电平为数据1。

  只有在scl为低电平期间,才允许sda上的电平改变状态。逻辑0的电平为低电压,而逻辑1的电平取决于器件本身的正电源电压vdd(当使用独立电源时),如图2所示。

  图2 i2c总线上的数据位传送

  ⑤应答信号。

  i2c总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。

  应答信号为低电平时,规定为有效应答位(ack简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(nack),一般表示接收器接收该字节没有成功。

  对于反馈有效应答位ack的要求是,接收器在第9个时钟脉冲之前的低电平期间将sda线拉低,并且确保在该时钟的高电平期间为稳定的低电平。

  如果接收器是主控器,则在它收到最后一个字节后,发送一个nack信号,以通知被控发送器结束数据发送,并释放sda线,以便主控接收器发送一个停止信号p,如图3所示。

  图3 i2c总线上的应答时序

  ⑥插入等待时间。

  如果被控器需要延迟下一个数据字节开始传送的时间,则可以通过把时钟线scl电平拉低并且保持,使主控器进入等待状态。

  一旦被控器释放时钟线,数据传输就得以继续下去,这样就使得被控器得到足够时间转移已经收到的数据字节,或者准备好即将发送的数据字节。

  带有cpu的被控器在对收到的地址字节做出应答之后,需要一定的时间去执行中断服务子程序,来分析或比较地址码,其间就把scl线钳位在低电平上,直到处理妥当后才释放scl线,进而使主控器继续后续数据字节的发送,如图4所示。

  图4 i2c总线上的插入等待时间

  ⑦重启动信号。

  在主控器控制总线期间完成了一次数据通信(发送或接收)之后,如果想继续占用总线再进行一次数据通信(发送或接收),而又不释放总线,就需要利用重启动sr信号时序。

  重启动信号sr既作为前一次数据传输的结束,又作为后一次数据传输的开始。利用重启动信号的优点是,在前后两次通信之间主控器不需要释放总线,这样就不会丢失总线的控制权,即不让其他主器件节点抢占总线。

  ⑧时钟同步。

  如果在某一i2c总线系统中存在两个主器件节点,分别记为主器件1和主器件2,其时钟输出端分别为clk1和cl【0,它们都有控制总线的能力。

  假设在某一

  在i2c总线通信的过程中,参与通信的双方互相之间所传输的信息种类归纳如下。

  主控器向被控器发送的信息种类有:启动信号、停止信号、7位地址码、读/写控制位、10位地址码、数据字节、重启动信号、应答信号、时钟脉冲。

  被控器向主控器发送的信息种类有:应答信号、数据字节、时钟低电平。

  下面对i2c总线通信过程中出现的几种信号状态和时序进行分析。

  ①总线空闲状态。

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

  ②启动信号。

  在时钟线scl保持高电平期间,数据线sda上的电平被拉低(即负跳变),定义为i2c总线总线的启动信号,它标志着一次数据传输的开始。

  启动信号是一种电平跳变时序信号,而不是一个电平信号。启动信号是由主控器主动建立的,在建立该信号之前i2c总线必须处于空闲状态,如图1所示。

  图1 i2c总线上的启动信号和停止信号

  ③停止信号。

  在时钟线scl保持高电平期间,数据线sda被释放,使得sda返回高电平(即正跳变),称为i2c总线的停止信号,它标志着一次数据传输的终止。

  停止信号也是一种电平跳变时序信号,而不是一个电平信号,停止信号也是由主控器主动建立的,建立该信号之后,i2c总线将返回空闲状态。

  ④数据位传送。

  在i2c总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在scl串行时钟的配合下,在sda上逐位地串行传送每一位数据。

  进行数据传送时,在scl呈现高电平期间,sda上的电平必须保持稳定,低电平为数据0,高电平为数据1。

  只有在scl为低电平期间,才允许sda上的电平改变状态。逻辑0的电平为低电压,而逻辑1的电平取决于器件本身的正电源电压vdd(当使用独立电源时),如图2所示。

  图2 i2c总线上的数据位传送

  ⑤应答信号。

  i2c总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。

  应答信号为低电平时,规定为有效应答位(ack简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(nack),一般表示接收器接收该字节没有成功。

  对于反馈有效应答位ack的要求是,接收器在第9个时钟脉冲之前的低电平期间将sda线拉低,并且确保在该时钟的高电平期间为稳定的低电平。

  如果接收器是主控器,则在它收到最后一个字节后,发送一个nack信号,以通知被控发送器结束数据发送,并释放sda线,以便主控接收器发送一个停止信号p,如图3所示。

  图3 i2c总线上的应答时序

  ⑥插入等待时间。

  如果被控器需要延迟下一个数据字节开始传送的时间,则可以通过把时钟线scl电平拉低并且保持,使主控器进入等待状态。

  一旦被控器释放时钟线,数据传输就得以继续下去,这样就使得被控器得到足够时间转移已经收到的数据字节,或者准备好即将发送的数据字节。

  带有cpu的被控器在对收到的地址字节做出应答之后,需要一定的时间去执行中断服务子程序,来分析或比较地址码,其间就把scl线钳位在低电平上,直到处理妥当后才释放scl线,进而使主控器继续后续数据字节的发送,如图4所示。

  图4 i2c总线上的插入等待时间

  ⑦重启动信号。

  在主控器控制总线期间完成了一次数据通信(发送或接收)之后,如果想继续占用总线再进行一次数据通信(发送或接收),而又不释放总线,就需要利用重启动sr信号时序。

  重启动信号sr既作为前一次数据传输的结束,又作为后一次数据传输的开始。利用重启动信号的优点是,在前后两次通信之间主控器不需要释放总线,这样就不会丢失总线的控制权,即不让其他主器件节点抢占总线。

  ⑧时钟同步。

  如果在某一i2c总线系统中存在两个主器件节点,分别记为主器件1和主器件2,其时钟输出端分别为clk1和cl【0,它们都有控制总线的能力。

  假设在某一

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!