历史上的今天
返回首页

历史上的今天

今天是:2024年12月13日(星期五)

正在发生

2021年12月13日 | xynos4412裸机开发 —— A/D转换器

2021-12-13 来源:eefocus

一、Exynos4412 A/D转换器概述


1、简述

10位或12位CMOS再循环式模拟数字转换器,它具有10通道输入,并可将模拟量转换至10位或12位二进制数。5Mhz A/D 转换时钟时,最大1Msps的转换速度。A/D转换具备片上采样保持功能,同时也支持待机工作模式。


2、特性

ADC接口包括如下特性。

1)10bit/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/(99+1) = 1MHz

转化时间为1/(1MHz/5 cycles) = 5us。

完成一次A/D转换需要5个时钟周期。A/D转换器的最大工作时钟为5MHz,所以最大采样率可以达到1Mit/s.


三、A/D转换器实例

1、电路连接如下:

利用一个电位计输出电压到4412的AIN3管脚。输入的电压范围为0~1.8V。



2、程序编写

1、相关寄存器定义

  1. /***********************  ADC ******************************************/  

  2.   

  3. #define     ADC_CFG     __REG(0x10010118)  

  4.   

  5.   

  6. #define     ADCCON      __REG(0x126C0000)  

  7. #define     ADCDLY      __REG(0x126C0008)  

  8. #define     ADCDAT      __REG(0x126C000C)  

  9. #define     CLRINTADC   __REG(0x126C0018)  

  10. #define     ADCMUX      __REG(0x126C001C)  

2、具体代码如下:

注:这里使用读-启动模式

  1. #include "exynos_4412.h"  

  2. #include "pwm.h"  

  3. #include "uart.h"  

  4.   

  5. unsigned char table[10] = {'0','1','2','3','4','5','6','7','8','9'};  

  6. void mydelay_ms(int time)  

  7. {  

  8.     int i, j;  

  9.     while(time--)  

  10.     {  

  11.         for (i = 0; i < 5; i++)  

  12.             for (j = 0; j < 514; j++);  

  13.     }  

  14. }  

  15.   

  16. adc_init(int temp)  

  17. {  

  18.     ADCCON = (1 << 16 | 1 << 14 | 99 <<6 | 1 << 1);  

  19.     ADCMUX = 3;  

  20.     temp = ADCDAT & 0xfff;  

  21. }  

  22.   

  23. /* 

  24.  *  裸机代码,不同于LINUX 应用层, 一定加循环控制 

  25.  */  

  26. int main (void)  

  27. {  

  28.     unsigned char bit4,bit3,bit2,bit1;  

  29.     uart_init();  

  30.     unsigned int temp = 0;  

  31.     adc_init(temp);  

  32.     puts("开始转换n");  

  33.     while(1)  

  34.     {  

  35.         while(!(ADCCON & 0x8000));  

  36.         temp = ADCDAT & 0xfff;  

  37.         printf("U = %dn",temp);  

  38.         temp = 1.8 * 1000 * temp/0xfff;  

  39.         bit4 = temp /1000;  

  40.         putc(table[bit4]);  

  41.         bit3 = (temp % 1000)/100;  

  42.         putc(table[bit3]);  

  43.         bit2 = ((temp % 1000)%100)/10;  

  44.         putc(table[bit2]);  

  45.         bit1 = ((temp % 1000)%100)%10;  

  46.         putc(table[bit1]);  

  47.         puts("mV");  

  48.         putc('n');  

  49.         mydelay_ms(1000);  

  50.     }  

  51.    return 0;  

  52. }  



推荐阅读

史海拾趣

DPA Components International公司的发展小趣事

DPA Components International公司非常重视企业文化的建设。公司倡导“以人为本、追求卓越”的企业文化,注重员工的培训和发展。公司为员工提供丰富的培训资源和职业发展机会,鼓励员工不断创新和进取。同时,DPA还建立了完善的激励机制和福利制度,让员工感受到公司的关怀和温暖。在这种积极向上的企业文化氛围中,员工的工作积极性和创造力得到了充分激发,为公司的持续发展提供了强大动力。

Clever Little Box公司的发展小趣事

Clever Little Box深知,优质的客户服务是企业长期发展的关键。因此,公司始终注重提升服务质量,为客户提供专业的技术支持和售后服务。同时,公司还注重与客户建立良好的关系,通过定期沟通、反馈收集等方式,了解客户的需求和意见,以便更好地满足客户的期望。

Dalian Dlicap Corporation公司的发展小趣事

2023年12月29日,大连达利凯普科技股份公司在深圳证券交易所创业板正式挂牌上市,股票代码为301566。这一里程碑式的事件标志着公司进入了一个新的发展阶段。上市融资将为达利凯普提供更多的资金支持和发展机遇,公司将继续加大研发投入和市场拓展力度,不断推动技术创新和产业升级。同时,达利凯普也将积极履行社会责任和义务,为电子行业的发展做出更大的贡献。

请注意,这些故事概要基于现有信息整理而成,具体细节可能因时间、环境等因素而有所不同。

C-MAC Automotive公司的发展小趣事

为了进一步提升竞争力,C-MAC Automotive公司积极寻求与其他企业的战略合作。通过与一家知名汽车制造商建立合作关系,C-MAC成功将其电子控制单元(ECU)集成到了对方的新款车型中。这一合作不仅提升了C-MAC的品牌知名度,还为公司带来了稳定的订单来源。通过不断拓宽合作领域,C-MAC逐渐在电子行业中占据了一席之地。

DOMINANT公司的发展小趣事

为了进一步提升市场竞争力,统明亮公司在2016年推出了一款新型直角DomiLED产品。这款LED产品具有高光照强度、低热阻等特点,广泛应用于测光照明领域。新型直角DomiLED的推出,不仅丰富了统明亮的产品线,也进一步巩固了其在LED市场的领先地位。这款产品的成功推出,也充分展示了统明亮公司在LED技术创新方面的实力。

爱特姆(ATOM)公司的发展小趣事

爱特姆科技自在美国德克萨斯州休斯顿市成立以来,便致力于电子行业的创新与发展。1998年,公司成功创立了“ATOM”品牌,标志着其正式踏入了品牌化发展的道路。起初,爱特姆以台湾、深圳、昆山为主要研发生产基地,凭借对技术的不断追求和对市场的敏锐洞察,逐渐在连接器领域取得了突破。

问答坊 | AI 解惑

一个嵌入式开发的资料(希望抛砖引玉)

嵌入式的开发如今是变的越来越复杂,对嵌入式工程师的要求越来越高。如何从一个应届毕业生, 或者普通的工程师向嵌入式迈进呢。网络上的资料很多,书店的书籍也很多,但大家都很难下手或者靠自学提高。 在最近的公司招聘面试的过程中,发现很多面试者( ...…

查看全部问答>

LCD501液晶屏电子钟和电压表程序

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 见附件  …

查看全部问答>

TMS320C6713DSP地址线问题

TMS320C6713DSP 地址线是20根吗?为什么它的标号是从EA2开始?(其地址标号为EA2-EA21) datasheet中所说的每个CE可选择128MB空间是怎么算出来的? 先谢谢您的答复!…

查看全部问答>

救命!如何在WinCE上创建ActiveX控件,能在Web上显示!

开发环境 EVC4.0 + SP4 系统  WinCE5.0 功能:想用Evc++常见一个ATL组件,并且在WinCE上可以使用,现在只想做一个Edit控件就行。 Web上的引用代码如下 这个过程在Windows下,没有问题,一切顺利。但在WinCE下,无论如何,无法在IE ...…

查看全部问答>

求救,按键驱动

现在我想写一个2440的按键驱动,只需要几个按键就可以了,比较(上,下,左,右功能)。 要求能够传递给任意进程中,比如按上下左右键能够操作控制界面(UI)。 请问是不是只能在提供的标准的键盘驱动中写,有没有更简单的方法,哪位大哥给点思路呀…

查看全部问答>

高品质LED产品指标性能

replyreload += \',\' + 756734;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

STM32的页擦除的擦除范围

页擦除 闪存的任何一页都可以通过FPEC的页擦除功能擦除;擦除一页应遵守下述过程: 检查FLASH_SR寄存器的BSY位,以确认没有其他正在进行的闪存操作; 设置FLASH_CR寄存器的PER位为’1’; 用FLASH_AR寄存器选择要擦除的页; 设置FLASH_C ...…

查看全部问答>

关于自适应相干模板法的问题

小弟接触单片机编程不到一年,最近在尝试用自适应相干模板法做50HZ工频干扰信号的数字陷波器,照着《自适应相干模板法在5 1系列单片机中的实现》里的算法写了C代码,用430运行后发现,不管输入什么频率的信号,输出都差不多,就是一串奇怪的方波, ...…

查看全部问答>

PIC16F1783ad转换显示为0,请教

PAGESEL START BANKSEL TRISA MOVLW   B\'00000001\' MOVWF   TRISA  ;设置PORTA的方向控制   BANKSEL LATA MOVLW   B\'11000001\' ; MOVWF   LATA BANKSEL AN ...…

查看全部问答>