新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Coo1Runner-Ⅱ器件I2C接口协议

Coo1Runner-Ⅱ器件I2C接口协议

作者:时间:2011-12-22来源:网络收藏
  这里将说明I2C的主要通信协议,更详细的说明和时序图请参考I2C规范文档。
  I2C总线包括两个信号线,即SDA和SCL。所有通信都发生在这两个信号线上,连接到同一条总线上的设备数目受限于最大的总线电容。SDA和SCL都是双向的,通过上拉电阻连接到系统电源。总线空闲时,这两个总线保持高电平。在总线上的I2C设备的输出数据阶段,必须是漏极开路或是集电极开路以实现线与功能。

  每个设备都有唯一的地址,可以工作在发送模式或接收状态,也可以被配置为主设备或从设务。方设备启动一次总线数据传输,并产生时钟信号,总线上任何其他设备都会被视为从设备。I2C协议同时还具有仲裁机制,如果多台主设备同时申请控制总线,只有一台设备成功获取总线而不会丢失数据。

  一次数据传输开始于一个START命令,结束于一个STOP命令。SDA在时钟SOL低电平时变化,高电平时保持稳定。START被定义为当SOL为高电平时,SDA由高到低的跳变;STOP被定义为当SOL为高时,SDA由低到高的跳变,如图所示。

I2C总线的—次数据传输



  如图 I2C总线的—次数据传输

  每个数据包包含8位数据,后跟一个ACK位。因此一次数据传输共需要9个SOL,首先传输MSB。发送设备在ACK周期释放SDA,接收设备必须在过程中驱动SDA为低。如果从设备没有将SDA驱动为低,则表明其不能够接收数据,主设备将产生一个STOP状态以退出本次传输;如果主设备没有将SDA驱动为低,则表明从设备发送的是最后一个字节。标准I2C通信包含4部分,即起始位、从地址、数据传输和停止位。I2C协议规定了两种地址格式,即7位和10位,本设计为7位。起始位之后是7位地址,第8位是读写位,“0”为写;“1”为读。仅仅与地址相匹配的从设备在第9个SOL发一个ACK到SDA,将SDA拉低。

  一旦地址匹配成功,主从之间数据传输就会建立,读/写位决定数据传输方向。主设备发一个STOP命令终止一次传输。然而,主设备在没有发出STOP之前也可能产生一个START信号,此情况被定义为重复开始(Repeat START)。


评论


相关推荐

技术专区

关闭