一、I2C简介
最近有一个项目需要触摸屏,用I2C接口。我就用了IO模拟I2C,调试了一周顺利调试出来了。我相信工作多年的工程师肯定对I2C有一定的了解,所以我就不写I2C协议有关的术语。毕竟写这边文章是为了记录我学习6ULL的。
二、寄存器
I.MX6U提供了4个I2C外设,通过这个四个I2C外设即可完成与I2C从器件进行通讯,I.MX6U的I2X外设特性如下:
①、与标准I2C总线兼容。
②、 多主机运行。
③、 软件可编程的64中不同的串行时钟序列。
④、 软件可选择的应答位。
⑤、 开始/结束信号生成和检测。
⑥、 重复开始信号生成。
⑦、 确认位生成。
⑧、总线忙检查。
①寄存器I2Cx_IADR(x=1~4)
ADR(bit7:1):是设备地址
②寄存器I2Cx_IFDR
IC(bit5:0):用来设置I2C的波特率。
image.png
③寄存器I2Cx_I2CR
IEN(bit7):I2C使能位,为1的时候使能I2C,为0的时候关闭I2C。
IIEN(bit6):I2C中断使能位,为1的时候使能I2C中断,为0 的时候关闭I2C中断。
MSTA(bit5):主从模式选择位,设置IIC工作在主模式还是从模式,为1的时候工作在主模式,为0的时候工作在从模式。
MTX(bit4):传输方向选择位,用来设置时进行发送还是接收,为0的时候是接收,为1的时候是发送。
TXAK(bit3):传输应答位使能,为0的话发送ACK信号,为1的话发送NO ACK信号
RSTA(bit2):重复开始信号,为1的话产生一个重复开始信号。
④寄存器I2Cx_I2SR
ICF(bit7):数据传输状态为,为0的时候表示数据正在传输,为1的时候表示数据传输完成。
IASS(bit6):当为1的时候表示I2C地址,也就是I2Cx_IADR寄存器中的地址是从设备地址。
IBB(bit5):I2C总线忙标志位,当为0的时候表示I2C总线空闲,为1的时候表示I2C总线忙。
IAL(bit4):仲裁丢失为,为1的时候表示发生仲裁丢失。
SRW(bit3):从机读写状态位,当I2C作为从机的时候使用,此用来表明主机发送给从机的是读还是写命令。为0的时候表示主机要向从机写数据,为1的时候表示主机要从从机读取数据。
IIF(bit1):I2C中断挂起标志位,当为1的时候表示有中断挂起,次位需要软件清零。
RXAK(bit0):应答信号标志位,为0的时候表示接收到ACK应答号,为1的话表示检测到NO ACK信号。
⑤寄存器I2Cx_I2DR
这是I2C的数据寄存器,次寄存器只有低8位有效。
三、 传感器(AP3216C)
①AP3216C是支持环境光强度(ALS)、接近距离(PS)和红外线强度(IR)这个三个环境参数检测。
②AP3216C的特点:
a.I2C接口,快速模式下波特率可以到400Kbit/S
b.多重工作模式选择:ALS、PS+IR、 ALS+PS+IR、PD等等
c.内建温度补充电路
d.宽工作温度范围(-30℃~+80℃)
e.超小封装,4.1mmx2.4mmx1.35mm
f.环境光传感器具有16位分辨率。
g.接近传你感器和红外传感器具有10位分辨率。
③寄存器
AP3216的设备地址为0X1E
image.png
四、写代码&&下载测试
没有开发板,自己编译了
image.png







网友评论