Chinaunix首页 | 论坛 | 博客
  • 博客访问: 309399
  • 博文数量: 101
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 774
  • 用 户 组: 普通用户
  • 注册时间: 2018-10-15 14:13
个人简介

搭建一个和linux开发者知识共享和学习的平台

文章分类

全部博文(101)

文章存档

2024年(15)

2023年(24)

2022年(27)

2019年(8)

2018年(27)

分类: LINUX

2022-10-21 14:38:11

1.13  ADC接口
以将电阻触摸的4路触摸用作ADC为例。


1. 查看IMX6ULLRM.pdf手册中Chapter 13.2有:




 


采用GPIO1_IO01、GPIO1_IO02、GPIO1_IO03、GPIO1_IO04作为四路ADC。


2. 怎么查找用哪个驱动,采用config中的哪个进行配置呢?


3. 查找ADC的驱动和配置选项。


设备树文件arch/arm/boot/dts/imx6ull-14x14-evk.dts中有


#include #include "imx6ull.dtsi"


打开imx6ul.dtsi文件,此文件为通用设备树配置文件






adc1: adc@02198000 {    compatible = "fsl,imx6ul-adc", "fsl,vf610-adc";    reg = <0x02198000 0x4000>;    interrupts = ;    clocks = <&clks IMX6UL_CLK_ADC1>;    num-channels = <9>;    clock-names = "adc";    status = "disabled";            };


在drviers路径下查找相关文件,如下:


neo@ubuntu:~$ grep "fsl,vf610-adc" -nr Binary file built-in.o matches Binary file iio/built-in.o matches Binary file iio/adc/built-in.o matches Binary file iio/adc/vf610_adc.o matches iio/adc/vf610_adc.c:596:        { .compatible = "fsl,vf610-adc", },


查看drives/spi/Makefile文件。此文件将adc路径下的驱动文件和配置文件中具体哪个配置联系起来。vf610_adc.c文件编译之后为vf610_adc.o文件。  


obj-$(CONFIG_VF610_ADC)        += vf610_adc.o


查看6ULL-S的配置文件arch/arm/config/imx6ull_defconfig中CONFIG_VF610_ADC=y。


查看drivers/iio/Makefile中,要编译ADC下的文件,需要有:






obj-y       += adc/


查看`,要编译iio下的文件,需要有:






obj-$(CONFIG_IIO)       += iio/


查看6ul emmc的配置文件arch/arm/config/imx6ull_defconfig中CONFIG_IIO=y。


至此驱动配置完成。


4. 修改设备树文件arch/arm/boot/dts/imx6ull-14x14-evk.dts,添加adc1.






&adc1 {    pinctrl-names = "default"; pinctrl-0 = <&pinctrl_adc1>; vref-supply = <®_vref_3v3>;    status = "okay"; };


需要用到参考电压,添加reg_vref_3v3,如图:


reg_vref_3v3: regulator@3 {            compatible = "regulator-fixed";            regulator-name = "vref-3v3";            regulator-min-microvolt = <3300000>;            regulator-max-microvolt = <3300000>;            reg = <3>; };


在&iomuxc中添加所用到的具体引脚。此处关于上下拉电阻配置部分,参考“PINMUX说明”部分进行设置。如图:


pinctrl_adc1: adc1grp {                    fsl,pins = <                        MX6UL_PAD_GPIO1_IO01__GPIO1_IO01   0xb0                        MX6UL_PAD_GPIO1_IO02__GPIO1_IO02   0xb0                        MX6UL_PAD_GPIO1_IO03__GPIO1_IO03   0xb0                        MX6UL_PAD_GPIO1_IO04__GPIO1_IO04   0xb0                    >;        };


并将其他复用GPIO1_IO01、GPIO1_IO02、GPIO1_IO03、GPIO1_IO04的地方注释掉或者disabled。


5. 编译生成dtb zImage,编译内核,查看drivers/iio/adc/是否生成vf610_adc.o,如果生成,已编译进内核。如果未生成,查看是否配置出错?


6. 替换dtb zImage,并烧写,启动。


7. 查看开发板/dev下有节点iio:device0,则驱动加载成功。


或者进入cd /sys/bus/iio/devices/iio\:device0/路径查看。 
阅读(1110) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~