嵌入式Linux 之我行,主要讲述和总结了本人在学习嵌入式linux 中的每个步骤
一为总结经验,二希望能给想入门嵌入式Linux 的朋友提 供方便
如有错误之处,谢请指正
一、开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2
4 编译器:arm-linux-gcc-4
2 二、硬件原理分析 S3C2440内部 ADC 结构图 我们从上面的结构图和数据手册可以知道,该 ADC 模块总共有8个通道可以进行模拟信号的输入,分别是AIN0、AIN1、AIN2、AIN3、 YM、YP、XM、XP
那么 ADC 是怎么实现模拟信号到数字信号的转换呢
首先模拟信号从任一通道输入,然后设定寄存器中预分频器的值来确定AD 转换器 频率,最后 ADC 将模拟信号转换为数字信号保存到 ADC 数据寄存器0中(ADCDAT0),然后 ADCDAT0中的数据可以通过中断或查询的方式来访问
对于 ADC 的各寄存器的操作和注意事项请参阅数据手册
上图是mini2440上的ADC 应用实例,开发板通过一个10K 的电位器(可变电阻)来产生电压模拟信号,然后通过第一个通道(即:AIN0)将 模拟信号输入ADC
三、实现步骤 ADC 设备在 Linux 中可以看做是简单的字符设备,也可以当做是一混杂设备(misc 设备),这里我们就看做是misc 设备来实现 ADC 的驱动
注意:这里我们获取 AD 转换后的数据将采用中断的方式,即当 AD转换完成后产生AD 中断,在中断服务程序中来读取 ADCDAT0的第0-9位的值(即AD 转换后的值)
1、建立驱动程序文件 my2440_adc
c,实现驱动的初始化和退出,代码如下: #include #include #include #include