Linux驱动修炼之道-ADC驱动

努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/05/18/6429002.aspx

S3C2440内部ADC结构图:

Linux驱动修炼之道-ADC驱动_第1张图片

对于s3c2440来说,实现A/D转换比较简单,主要应用的是ADC控制寄存器ADCCONADC转换数据寄存器ADCDAT0。寄存器ADCDAT0的低10位用于存储A/D转换后的数据。寄存器ADCCON的第15位用于标识A/D转换是否结束。第14位用于使能是否进行预分频,而第6位到第13位则存储的是预分频数值,因为A/D转换的速度不能太快,所以要通过预分频处理才可以得到正确的A/D转换速度,如我们想要得到A/D转换频率为1MHz,则预分频的值应为49。第3位到第5位表示的是A/D转换的通道选择。第2位可以实现A/D转换的待机模式。第1位用于是否通过读取操作来使能A/D转换的开始。第0位则是在第1位被清零的情况下用于开启A/D转换。

驱动代码:

测试代码:

实验效果:

Linux驱动修炼之道-ADC驱动_第2张图片

你可能感兴趣的:(数据结构,linux,.net,Blog,UP)