
上图可以看到,iio子系统只提供了in_voltage0_raw~in_voltage3_raw 四路ADC电压检测通道,但是实际上 dts配置了 12 路ADC,这就导致ADC4-11 通道无法通过 in_voltageX_raw 来获取电压数据。
【问题分析】:没什么好分析的,直接看源码吧。不看不知道,一看就知道。果然有几路通道被注释掉了。
【问题解决】:在驱动源码中,找到类似iio_channels[]数组,在其中添加相应所需通道。
(bsp/drivers/gpadc/sunxi_gpadc.c)


为什么RK平台不会存在类似的情况?
查看 RK 的ADC驱动源码发现,RK 的驱动默认已经支持 SoC 芯片所支持的最大ADC通道数。以RK3588 为例,该 SoC 芯片最大支持8路 ADC 输入,其驱动源码ADC通道数默认为8通道,驱动源码摘录如下(drivers/iio/adc/rockchip_saradc.c)。

(完)
本人专注 Linux 嵌入式全栈开发 ,可提供从硬件方案评估与设计、 Linux/Android BSP 适配、驱动开发、外设调试、系统移植到产品交付的全流程技术支持。 有项目合作 / 技术支持 / 问题定位 / 交个朋友,欢迎后台私信~
全部0条评论
快来发表一下你的评论吧 !