要做一个项目需要用到mini2440上的adc ,经查 发现其中的8个adc端口只能使用4个(只给了4个输入引脚AIN0,AIN1,AIN2,AIN3),其他的几个通道为触摸屏使用
我在使用adc时遇到的问题:
1. 因为之前没用过板上的GPIO,所以一开始不知道通道分别对应哪些管脚。我用了万用表测了下,如下图所示
2. 编写adc驱动 ,我参照了 http://showyour.name/archives/156 的驱动,其中最重要的一点是 ioctl 的实现(选择通道),官方给的源程序mini2440_adc.c里没有该函数
3. 编写adc测试函数, 同样参照 http://showyour.name/archives/156 ,需要编写驱动和应用程序的Makefile
4.启动板子时出现
Uncompressing Linux...............................................................................................................................................................................................
crc error
-- System halted
的错误
且每过几天会出现一次,可能是硬件上的不稳定导致,可以降低开机频率(从uboot出发)部分解决
5, 加载mini2440_adc.ko驱动时,需要先rmmod mini2440_adc,ko ,该驱动已在内核树中
6.对于S3C2440 ,adc的输入时钟频率由PCLK提供,且不能超过PCLK/5,ADCCLK = PCLK/(PRSCVL + 1)
待解决的问题:
1. 在不rmmod mini2440_adc.ko 的情况下,insmod
2. 改变uboot中的相关参数 降低开机频率