一、IIC 协议讲解
- 1、ALPHA开发板上有个 AP3216C,是一个 IIC 接口的环境光传感器。测量光亮度和测距。AP3216C 连接到了 IIC1 上.
IIC1_SCL:使用的是 UART4_TXD 这个 IO,复用为 ALT2 时。
IIC1_SDA:使用的是 UART4_RXD 这个 IO,复用为 ALT2 时。 - 2、IIC 有 SCL 和 两根线,都必修要接上拉电阻到 VCC。一般是 4.7K 电阻。
- 3、IIC 总线支持多从机,通过从机地址来区分、访问不同的从机。
二、6ULL IIC 接口详解
- 1、6ULL 的 IIC 数据传输频率:标准模式下 100 kbit/s;快速模式下 400 kbit/s。
- 2、时钟源:本次实验选择 PER_CLK_ROOT = 66 MHz。
- 3、IFDR 寄存器设置 IIC频率,bit5:0 设置分频值,假如现在需要 100kbit/s 的速率,那么分频因子为 660。经过查表,IC 位设置为 0x38 时为 640 分频,得到大约103.125 kbit/s。
- 4、I2CR 寄存器,
bit7 为 IIC 使能位,置1 使能 IIC
bit5 为主从模式选择,为0表示从模式,为1表示主机
bit4 为发送/接收设置位,为0接收,为1发送 - 5、I2SR 寄存器 bit7 为传输完成寄存器,为 0 表示正在传送,为 1 表示传送完成。bit5 为1 表示 IIC 总线忙。bit0 应答位,为0表示应答信号。
- 6、I2C_I2DR 寄存器 bit7 ~ 0。
AP3216C 简介
- 1、AP3216C 是一个三合一的环境光传感器,ALS + PS + IRLED。
ALS 环境光
PS 接近传感器
IRLED 红外LED灯
IIC 接口最高 400 kbit/s - 2、环境光 ALS 是 16 位输出。
- 3、接近传感器 PS,10bit 输出。
- 4、IRLED 也是10 位输出。
- 5、AP3216C 的从机地址为 0x1e。
- 6、0x0a 是 IR Data Low。bit7 为 0 表示 IR 和 PS 数据有效。否则数据无效。bit1 ~ 0 是 IR 的低两位。
- 7、0x0b 是 IR Data High。bit7 ~ 0 是高字节。与 0x0a一起组成 10bit 的数据.
- 8、0x0c 和 0x0d 分别为ALS的低8位和高8位。
- 9、0x0e 的 bit3 ~ 0 是低4 位数据,0x0f 的 bit5 ~ 0 是高6位数据。构成ps的10位数据。
- 10、0x00 是系统配置寄存器,bit2 ~ 0,设置 AP3216C 开启哪些传感器。设置为3表示开启 ALS + PS + IR.
通过假读来清空 I2C_DR 寄存器,触发数据传送。