iTOP-4412開發板實現3路ADC數模轉換驅動例程

學習下 linux 數模程序驅動的編寫,本節咱們實現的功能是實現三路
ADC 數模轉換。
驅動程序
驅動程序的名字:「itop4412_adc.c」。
要想把這個驅動註冊到內核,先把這個驅動程序放到內核的「driver/char」目錄下面,如
下圖所示:linux

Makefile
而後打開 drive/char 目錄下面的 Makefile,添加:
obj-$(CONFIG_ADC_CTL) += itop4412_adc.o
以下圖所示:android

添加完成後保存退出。
Kconfig
打開「drive/char」目錄下面的 Kconfig,搜索「LEDS_CTL」,找到以後在下面添加
「DS18B20_CTL」,仿照着「LEDS_CTL」寫就能夠了,添加內容以下:
config 3LADC_CTL
bool "Enable 3LADC config"
default y
help
Enable 3LADC config
添加完成後以下圖所示:vim

修改完成後保存退出。
添加設備到平臺文件
最後使用命令「vim arch/arm/mach-exynos/mach-itop4412.c」,打開平臺文件。添
加設備,參考 led 的驅動,添加內容一以下:
#ifdef CONFIG_ADC_CTL
struct platform_device s3c_device_adc_ctl = {
.name = "adc_ctl",
.id = -1,
};
#endif
添加完成後以下圖所示:學習

添加內容二以下:
#ifdef CONFIG_ADC_CTL
&s3c_device_adc_ctl,
#endif
添加完成後以下圖所示:測試

修改完成後保存退出。
內核的編譯
內核在編譯以前應該先對其進行參數配置。具體講解能夠參考 itop-4412 開發板精英使
用手冊 5.3.2,這裏以 SCP 2G 核心板爲例編譯 zImage 內核鏡像,那麼配置文件爲
config_for_linux_scp_elite 使用命令 cp cconfig_for_linux_scp_elite .config 配置,orm

在內核目錄下使用 make menuconfig 命令打開內核配置界面,進入 「Device Drivers
--->」→「Character devices --->」→「ADC driver for iTOP4412」,以下圖所示,配置
上宏 定義「ADC_CTL」。blog

配置完成後保存退出,以避免出錯能夠再查看一遍,而後使用編譯命令「make zImage」
編譯內核。編譯完成後在目錄
「/home/topeet/android4.0/iTop4412_Kernel_3.0/arch/arm/boot」下找到新生成的
zImage 編譯到開發板,啓動開發板。開發板啓動以後,使用命令「ls
/sys/devices/platform/」能夠查看到新註冊的 adc_ctl 設 備,以下圖所示。開發

以下圖所示,加載以後使用命令「ls /dev」,能夠看到新生成了設備節點 adc。it

測試程序
名字:「adctest.c」
在 Ubuntu 系統下新建 ada 文件夾,將寫好的 「adctest.c」 拷貝到文件夾下,使用
「arm-none-linux-gnueabi-gcc -o adctest adctest.c -static」命令編譯應用。 以下圖所
示。編譯

將上圖中的文件「adctest」 拷貝到 U 盤。 啓動開發板,將 U 盤插入開發板,使用命
令「 mount /dev/sda1 /mnt/udisk/」加載 U 盤符, 有三條命令運行小應「adctest」,
第一條使用命令「./mnt/udisk/adctest 0 0」,運行小應用 「adctest」,以下圖所
示:

調整滑動電阻器以後,再次使用測試程序,以下圖所示,輸出數值會有變化。

滑動變阻器向順時針旋轉,阻值會減少,最小爲 0;
滑動變阻器向逆時針旋轉,阻值會增大,最大爲 10k。
第二條使用命令「./mnt/udisk/adctest 1 0」,運行小應用 「adctest」,以下圖所
示:

調整滑動電阻器以後,再次使用測試程序,以下圖所示,輸出數值會有變化

滑動變阻器向順時針旋轉,阻值會減少,最小爲 0;
滑動變阻器向逆時針旋轉,阻值會增大,最大爲 10k。
第三條使用命令「./mnt/udisk/adctest 1 1」,運行小應用 「adctest」,以下圖所
示:

調整滑動電阻器以後,再次使用測試程序,以下圖所示,輸出數值會有變化。

滑動變阻器向順時針旋轉,阻值會減少,最小爲 0; 滑動變阻器向逆時針旋轉,阻值會增大,最大爲 10k。

相關文章
相關標籤/搜索