SAIL-IMX6Q AD7606模块调试记录

2019-05-24 10:24
261

1.驱动移植

(1)将AD7606驱动拷贝到

/sail-imx6q-linux-4.1.15/drivers/staging/iio/adc/目录下,包括ad7606.h、ad7606_core.c、ad7606_par.c、ad7606_ring.c、ad7606_spi.c;

将spi.c、imx-spi.c拷贝到/sail-imx6q-linux-4.1.15/drivers/spi/目录下。

(2) 通过&ecspi2完善ecspi2节点信息

在/arch/arm/boot/dts/sail-imx6q.dts中通过使用&ecspi2访问ecspi2这个节点,该节点用来描述开发板上的spi信息。

在/arch/arm/boot/dts目录下使用gedit打开sail-imx6q.dts如下图:


完善后的节点信息如下图:


(3) 编写AD7606引脚信息

编写iomux信息,具体参考imx6q原理图,下图是根据原理图中的引脚连接方式编写的iomux信息,


配置内核,在~/sail-imx6q-linux-4.1.15目录下执行make   menuconfig,进行如下修改,

Device Drivers    --->

    [*] SPI support   --->

        -*- Utilities for Bitbanging SPI masters

        <*> GPIO-based bitbanding SPI Master

        <*> Freescale i.MX SPI controllers

        <*> User mode SPI device driver support

Device Drivers   --->  

    [*] Staging drivers   --->  

        IIO staging drivers   --->   

            Analog to digital converters   --->

                <*> Analog Devices AD7606 ADC driver   

                <*>   spi interface support

    <*> Industrial I/O support   --->

        ---Industrial I/O support                                       

        -*-   Enable buffer support within IIO                       

        [*]     IIO callback buffer used for push in-kernel interfaces   

-*-     Industrial I/O buffering based on kfifo               

        -*-   Enable triggered sampling support   

修改完毕后,选择<Save>保存。退出。重新编译内核,执行

make -j8 zImage ZIMAGE_LOADADDR=0x10008000

编译时间较长,需等待几分钟。编译结果如下图


将重新编译的zImage及sail-imx6q.dtb拷贝到指定位置,重新烧录linux系统。

2 调试

下图是实物图的正面,图中绿色板子为IMX6Q主板,蓝色板子是AD7606模块。由于是测试,直接将AD模块的5V电源引出至模拟输入(图中杜邦线连线)。


下图是实物图的反面,因为在测试过程中发现直接用杜邦线连接会导致接触不实,故直接将连接相应管脚的线焊上。后又发现线很容易断,用胶将焊接部分粘起来。


将主板上的SW4拨码开关拨至01,SW3拨码开关拨至0111,选择eMMC启动模式。

在PC机打开超级终端,打开SAIL-IMX6Q主板电源,正常启动如下图:


输入root,进入root用户。

输入 cd /sys/bus/iio/device/查看设备节点,如下图所示。若不存在节点则证明驱动移植失败,需重新移植,若节点存在,则可进入节点测试AD模块是否能正常使用。


进入节点,执行cat in_voltage0_raw 查看转换结果


本次在模拟输入端接入5V输入,转换结果为32767,经过公式计算:

32767*10/(216-1)=4.9999≈5V

调试过程出现的问题

返回值为空,

原因及解决办法:经过测量,AD模块的CS和CLK脚连接,模块损坏,重新焊一块AD模块;

返回值有时正常,有时为0,

        原因及解决办法:使用杜邦线连接,有的线很松,可能是线的问题,将AD模块与板卡的连接线直接焊到相应管脚上。焊完后经测试能正常使用。