努力尽今夕,少年犹可夸。这篇文章主要讲述基于android(rk3288)的ADC光敏驱动注意事项相关的知识,希望能为你提供帮助。
光敏传感器实际上就是一个adc采集传感器,驱动的作用就是读取adc的值,其中涉及两个方面:
1、dts设备树对应的配置项
一般来说,rk中已经封装好了标准adc的dts参数属性,我们要做的就是添加自己的adc通道,并引用标准接口即可,不同平台,标准dts中的adc节点名有所不同,其配置属性基本一样。
例如:
1)adc: adc@ff100000 {
compatible = "rockchip,saradc";
......
};
2)saradc: saradc@ff100000 {
compatible = "rockchip,saradc";
......
};
添加自己的dts通道:(在系统对应的dts中添加)
adc_name{
//自定义节点名
compatible = "adc_name";
//匹配驱动的属性字符串,可以与节点名不同
io-channels = <
&
saradc(&
adc) 0>
;
//设定我们需要读取的adc通道,参考硬件原理图,其中&
表示应用系统封装的标准dts配置,需要系统标准的adc节点名,保证与本系统的一致,这里我们设定的为adc通道0
status = "okay";
//设备节点状态
};
2、驱动里面adc通道的获取和数据上报
同样,在系统内核中已经帮我们封装好了adc通道获取和读取的函数接口,我们只需要配置参数即可,这里主要注意adc通道的获取与读取其中的数据
系统将adc统一封装在
struct
iio_channel
结构体中,我们需要对其初始化和调用
1)adc_init(struct platform_device *pdev, struct struct iio_channel *chan)
//其中参数分别表示驱动注册的平台设备和定义的adc通道结构体
{
chan = iio_channel_get(&
pdev->
dev, NULL);
//获取adc通道
}
2)adc_read(struct struct iio_channel *chan)
//其中参数为上面的初始化得到的adc通道结构体chan
{
int ret;
ret = iio_read_channel_raw(chan, &
val);
//读取adc通道的原始值,后面根据实际需求进行处理
}
上报采用系统的接口:
input_report_abs(input, ABS_MISC, value);
//参数说明,分别为注册的设备,上报事件类型,上报数据值
【基于android(rk3288)的ADC光敏驱动注意事项】-->
input_event();
//上报event事件
推荐阅读
- appium和weditor元素定位冲突
- Appium学习
- ##Django中Application labels aren't unique解决方法##
- 2020年GitHub 上那些优秀Android开源库,这里是Top10!
- 2020,6招玩转 Appium 自动化测试
- C#AutoMapper 使用手册
- AndroidManifest 合并出错
- 基于iio的ADC驱动(android)
- 安卓模拟器抓包