Bootstrap

【ARM】Exynos 4412 IIC(I2C)总线详解

概述


Exynos 4412支持四路多主机I2C串行总线,为了使连接总线上主机和外设之间实现数据传输,使用了一条SDA(Serial Data Line)线和一条SCL(Serial Clock Line)线,这两条都支持双向传输。

当I2C总线处于多主机模式时,多个Exynos 4412处理器都可以与从设备收发数据。I2C总线上的主设备负责启动和结束一次数据传输。Exynos 4412的I2C总线使用标准的总线仲裁规程来实现多主机、多从机的数据传输。

要实现对I2C总线的控制,你需要修改下面这些寄存器的值:

  • 控制寄存器 —— I2CCON
  • 控制/状态寄存器 —— I2CSTAT
  • 发送/接收移位寄存器 —— I2CDS
  • 地址寄存器 —— I2CADDR

当I2C总线处于空闲状态时,SCL和SDA都是高电平。当SCL为高电平时,SDA从高电平变为低电平表示一个开始信号;当SCL为高电平时,SDA从低电平变为高电平表示一个结束信号。

开始信号和结束信号由主设备负责生成。当发出起始信号后,I2CDS的前七位将作为从设备的地址被发送到SDA线上。这个地址决定了主设备选择了总线上的哪一个从设备。I2CDS的第八位标识主设备是要读取数据还是写入数据。

每一次数据传输放到SDA总线上的数据必须是一个字节,即8位。至于传送多少个字节则没有限制。数据发送时,总是从数据的最高位MSB(Most Significant Bit)开始发送。在每一个字节的最后,也就是第九个时钟周期,将紧跟一个ACK位,由接收方发出,表示数据已收到。

特征


  • 9通道、多主机、多从机的总线接口。&#x
;