时间:2026-05-25 11:50
人气:
作者:admin

上图可以看到,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/AndroidBSP适配、驱动开发、外设调试、系统移植到产品交付的全流程技术支持。有项目合作/技术支持/问题定位/交个朋友,欢迎后台私信~