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)
上一篇:I2C总线的写操作的流程
上一篇:I2C总线与串行EEPROM