一. IIC实验简介
I2C 是最常用的通信接口,众多的传感器都会提供 I2C 接口来和主控相连。 比如摄像头、
加速度计、触摸屏等。
I.MX6U-ALPHA开发板 使用 I2C1 接口连接了一个距离传感器 AP3216C ,本章我们就来学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C ,读取 AP3216C 的传感器数据。
二. I2C协议
1. I2C简介
I2C 是很常见的一种总线协议 , I2C 使用两条线在主控制器和从机之间进行数据通信。
一条是 SCL( 串行时钟线 ) ,另外一条是 SDA( 串行数据线 ) ,这两条数据 线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。
I2C 总线标准模式下速度可以 达到 100Kb/S ,快速模式下可以达到 400Kb/S 。
2. I2C协议物理连接
I2C 是支持多从机的,也就是一个 I2C 控制器下可以挂多个 I2C 从设备,这些不同的 I2C
从设备有不同的器件地址,这样 I2C 主控制器就可以通过 I2C 设备的器件地址访问指定的 I2C
设备了。
一个 I2C 总线连接多个 I2C 设备,如下图:
I2C总线关键几点说明:
(1) I2C 使用两条线:SCL与SDL。这两根线必须要接一个上拉电阻,一般是 4.7K 。
(2) I2C 是支持多从机的。
也就是一个 I2C 控制器下可以挂多个 I2C 从设备。通过从机地址来区分访问哪个从设备。
从机地址一般可以通过看器件手册知道。
3. I2C协议
(1) I2C 协议术语
起始位:
I2C 通信起始标志,通过这个起始位就可以告诉 I2C 从机,“我”要开始进行 I2C 通信了。在 SCL 为高电平的时候, SDA 出现下降沿就表示为起始位。
如下图所示:
停止位:
停止 I2C 通信的标志位,和起始位的功能相反。在 SCL 位高电平的时候,SDA
出现上升沿就表示为停止位。
如下图所示: