【得捷“芯”体验】基于环境光传感器Vishay VEML4031X00的背光控制器(一)

一、VEML4031X00介绍

VEML4031X00 是一款高精度数字式环境光传感器,具备 16 位分辨率,采用 4.38 毫米 ×1.45 毫米的微型不透明封装。该传感器内置高灵敏度光电二极管、低噪声放大器和 16 位模数(A/D)转换器,同时支持易用的 I²C 总线通信接口,并额外具备中断功能。

VEML4031X00 传感器的主要应用领域为

・显示屏背光控制

・信息娱乐系统

・后视镜调光

・车内照明控制系统

・抬头显示器

下面是VEML4031X00的基本特性:

从上面的表中可以明显看出来,VEML4031X00在关断状态下的电流非常低(0.5uA);最小分辨率为0.0026lx/step。

VEML4031X00传感器共有4个引脚,分别为GND, SDA,SCL,VDD。也就是说所有对传感器的访问(包括设置和数据读取)都必须通过I2C通信来完成。

第 1 列 第 2 列 第 3 列
引脚编号 引脚名称 功能
1 GND 电源负极
2 SDA I2C数据线
3 SCL I2C时钟线
4 VDD 电源正极

二、I2C通信

VEML4031X00 拥有 18 个寄存器地址,这些寄存器负责操作控制、参数设置与结果缓存。所有寄存器均可通过 I2C 通信访问。支持I2C标准模式(100kHz)和快速模式(400kHz)。

VEML4031X00的I2C地址固定为0x29,同时还提供了另一个地址0x10(ORDERING CODE为VEML40311X00)。本次购买的是VEML4031X00,所以后续编程使用I2C地址0x29来进行通信。I2C的读写控制流程如下图所示:

从上面的读写流程可以看出,可以一次读取或写入多个寄存器,也就是寄存器地址可以自动增加。这个特性对后续的编程/读取多字节非常有用。

接下来,让我们来看看VEML4031X00的寄存器。毕竟,MCU与传感器之间所有的交互都是通过对寄存器的读写来实现的。

从上表能够知道,VEML4031X00的寄存器可以分为两种,一种是可读写的寄存器,另一种是只读的寄存器。0x07及之前的寄存器为读写寄存器,之后的寄存器为只读寄存器。

ALS_CONF_0(寄存器0x00)和ALS_CONF_1(寄存器0x01)作为主要的配置寄存器,用来配置积分时间,测量模式,使能中断功能,传感器的shutdown/run和中断持续计数器。

寄存器0x04~0x07用来设置ALS通道的高阈值和低阈值。

寄存器0x10~0x11用来存放ALS环境光转换结果。【注意:这两个寄存器读出来的并不是是实际的光照强度,而是cnt值】。如果需要换算成实际的光照强度值(lx),还需要乘以分辨率。而分辨率也不是一个固定值,需要根据增益、PD值和积分时间来综合来确定。

寄存器0x12~0x13用来存放IR转换结果。

寄存器0x14~0x15用来存放VEML4031X00的ID CODE,固定为0x01。

寄存器0x16为保留的寄存器,并未使用。

寄存器0x17用来存放中断事件标志。

对于寄存器的具体bit的描述,请参考VEML4031X00传感器的技术手册,这里不再赘述。

veml4031x00.pdf (247.8 KB)