【ARM】arm·ad转换器
2013-06-27 17:38
232 查看
A/D转换器
A/D转换器,又称模/数转换器,顾名思义,就是把模拟信号数字化。
由于系统的实际处理对象往往都是一些模拟量(如温度、压力、位移、图像等),要使计算机或数字仪表能识别和处理这些信号,必须首先将这些模拟信号转换成数字信号,这就必须用到A/D转换器。
A/D转换器的一般步骤
模拟信号进行A/D转换的时候,从启动转换到转换结束输出数字量,需要一定的转换时间,在这个转换时间内,模拟信号要基本保持不变。否则转换精度没有保证,特别当输入信号频率较高时,会赞成很大的转换误差。要防止这种误差的产生,必须在A/D转换开始时将输入信号的电平保持住,而在A/D转换结束后,又能跟踪输入信号的变化。因此,一般的A/D转换过程是通过取样、保持、量化和编码这4个步骤完成的。一般取样和保持主要由采样保持器来完成,而量化编码就由A/D转换器完成。
实例
本文出自 “成鹏致远” 博客,请务必保留此出处http://infohacker.blog.51cto.com/6751239/1193274
A/D转换器,又称模/数转换器,顾名思义,就是把模拟信号数字化。
由于系统的实际处理对象往往都是一些模拟量(如温度、压力、位移、图像等),要使计算机或数字仪表能识别和处理这些信号,必须首先将这些模拟信号转换成数字信号,这就必须用到A/D转换器。
A/D转换器的一般步骤
模拟信号进行A/D转换的时候,从启动转换到转换结束输出数字量,需要一定的转换时间,在这个转换时间内,模拟信号要基本保持不变。否则转换精度没有保证,特别当输入信号频率较高时,会赞成很大的转换误差。要防止这种误差的产生,必须在A/D转换开始时将输入信号的电平保持住,而在A/D转换结束后,又能跟踪输入信号的变化。因此,一般的A/D转换过程是通过取样、保持、量化和编码这4个步骤完成的。一般取样和保持主要由采样保持器来完成,而量化编码就由A/D转换器完成。
实例
//main.c #include "2410lib.h" externvoid adc_test(void); int main(int argc,char **argv) { sys_init(); // Initial s3c2410's Clock, MMU, Interrupt,Port and UART uart_printf("\n\n Embest S3CEB2410 Evaluation Board\n"); while(1) { adc_test(); } } //adc.c #include "2410lib.h" #define REQCNT 100 #define ADC_FREQ 2500000 #define LOOP 10000 volatile UINT8T unPreScaler; volatilechar nEndTest; void adc_test(void) { int j; UINT16T usConData; float usEndData; uart_printf("\n Adc Conversion Test Example \n"); uart_printf(" ADC_IN Test,channel 2\n"); uart_printf(" ADC conv. freq. = %dHz\n",ADC_FREQ); unPreScaler = PCLK/ADC_FREQ -1; rADCCON=(1<<14)|(unPreScaler<<6)|(2<<3)|(0<<2)|(1<<1);//enable prescaler,ain2,normal,start by read uart_printf(" Please adjust AIN2 value!\n"); uart_printf(" The results of ADC are:\n"); usConData=rADCDAT0&0x3FF; for(j=0;j<20;j++) // sample and show data both by UART and leds { while(!(rADCCON & 0x8000)); usConData=rADCDAT0&0x3FF; usEndData=usConData*3.3000/0x3FF; uart_printf(" %0.4f ",usEndData); delay(10000); } uart_printf(" end.\n"); } //sys_init.c主要代码 void sys_init() { change_clock_divider(1,1); // 1:2:4 change_value_MPLL(M_MDIV,M_PDIV,M_SDIV); // Fin=12MHz FCLK=202.8MHz delay(0); // adjust the delay count port_init(); beep(1); interrupts_init(); uart_init(PCLK, 115200, UART0); uart_init(PCLK, 115200, UART1); #ifdef CLK124_200M change_value_MPLL(88,1,1); // Fin=12MHz FCLK=192MHz uart_init(192000000/4, 115200, UART0); uart_init(192000000/4, 115200, UART1); #endif uart_select(UART0); uart_printf ("\n boot success...\n\n"); delay(500); beep(0); }//sys_init
本文出自 “成鹏致远” 博客,请务必保留此出处http://infohacker.blog.51cto.com/6751239/1193274
相关文章推荐
- 【ARM】ADC·FS2410数模转换
- 20150120 【 ARM 】 Linux基础·II(账号,权限,服务器[samba,nfs,tftp])
- 【ARM】gpio·arm体系结构之gpio
- 【ARM】按键·查询式控制led灯·fs2410
- 【ARM】led·fs2410流水灯
- 《人物》:计算机世界第一人—艾兰·图灵
- CABasicAnimation的基本使用方法(移动·旋转·放大·缩小)
- 【电子基础】总结·模拟电路笔记
- C++_学生资料管理简单举例·输入学号,姓名,以及查找
- 舍得···
- 其实,APP文案还可以这样写·····
- 读易[7]·我们的“盖茨”梦(渐卦)
- 【原创·视频·教程】大话优酷、酷六类视频网站Android端软件开发
- csdn实训第二次····之···第三次课
- 判断一个串里面是否有唯一的字符; 有位操作····
- 香港之行——大学·精神·交通
- csdn第二次 实训·····之···最后一课
- 双向循环链表(创建·插入·删除·遍历)
- ARM&LINUX学习笔记(3)---安装交叉编译器
- 小熊arm学习总结:iar7.3建立工程报错:cannot open the source file "XXXxxx.h