这篇文章主要是记录一下LTR-303的代码,以及在使用中遇到问题
C代码开发
编写代码之前,一定是要先看数据手册的,可以知道硬件电路如何搭建,使用的是什么接口,时序是怎样的,最重要的是寄存器说明.寄存器定义可以看上一篇文章
根据数据手册可以知道,使用的是IIC驱动,那么底层的驱动代码容易了,可以使用软件模拟,基本可以适配大部分的主控,
有特殊要求或者自带IIC驱动的,可以使用硬件IIC
这里就不贴出IIC的驱动代码了
光照值获取
根据数据手册,可以知道光照值有两个通道,这两个通道如何计算出光照值尼?
在一开始我也比较懵逼,怎么又两个通道,不知道选择哪一个通道,后来找到了一份文档,文档说其中CH0可以检测可见光与红外光,CH1只能检测红外光,
这份文档说,光照值需要通过4个参数进行获取,分别是CH0、CH1、GAIN、INT。
符号 | 含义 |
---|---|
CH0 | 通道一数据 |
CH1 | 通道二数据 |
GAIN | LTR303 增益(参考寄存器0x80) |
INT | LTR303积分时间(参考寄存器0x85) |
具体的算法如下
1 | RATIO = CH1/(CH0+CH1) |
ALS_GAIN如下图
ALS_INT如下图,根据参数与数据手册进行等比例转换,本人直接默认100ms一直使用
使用中需要的问题
- 为了获取最高的分辨率,需要自动检测并切换增益
- 外挂菲涅尔透镜的,需要加入校准参数,并且根据校准参数,分辨率也会变化