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模塊與板卡的連接線直接焊到相應管腳上。焊完后經測試能正常使用。