网上流行很多基于S3C2410的ADC驱动及测试程序。本文所使用的是开发板光盘中自带的经过修改后的adc驱动。笔者在这个基础上再作一点修改。由于那个文件已经删除了版权信息(但还是能找到这些代码与网上流行的驱动的一些联系),这里也不知道如何添加了,可以肯定的是,它使用了GPL,这里公开源代码,也算是GPL了。
原来的代码默认使用ADC第0个通道,本文将添加ioctl接口,可以通过应用层的ioctl来选择多个通道。
与原来的代码相比,添加了如下几个方面:
1、添加头文件,不过经测试,没有也可以通过编译。
2、修改原来的调试信息为:
这个便于查看调试信息。
3、添加ioctl相关宏定义:
4、添加ioctl接口:
当然,也要在这个文件的file_operations结构体添加这个接口:
5、copy_to_user
原来的代码使用了sprintf将ADC转换的结果转换为字符串类型,不过却在后面添加一个“\n”,不知是何意。
也正是这个原因,在测试程序中要使用sscanf将字符串转换成整数类型才能得到正常的结果。
其它的修改不影响使用。
测试代码也简单,如下:
注:文中代码注释出现了中文,是为了方便文章的阅读(根据经验,有清楚注释的代码才算代码),在实际代码中是没有中文注释的。