裸体女模图片

主题 : 数字接口——I2C 总线
级别: 管理员
UID: 1
精华: 0
发帖: 53
威望: 56 点
铜币: 65 枚
贡献值: 0 点
好评度: 0 点
在线时间: 12(时)
注册时间: 2009-06-03
最后登录: 2011-11-23
楼主  发表于: 2009-12-04 22:49

数字接口——I2C 总线

  数字接口——I2C 总线
  了解内部集成电路总线(一种基本的低成本互联方案)的连接和格式。
  内置集成电路 (I2C) 总线是一种单端、多主控双线总线,适合在半双工模式下进行高效的内部集成电路通信。该总线使用漏极开路技术,因此通过电阻器连接到 VDD 时就需要两根信号线,分别为串行数据 (SDA) 线和串行时钟线 (SCL),如图 1 所示。



  图 1 I2C 总线
  将线路拉低至接地认为是逻辑 0,而使线路浮置则为逻辑 1。通常将这用作通道接入方式。当 SCL 为低电平时,必将发生逻辑状态变化;当 SSL 为高电平时,若发生变化则认为是 START 和 STOP 条件。尽管系统允许提供更高或更低的电压,但典型的电源电压为 3.3V 和 5V。
  I2C 通信采用 7 位地址空间(具有 16 个预留地址),因此在同一总线上,理论上最多可以和 112 个节点通信。但实际上,节点数会受到总线上规定的总体总电容 (400 pF) 限制,从而将通信距离限制为几米。规定的信号传输速率为 100 kbit/s(标准模式)、400 kbit/s(快速模式)、1 Mbit/s(快速模式Plus,FM+)和 3.4 Mbit/s(高速模式)。
  总线上的节点有主从之分。主节点负责发布时钟和从节点地址,并且还开始和结束数据处理。从节点负责接收时钟和地址,并响应来自主节点的请求。图 2 显示了主从节点之间典型的数据传送示例。



  图 2 完整的数据传输时序图
  主节点通过创建一个 START 条件发布一个数据处理,紧接着发布希望与其进行通信的从节点的 7 位地址。随后发送一个信号读写位,表示主节点是否愿意写入到从节点 (0) 或者自从节点读取 (1)。接下来,主节点将释放 SDA 线,以允许从节点对数据接收作出应答。
  在第 9 个 SCL 时钟脉冲的整个高电平期间,从节点通过将 SDA 拉至低电平以回应一个应答位 (ACK),之后主节点一直处于传输或接收模式(根据发送的读写位而定),而从节点则一直处于对应的互补模式(分别为接收或传输)。
  发送地址和 8 位数据字节时首先发送最高位 (MSB)。当 SCL 为高电平时,通过 SDA 由高电平向低电平跳变来指示 START 位。而当 SCL 为高电平时,则通过 SDA 由低电平向高电平跳变来产生 STOP 条件。
  当主节点写入到从节点时,它会在从节点发送 ACK 位时重复发送一个字节。在这种情况下,主节点将处于主传输模式,而从节点则处于从接收模式。当主节点自从节点读取时,它会重复接收自从节点的字节,同时对每个字节的接收作出应答 (ACK),但最后一个字节除外,请参见图 3。这种情况下,主节点将处于主接收模式,而从节点则处于从传输模式。
  主节点将以 STOP 位结束传输,或者可能为进行下一步传输而发送另一个 START 位以保持总线控制。



  图 3 数据传输期间传输/接收模式的变化情况
  当写入到从节点时,主节点将主要以传输模式运行,并且只有自从节点接收应答时才会更改为接收模式。
  当自从节点读取时,主节点将以传输模式启动,然后在发送 READ 请求(读写位=1)到从节点后会更改为接收模式。从节点将一直处于对应的互补模式,直至结束该任务。
  请注意,主节点将通过在最后接收的字节后面跟随一个无应答 (NACK) 来结束读取序列。此步骤会复位从状态机,并允许主节点发送 STOP 命令。