IIC总线协议

关于IIC的其他说明已在《STM32总线实验》中有过介绍。

一、知识点

  • 1、IIC是一种串行,同步,非差分,低速率的总线连接方式。仅有两根线构成SCK,一根时钟线SDA,用于同步收发双方之间的通信频率;一根数据线,用于传输数据。
  • 2、支持一对多的挂载多个设备。一个主设备对应多个从设备,由主设备来决定某一时刻与哪个从设备进行通信。
  • 3、每一个I2C从设备在通信中都有一个I2C从设备地址,这个地址是从设备本身的固有属性。主机通过设备地址来确定设备。这个地址为7位数,有的设备这个地址不可更改和设置,这就决定了相同的设备类型在整个总线上只允许有一个;而有的设备的这个地址可以通过引脚高低电平确定,因此可以通过设置不同的地址而在同一总线上挂载多个相同的设备。例如EEPROM设备24C02,它的从设备地址为1010ABC,其中ABC三位可以通过引脚电平设置,因此在同一个IIC总线中,可以挂载的24C02设备最多为8个。
  • 4、I2C总线只有两种状态,即空闲和忙碌。当总线空闲时,这两条线都是空闲的。
  • 5、关于起始位(在 SCL 线是高电平时 SDA 线从高电平向低电平切换),停止位(当 SCL 是高电平时 SDA 线由低电平向高电平切换)以及数据传输的定义可看《STM32总线实验》中有过的介绍。
  • 6、在第一次传输前,主设备在总线上发送从设备地址(7位),同时发送一位数据0/1,表示要向从设备进行读或者写操作。从设备根据主设备广播的地址进行匹配,配对的从设备需要对这次传输进行找到总设备进行响应,响应的方式为将SDA上的高电平拉低。
  • 7、每一个通信周期的发起和结束都是由主设备来决定的,从设备只有被动的响应主设备,没法自己自发的去做任何事情。
  • 8、I2C通信基本的数据单元为字节,每传输一个字节后,需要传输一个ACK表示响应。这就是所谓的应答机制。
  • 9、I2C的控制器可以用来模拟产生时序,将软件协议用硬件来模拟生成,时钟来自于系统时钟,控制器内部可进行分频操作。
  • 10、通信频率的确定:主设备和从设备之间有最高的通信速率限制,属于每个芯片的固有属性,实际编程时应小于设备的最低频率。