首页 > 代码库 > s3c2440的A/D转换应用
s3c2440的A/D转换应用
10 位 CMOS ADC(模/数转换器)是一个 8 通道模拟输入的再循环类型设备。其转换模拟输入信号为 10 位二进制数字编码,A/D转换,又称为模数转换,是将模拟信号转换为计
算机能够处理的数字信号。
对于s3c2440来说,实现A/D转换比较简单,主要做的事情就是 ADC 控制寄存器 ADCCON 和 ADC 转换数据寄存器 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转换。
单独的adc操作 很简单,就配置下轮询寄存器的某个位变化了就说明采样完毕了:
int readADC(INT8U channel) { channel &= 7; rADCCON = (1<<14)|(49<<6)|(channel<<3); //设置预分频器和A/D通道 rADCCON|=0x1; //启动A/D转换 while(rADCCON & 0x1) OSTimeDly(1); //确认A/D转换是否开始 while(!(rADCCON & 0x8000)) OSTimeDly(1); //等待A/D转换的结束 return ( (int)rADCDAT0 & 0x3ff ); //读取A/D转换的数据 }
在多任务环境下while循环后面可以加入一个比较短的 OSTimeDly,无法配置成转换完毕后中断通知的模式 。
没有什么模拟传感器,可以用螺丝刀转动PR2可见采集数据随着转动改变。 在这里就不把采集的数据显示在lcd上了,仅仅通过串口打印出来吧。
具体代码可以从我github上clone。
s3c2440的A/D转换应用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。