企业工商信息查询系统官网,深圳做网站seo,虚拟主机免费试用,湖北省工程建设信息官方网站一、Exynos4412 A/D转换器概述 1、简述 10位或12位CMOS再循环式模拟数字转换器#xff0c;它具有10通道输入#xff0c;并可将模拟量转换至10位或12位二进制数。5Mhz A/D 转换时钟时#xff0c;最大1Msps的转换速度。A/D转换具备片上采样保持功能#xff0c;同时也支持待机… 一、Exynos4412 A/D转换器概述 1、简述 10位或12位CMOS再循环式模拟数字转换器它具有10通道输入并可将模拟量转换至10位或12位二进制数。5Mhz A/D 转换时钟时最大1Msps的转换速度。A/D转换具备片上采样保持功能同时也支持待机工作模式。 2、特性 ADC接口包括如下特性。 110bit/12bit输出位可选。 2微分误差 1.0LSB。 3积分误差 2.0LSB。 4最大转换速率5Msps. 5) 功耗少电压输入1.8V。 6电压输入范围 0~1.8V。 7支持偏上样本保持功能。 8通用转换模式。 3、模块图 4412A/D转换器的控制器接口框图如下 二、Exynos4412 A/D 控制器寄存器 1、A/D控制寄存器ADCCON 2、A/D转换数据寄存器ADCDAT0 3、A/D转换的转换时间计算 例如 PCLK为100MHz,PRESCALER 65 ;所有10位转换时间为 100MHz/(991) 1MHz 转化时间为1/(1MHz/5 cycles) 5us。 完成一次A/D转换需要5个时钟周期。A/D转换器的最大工作时钟为5MHz,所以最大采样率可以达到1Mit/s. 三、A/D转换器实例 1、电路连接如下 利用一个电位计输出电压到4412的AIN3管脚。输入的电压范围为0~1.8V。 2、程序编写 1、相关寄存器定义 [cpp] view plaincopy /*********************** ADC ******************************************/ #define ADC_CFG __REG(0x10010118) #define ADCCON __REG(0x126C0000) #define ADCDLY __REG(0x126C0008) #define ADCDAT __REG(0x126C000C) #define CLRINTADC __REG(0x126C0018) #define ADCMUX __REG(0x126C001C) 2、具体代码如下 注这里使用读-启动模式 [cpp] view plaincopy #include exynos_4412.h #include pwm.h #include uart.h unsigned char table[10] {0,1,2,3,4,5,6,7,8,9}; void mydelay_ms(int time) { int i, j; while(time--) { for (i 0; i 5; i) for (j 0; j 514; j); } } adc_init(int temp) { ADCCON (1 16 | 1 14 | 99 6 | 1 1); ADCMUX 3; temp ADCDAT 0xfff; } /* * 裸机代码不同于LINUX 应用层 一定加循环控制 */ int main (void) { unsigned char bit4,bit3,bit2,bit1; uart_init(); unsigned int temp 0; adc_init(temp); puts(开始转换\n); while(1) { while(!(ADCCON 0x8000)); temp ADCDAT 0xfff; printf(U %d\n,temp); temp 1.8 * 1000 * temp/0xfff; bit4 temp /1000; putc(table[bit4]); bit3 (temp % 1000)/100; putc(table[bit3]); bit2 ((temp % 1000)%100)/10; putc(table[bit2]); bit1 ((temp % 1000)%100)%10; putc(table[bit1]); puts(mV); putc(\n); mydelay_ms(1000); } return 0; }