本帖最后由 apple_9938 于 2018-7-7 15:07 编辑
1、加载交叉编译工具到当前shell: source /opt/myir-imx-fb/4.1.15-2.0.1/environment-setup-cortexa7hf-neon-poky-linux-gnueabi
2、参考《imx6ul设备树修改说明》,在设备树中添加ad接口,然后在源码目录下生产设备树文件: make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- dtbs
3、通过sftp 上传编译好的dtp文件 mys-imx6ull-14✖14-evk-gpmi-weim.dtb
4、覆盖原dtb文件 dd if=mys-imx6ull-14✖14-evk-gpmi-weim.dtb of=/dev/mtdblock2 ,然后reboot
5、在cd /sys/bus/iio/devices/iio\:device0/ 目录下只有 in_voltage0_raw和 in_voltage1_raw ,通过打印值确定是不是我们的 GPIO1_IO09 ,先把这个管脚接地,打印 in_voltage0_raw:4082 和 in_voltage1_raw:0 ;然后把这个管脚接3.3V,打印 in_voltage1_raw:0 ,说吗这两个都不上我们导出的管脚,好奇怪。
6、继续百度,在论坛 http://community.nxp.com/thread/434798 找到了有用的东西,其中
imx6ul.dtsi: adc1: adc@02198000 { ...
num-channels = <4>; change order channels iio_chan_spec vf610_adc_iio_channels[] in linux/drivers/iio/adc/vf610_adc.c static const struct iio_chan_spec vf610_adc_iio_channels[] = { VF610_ADC_CHAN(3, IIO_VOLTAGE),
VF610_ADC_CHAN(4, IIO_VOLTAGE),
VF610_ADC_CHAN(6, IIO_VOLTAGE),
VF610_ADC_CHAN(7, IIO_VOLTAGE),}
这应该是多通道采集设置,然后又通道设置的顺序,我们先不管顺序,直接把通道设置成10,因为我们的GPIO1_IO09就是第十个通道,重新编译设备,然后替换板子的dtb文件,重启后发现果然又10个通道的AD,把GPIO1_09接3.3V,然后 cat in_voltage9_raw ,打印值是4095,12位ad采集,正好是4095;把GPIO1_09接地,然后 cat in_voltage9_raw :0,说明我们的设备导出是成功的。(悬空下打印的值是1738)
7、文件内容理解
通过in_voltage_sampling_frequency 可以设置采样频率,后续会在次基础上写应用程序来进行验证。
|