linux下ad数模转换驱动程序设计,iTOP-4412开发板实现3路ADC数模转换驱动例程

学习下 linux 数模程序驱动的编写,本节我们实现的功能是实现三路

ADC 数模转换。

驱动程序

驱动程序的名字:“itop4412_adc.c”。

要想把这个驱动注册到内核,先把这个驱动程序放到内核的“driver/char”目录下面,如

下图所示:

627925e7654c9cc6521203ae7de1da5e.png

Makefile

然后打开 drive/char 目录下面的 Makefile,添加:

obj-$(CONFIG_ADC_CTL) += itop4412_adc.o

如下图所示:

56b62bd40061ea80485d02c189b9fa8f.png

添加完成后保存退出。

Kconfig

打开“drive/char”目录下面的 Kconfig,搜索“LEDS_CTL”,找到之后在下面添加

“DS18B20_CTL”,仿照着“LEDS_CTL”写就可以了,添加内容如下:

config 3LADC_CTL

bool "Enable 3LADC config"

default y

help

Enable 3LADC config

添加完成后如下图所示:

e8195f2e92d37eadb5eea92657cc0cc6.png

修改完成后保存退出。

添加设备到平台文件

最后使用命令“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

添加完成后如下图所示:

d20cf14457ab69f28aff64aced9f866d.png

添加内容二如下:

#ifdef CONFIG_ADC_CTL

&s3c_device_adc_ctl,

#endif

添加完成后如下图所示:

38540b42b9c8804e546117c358265a08.png

修改完成后保存退出。

内核的编译

内核在编译之前应该先对其进行参数配置。具体讲解可以参考 itop-4412 开发板精英使

用手册 5.3.2,这里以 SCP 2G 核心板为例编译 zImage 内核镜像,那么配置文件为

config_for_linux_scp_elite 使用命令 cp cconfig_for_linux_scp_elite .config 配置,

14f93e503902055a2eccfa8d00c77336.png

在内核目录下使用 make menuconfig 命令打开内核配置界面,进入 “Device Drivers

--->”→“Character devices --->”→“ADC driver for iTOP4412”,如下图所示,配置

上宏 定义“ADC_CTL”。

946c7b00be31c4a8b2e85ca4efe5558e.png

配置完成后保存退出,以免出错可以再查看一遍,然后使用编译命令“make zImage”

编译内核。编译完成后在目录

“/home/topeet/android4.0/iTop4412_Kernel_3.0/arch/arm/boot”下找到新生成的

zImage 编译到开发板,启动开发板。开发板启动之后,使用命令“ls

/sys/devices/platform/”可以查看到新注册的 adc_ctl 设 备,如下图所示。

9065c881d9b9b55c1e4e4add0ddf1c23.png

如下图所示,加载之后使用命令“ls /dev”,可以看到新生成了设备节点 adc。

a9544258f8546460c46b0fa1c2dd5868.png

测试程序

名字:“adctest.c”

在 Ubuntu 系统下新建 ada 文件夹,将写好的 “adctest.c” 拷贝到文件夹下,使用

“arm-none-linux-gnueabi-gcc -o adctest adctest.c -static”命令编译应用。 如下图所

示。

f2a4b21d4769b386647bd0738672e462.png

将上图中的文件“adctest” 拷贝到 U 盘。 启动开发板,将 U 盘插入开发板,使用命

令“ mount /dev/sda1 /mnt/udisk/”加载 U 盘符, 有三条命令运行小应“adctest”,

第一条使用命令“./mnt/udisk/adctest 0 0”,运行小应用 “adctest”,如下图所

示:

61cb95b0c1c721d9e929f510e2a8f533.png

调整滑动电阻器之后,再次使用测试程序,如下图所示,输出数值会有变化。

16d9b3880270f83c85192e6097ea552a.png

滑动变阻器向顺时针旋转,阻值会减小,最小为 0;

滑动变阻器向逆时针旋转,阻值会增大,最大为 10k。

第二条使用命令“./mnt/udisk/adctest 1 0”,运行小应用 “adctest”,如下图所

示:

02ac5cc36ffe79686395e4d8aa4b0fd1.png

调整滑动电阻器之后,再次使用测试程序,如下图所示,输出数值会有变化

0762f11e171e455836955052671edbff.png

滑动变阻器向顺时针旋转,阻值会减小,最小为 0;

滑动变阻器向逆时针旋转,阻值会增大,最大为 10k。

第三条使用命令“./mnt/udisk/adctest 1 1”,运行小应用 “adctest”,如下图所

示:

bc41f16bb3ec1cebbe065cb846729c35.png

调整滑动电阻器之后,再次使用测试程序,如下图所示,输出数值会有变化。

b8c111ad66d51ac53cc8fc8bd6b1f2ff.png

滑动变阻器向顺时针旋转,阻值会减小,最小为 0;

滑动变阻器向逆时针旋转,阻值会增大,最大为 10k。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值