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

I2C总线的基本操作

发布时间:2008/11/22 0:00:00 访问次数:918

  i2c总线上只具有sol(时钟)和sda(数据)2根信号线。如果是单纯的串行传输,一旦因为某种原因造成引脚的偏差,则可能会造成不能区分总线上传输的是数据还是地址信息的后果。解决上述问题的简单办法就是附加独立于总线的reset(复位)信号,由主机控制该信号。因为i2c至少利用2根线进行所有的操作,因此在数据传输时,通常当scl为低电平时,设置下一个数据;当sda变化后,sci为高电平,这可以解释为一连串操作的开始/结束。

  1. 起始条件

  始条件表示一系列操作的开始。图1表示起始条件以及随后数据传输的开始操作。在i2c总线的空闲状态下,sda及scl通过上拉电阻都为高电平。在这样的状态下,如果scl仍保持高电平,而sda变为低电平,则成为开始指令。

  图1 i2c总线的起始条件

  由于该状态并不出现于地址及数据的发送与接收过程中,因此,即使在途中发生异常,只要检测出该状态,初始化内部的状态机,就可以使其恢复。

  2. 结束条件

  在一系列操作的最后是结束条件。结束条件如图2所示。当sol为高电平时,一旦sda由低电平变化为高电平,即成为结束条件,主机与器件之间的通信将停止,器件恢复为空闲状态。进行写操作时的结束状态是开始进行eeprom内部单元写操作的指示标志。

  图2 i2c总线的结束条件

  结束前所传输的数据是ack/noack的状态位,如果是ack,则该状态位为低电平。但如果发生某种错误时,则表示为noack的高电平。读操作时的最后字节是主机向器件返回noˉack信息,所以sda为高电平。这样就不能形成结束条件所需要的sda的上升沿,因此在结束之前需要加入哑元“0”数据位作为解决办法。

  在最终数据的ack noack之后,主机通过下述的流程,形成结束条件,如下所述:

  ①scl变为低电平;

  ②sda变为低电平;

  ③sol变为高电平(发送哑元数据);

  ④sda变为高电平(结束条件)。

  3. 数据传输

  数据传输的流程如图3所示。除去开始与结束条件,在传输包含地址指定等数据时,能够使sda发生变化的条件只能是在sol为低电平时。因此,总线操作以如下的步骤进行:

  ①scl变为低电平;

  ②为sda设置数据(主机或者器件);

  ③scl变为高电平。

  进行数据读操作时,主机在sol恢复为高电平之前读取数据。

图3 i2c总线的数据传输

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



  i2c总线上只具有sol(时钟)和sda(数据)2根信号线。如果是单纯的串行传输,一旦因为某种原因造成引脚的偏差,则可能会造成不能区分总线上传输的是数据还是地址信息的后果。解决上述问题的简单办法就是附加独立于总线的reset(复位)信号,由主机控制该信号。因为i2c至少利用2根线进行所有的操作,因此在数据传输时,通常当scl为低电平时,设置下一个数据;当sda变化后,sci为高电平,这可以解释为一连串操作的开始/结束。

  1. 起始条件

  始条件表示一系列操作的开始。图1表示起始条件以及随后数据传输的开始操作。在i2c总线的空闲状态下,sda及scl通过上拉电阻都为高电平。在这样的状态下,如果scl仍保持高电平,而sda变为低电平,则成为开始指令。

  图1 i2c总线的起始条件

  由于该状态并不出现于地址及数据的发送与接收过程中,因此,即使在途中发生异常,只要检测出该状态,初始化内部的状态机,就可以使其恢复。

  2. 结束条件

  在一系列操作的最后是结束条件。结束条件如图2所示。当sol为高电平时,一旦sda由低电平变化为高电平,即成为结束条件,主机与器件之间的通信将停止,器件恢复为空闲状态。进行写操作时的结束状态是开始进行eeprom内部单元写操作的指示标志。

  图2 i2c总线的结束条件

  结束前所传输的数据是ack/noack的状态位,如果是ack,则该状态位为低电平。但如果发生某种错误时,则表示为noack的高电平。读操作时的最后字节是主机向器件返回noˉack信息,所以sda为高电平。这样就不能形成结束条件所需要的sda的上升沿,因此在结束之前需要加入哑元“0”数据位作为解决办法。

  在最终数据的ack noack之后,主机通过下述的流程,形成结束条件,如下所述:

  ①scl变为低电平;

  ②sda变为低电平;

  ③sol变为高电平(发送哑元数据);

  ④sda变为高电平(结束条件)。

  3. 数据传输

  数据传输的流程如图3所示。除去开始与结束条件,在传输包含地址指定等数据时,能够使sda发生变化的条件只能是在sol为低电平时。因此,总线操作以如下的步骤进行:

  ①scl变为低电平;

  ②为sda设置数据(主机或者器件);

  ③scl变为高电平。

  进行数据读操作时,主机在sol恢复为高电平之前读取数据。

图3 i2c总线的数据传输

  欢迎转载,信息来源维库电子市场网(www.dzsc.com)



相关IC型号

热门点击

 

推荐技术资料

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


 复制成功!