您现在的位置是:首页 >学无止境 >IMX6ULL裸机篇之I2C相关寄存器与AP3216C传感器网站首页学无止境

IMX6ULL裸机篇之I2C相关寄存器与AP3216C传感器

凌雪舞 2024-07-13 18:01:02
简介IMX6ULL裸机篇之I2C相关寄存器与AP3216C传感器

一.   I2C实验

I2C时钟选择与传输速率

1.  IMX6ULL I2C频率标准模式 100kbit/S,快速模式为 400Kbit/S

2.  时钟源选择 perclk_clk_root=ipg_clk_root=66MHz(由之前的时钟实验章节可以知道是 66MHz)。

二.  I2C 寄存器配置

I2Cx_IFDR寄存器:分频寄存器。

I2Cx_IFDR寄存器设置 I2C频率,bit5:0位是设置频分值。

假如,我们现在需要 100kbit 的速率,那么,66000000/100000=660。可以通过查找与 660接近的数值,经过查找IC位设置位 0X38 0X15时,为 640分频,66000000/640=103.125Kbit

分频值与寄存器所设置的值对应表,如下所示(在《IMX6ULL参考手册》中的 I2C章节):

I2Cx_I2CR寄存器:

bit7 为I2C使能位,置1使能I2C。

bit5 为主从模式选择位,为0表示从机,为1表示主机。

Bit4 为发送/接收设置位,为0的时候是接收,为1的时候是发送。

I2SR寄存器

bit7:传输完成位,为 0 表示正在发送,为 1 表示发送完成。

Bit5:I2C忙闲位,为0表示 I2C总线空闲,为 1表示 I2C总线忙。

Bit0:是读确认位,也就是ACK信号

I2DR寄存器:  数据寄存器。

三.  AP3216C 传感器

AP3216C传感器的手册在  " 阿尔法Linux开发板(A盘)-基础资料硬件资料芯片资料" 目录下。

参考 "AP3216C.pdf " 文档。可以了解传感器的如下信息:

AP3216C传感器 是一个三合一的环境光传感器,ALS+PS+IRLED。

ALS是环境光,PS是接近传感器,IR是红外LED灯。I2C接口最高400Kbit/S的频率。

AP3216C有如下特点:

(1)   AP3216C的从机地址位 0X1E。

(2)   ALS(环境光)是16位输出。PS(接近传感器)是 10-bit输出。IR(红外LED灯)也是10-bit

(3) 0X0A是IR Ddata low。Bit7为0的时候表示IR和PS数据有效,为1的时候IR和PS数据无效。Bit1:0是IR的低2位。0X0B是 IR Data high,bit7:0是高字节。与0X0A一起组成 10bit的数据。

(4)  0X0C和 0X0D分别为 ALS的低 8位和高 8位。

(5)  0X0E是 PS 的 bit3:0是低4位数据,0X0F的 bit5:0 是高6位数据。也就是10位。

(6)  0X00 是系统配置寄存器。bit2:0设置 AP3216C开启哪些传感器。

我们需要设置为 011,也就是0x3,表示开始ALS+PS+IR。

系统配置寄存器设置为 011后的每个传感器的参数如下:

如果写代码读取 AP3216C的传感器参数值时,我们就是定时去读取。从以上参数可以看出,我们读取参数的时间周期肯定是要大于 112.5ms

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。