用是ADC1_IN8 GPIO1_IO08,在文件里i.MX_Linux_Reference_Manual.pdf
• ADC1_IN0: Analog channel 1 input 0
• ADC1_IN1: Analog channel 1 input 1
• ADC1_IN2: Analog channel 1 input 2
• ADC1_IN3: Analog channel 1 input 3
• ADC2_IN0: Analog channel 2 input 0
• ADC2_IN1: Analog channel 2 input 1
• ADC2_IN2: Analog channel 2 input 2
• ADC2_IN3: Analog channel 2 input 3
只有8路,编程接口
/sys/devices/soc0/soc.1/2200000.aips-bus/2280000.adc/iio:device0:
/sys/devices/soc0/soc.1/2200000.aips-bus/2284000.adc/iio:device1:
不知该如何设置配置?
Hello xinjian,
(1)Reference Manual解释
在I.MX6ULRM中的第177页列出了ADC input引脚和CPU PAD之间的对应关系,它说明CPU内部有2个ADC控制器:ADC1和ADC2。每个ADC模块最多支持10路(IN0~IN9)模拟输入,ADC1和ADC2两个模块的信号共用CPU的GPIO1_IO00~GPIO1_9这10个引脚。
(2)i.MX_Linux_Reference_Manual.pdf中列出来内容:
• ADC1_IN0: Analog channel 1 input 0
• ADC1_IN1: Analog channel 1 input 1
• ADC1_IN2: Analog channel 1 input 2
• ADC1_IN3: Analog channel 1 input 3
• ADC2_IN0: Analog channel 2 input 0
• ADC2_IN1: Analog channel 2 input 1
• ADC2_IN2: Analog channel 2 input 2
• ADC2_IN3: Analog channel 2 input 3
表示对于ADC1模块,支持0~3四个输入;对于ADC2也是支持0~3四个通道的输入。说明驱动支持8路ADC输入。但是,有ADC1和ADC2的input通道都是对应地复用GPIO1_0~GPIO3,那么,只能同时使用4个通道的模拟输入。
(3)软件上配置
你需要在dts中:
----(如果你想使用ADC1)把GPIO1_00~GPIO1_03复用为ADC1对应的4个通道信号输入;
----(如果你想使用ADC2)把GPIO1_00~GPIO1_03复用为ADC1对应的4个通道信号输入;
BSP和驱动的编写,是在I.MX6UL开发板硬件基础上做的,所以i.MX_Linux_Reference_Manual.pdf中列出来的ADC四个通道,如果使用默认BSP和驱动是没有问题的。
(4)额外说明
在I.MX6ULRM手册中,说明了ADC1和ADC2每个都支持10路input,所以,如果你要使用的话,需要对BSP中的复用进行调整,把你用到的都复用出来。
伟东