跳过正文

GPADC代替Lsensor实现自动背光调试总结

·71 字·
Huang JY
作者
Huang JY
记录全志 SoC、驱动开发、显示调试与智能硬件项目实践
目录

本文记录一次 A133 平台使用GPADC作为Lsensor实现自动背光的调试过程。

1. 调试背景
#

项目需要实现自动背光要求,鉴于成本,使用了GPADC进行替代光感,主控获取GPADC具体电压来粗劣判断外部光亮强度。

功能链路如下:

具体原理图如下:

image-20260729135838254
DDR-PARA-SEL-ADC连接到主控GPADC1,可以通过R1355来调节灵敏度

image-20260729140550676
GPADC支持输入电压范围为0~1.8V

2. 底层配置
#

2.1移植驱动
#

当前WSDK-A133_AndroidR_v2.3找不到GPADC(sunxi_gpadc.c)驱动,所以需要在A133其他SDk移植GPADC驱动。

2.2 自动加载驱动
#

配置自动加载驱动(sensor_modules.cfg):

image-20260729143713212
​ID_L代表这个为Lsensor驱动

2.3 添加设备书节点
#

添加设备节点:

image-20260729141445619
image-20260729141455891

设备树具体含义

image-20260729141703771
可以知道1——>01(二进制) 代表使用GPADC0 2——>10(二进制) 代表使用GPADC1

使用cat /proc/bus/input/devices验证驱动通路:

image-20260729142815931
通路配置已经完成了,但是数据上报功能依旧是异常的,默认只支持key上报,所以我们要在sunxi_gpadc基础上改造驱动:

image-20260729143231980
驱动上报的数据类型是ABS_MISC。

使用getevent -l 验证数据上报是否正确:

image-20260729143422915

3. 适配HAL层
#

3.1添加设备信息
#

image-20260729143837099

3.2添加支持light的feature
#

image-20260729144244516

使用pm list features | grep light验证:

image-20260729144304809

使用dumpsys sensorservice验证HAL层是否正常:

image-20260729161548095
可以看到sunxi GPADC,初步看hal层是没问题的

继续看有无数据上报

image-20260729161823856
注意要开启自动背光或者使用第三方软件获取数据,不然是没有数据显示的。

到这里HAL层也正常了

4. 修改映射表
#

image-20260729162110606

image-20260729162023585
config_autoBrightnessDisplayValuesNits为亮度,config_autoBrightnessLevels为HAL上报的数据。

需要注意:config_autoBrightnessDisplayValuesNits有16列,config_autoBrightnessLevels有15列,所以不是一一对应的关系,而是环境亮度[0,20]->背光[0,50],并且Andorid 11背光调节带有用户偏好机制,不是简单的线性调节。

5.问题
#

5.1 自动背光调节响应速度慢
#

默认响应速度为较长,参考修改:

image-20260729162605675
将响应速度调整为2秒