mini2440裸机试炼之--A/D模拟信号转换

发布者:bdwhsc最新更新时间:2020-07-06 来源: eefocus关键字:mini2440  模拟信号转换 手机看文章 扫描二维码
随时随地手机看文章

实现功能

        通过开发板上的滑动变阻器控制的模拟信号经过A/D转换器

        转换为数字信号用uart_printf()打印在串口上。 并且滑动

        变阻器同时控制指示灯led的闪烁速度(时长)。


S3C2440ADC的主要特性如下:


    ●分辨率:10位


    ●最大转换速率:500KSPS


    ●微分线性度误差:±1.0 LSB


    ●积分线性度误差:±2.0 LSB


    ●供电电压:3.3V


    ●模拟输入电压范围:0~3.3V


    ●模拟输出数值范围:0~1023


ADC原理

ADC是一种将模拟信号转化为数字信号的方法,一般要经过采样、保持、量化、编码4个步骤。在实际电路中,有些过程是合并进行的,如采样和保持,量化和编码在转换过程中时同时实现的。由奈奎特采样定理可知,当采样频率大于模拟信号中最高频率的2倍时,采样值才能不失真地反映原来模拟信号。

从图1可以看出,ADC共有8路模拟输入,其中XP、XM、YP和YM是触摸屏使用的4路,剩下的4路模拟输入A[3:0]可以用于一般的ADC输入通道(AIN0、AIN1、AIN2和AIN3)。当触摸屏引脚(YM、YP、XM和XP)为禁止时,这些端口可以被用于ADC的模拟输入端口(AIN4、AIN5、AIN6和AIN7)


对于S3C2440处理器,ADC输入时钟是由PCLK分频得到的,如图2所示

ADC寄存器

ADCCON部分

图3


根据图3,ADCCON控制寄存器


ECFLG 是转换结束标志位,当转换结束时,ECFLG值为1,进入转换状态为0;


PRSCEN是使能预分频控制位 ;


PRSCVL 是预分频值放置位;0~255


■当PRSCEN为1时,设置PRSCVL的值将会决定AD转换的时间。ADC使用的时钟是系统的PCLK,由于main函数设置mpll为400MHZ,所以PCLK = 50MHz,设置PRSCVL的值为49,那么:


A/D 转换的频率 = 50MHz / (49+1) = 1 MHz


A/D 转换的时间 = 1 /(1MHz / 5cycles)=5 uS


由此可知当PRSCVL的值越小,A/D 转换的时间越短,A/D 转换的频率也就越大。


注意:当从待机模式中变换到正常工作模式时,ADC的预分频器必须在最后的3个ADC时钟前使能????


SEL_MUX是模拟输入通道选择控制器


READ_START要使能A/D转换启动,就必须禁止READ_ START


ENABLE_START 使能A/D转换控制位


ADCDAT0

由于只是通过AIN0模拟信号输入。并没使用触摸屏功能,所以,ADCDAT0只考虑普通ADC转换数值(模拟信号转换的数字数值存于XPDATA)

W1可调电位器

mini2440上有一个可调电位器,如下图所示。电位器的中间抽头部分接在ADC输入通道AIN0上,当电位器滑动头位于最下端时,AIN0引脚电压为0V;当电位器滑动头位于最上端时,AIN0引脚电压为3.3V;当电位器上、下滑动时,AIN0引脚的电压值会在0~3.3V之间变换。由此可知,W1是通过AIN0模拟输入通道间模拟信号传给ADC,再进行转换的。

代码部分

#include"2440addr.h"     //引脚宏定义

#include"def.h"          // U8 U32宏定义

#include"2440lib.h"      //使用Uart_Printf,Dalay声明,Uart_Printf定义在2440lib.c文件

 

/*

当PRSCEN为1时,设置PRSCVL的值将会决定AD转换的时间。ADC使用的时钟是系统的PCLK

,由于main函数设置mpll为400MHZ,所以PCLK = 50MHz,设置PRSCVL的值为49,那么:

 

A/D 转换的频率 = 50MHz / (49+1) = 1 MHz

 

A/D 转换的时间 = 1 /(1MHz / 5cycles)=5 uS

*/

/********ADC********/

#definePRSC_EN     0x1           //允许预分频

#define PRSCVL      0x19          //预分频值

#defineSEL_MUX     ~0x7          //模拟通道选择AIN0通道

#define STDBM       0x0           //正常工作模式

#defineREAD_START  0x0           //读数时不进行A/D转换

#defineADC_STAR    0x1           //ADC开启

 

/********LED*********/

#defineLED1_out  (1<<(5*2))

#defineLED2_out  (1<<(6*2))

#defineLED3_out  (1<<(7*2))

#defineLED4_out  (1<<(8*2))

#defineLED4_ON   (0x0E<<8)       //LED1+LED2+LED3+LED4 ON

#defineLED_OFF   (0x0F<<5)

 

void ADC_display(){

    Uart_Printf("n");

    Uart_Printf("n");

    Uart_Printf("n");

              Uart_Printf("---------HELLOADCn");

              Uart_Printf("PRSC_EN:  %5x  允许预分频n",PRSC_EN);

              Uart_Printf("PRSCVL:   %5x  预分频值n",PRSCVL);

              Uart_Printf("SEL_MUX:   ~0x7  模拟通道选择AIN0通道n",SEL_MUX);

    Uart_Printf("STDBM:    %5x  正常工作模式n",STDBM);

              Uart_Printf("READ_START:%4x  读数时不进行A/D转换n",READ_START);

              Uart_Printf("ADC_STAR:  %4x ADC开启n",ADC_STAR);

              Uart_Printf("变阻器控制的模拟信号经过A/D转换器转换为n");      

    Uart_Printf("数字信号用串口显示,并且滑动变阻器同时控n");

    Uart_Printf("制指示灯led的闪烁速度(时长)n");              

   Uart_Printf("#########################################nn");               

}

//初始化AD控制寄存器

void ADC_INIT(){

  rADCCON&=(~((0x1<<14)|(0xff<<6)|(0x7<<3)|(0x1<<2)|(0x1<<1)|(0x1<<0)));

  rADCCON=(PRSC_EN<<14)|(PRSCVL<<6)|(SEL_MUX<<3)|(STDBM<<2)|(READ_START<<1);

   rADCCON|=(ADC_STAR<<0);          //开启ADC(开启ADC后,此位会自动清零)

 

}

 

//初始化LED,四个LED输出

voidLED_INIT(){                   

   rGPBCON=LED1_out|LED2_out|LED3_out|LED4_out;

}

 

//LED函数

void W1_LED(intget_data0){        

    rGPBDAT= LED4_ON;     //点亮四个LED

    Delay(get_data0);     //ADC后十位时延函数

    rGPBDAT= LED_OFF;     //熄灭LED

}

 

//串口打印变阻器模拟信号数值

void W1_ADC(int*read_xpdata){

              ADC_INIT(); //初始化AD控制寄存器

    /*****串口打印ADC数据函数****/

    while(rADCCON & 0x1);                //因为成功启动A/D转换后,该位会

                                          //自动清零,因此在这里检查ADC是否真正启动

    while(!(rADCCON & (1<<15)));            //使用查询方式等待ADC转换结束

   *read_xpdata=(int)(rADCDAT0&0x3ff);  //读取ADCDAT0后十位

    Uart_Printf("n HELLO ADC# W1值为: %04d ",*read_xpdata);//串口输出ADCDAT0后十位值

    Delay(500);

              }

 

//子main函数

voidADC_read_W1(){                    

  

    int read_xpdata0;

    ADC_display(); 

    LED_INIT(); //初始化LED

  

    while(1)

    {

     /*串口打印变阻器模拟信号数值*/

     W1_ADC( &read_xpdata0 );//传递read_xpdata0地址,改变read_xpdata0的值来给W1_LED函数使用

   

     /*****LED点亮函数*****/

     W1_LED(read_xpdata0);                 //LED函数

    

    }

 

}

 

◆串口输出截图

关键字:mini2440  模拟信号转换 引用地址:mini2440裸机试炼之--A/D模拟信号转换

上一篇:mini2440裸机试炼之—RTC闹钟中断,节拍中断
下一篇:mini2440裸机试炼之——PWM定时器按键更改频率

推荐阅读最新更新时间:2024-11-06 11:56

iPhone X再遇麻烦?3D感应部件产量很难达标
新浪美股讯 北京时间9月28日凌晨彭博援引媒体报道称,苹果公司的iPhone X由于3-D感应器制造过程的问题,而正面临生产延误。 《日经新闻》周二引述知情人士报道称,iPhone X的面部识别的3-D感应部件产量很难达到令人满意的水平。《华尔街日报》周三也引述知情者报道称,延迟与一组3D感应零件的组装有关。 该报称,上述感应零件的组装是由LG Innotek Co。和夏普执行的。 苹果公司在iPhone X出货的问题上不太顺利。该款手机定于11月3日上市,比配置更低的iPhone 8晚了六周时间。
[手机便携]
LTM4627设计的15A高效DC-DC电源技术
本文介绍了LTM4627主要特性, 简化方框图,以及多种应用电路.Linear 公司的LTM4627是输出电流 15A的高效DC/DC转换器,输入电压从4.5V到20V,输出电压从0.6V到5V,并行电流输出电流可达60A,效率高达93%.主要用在通信服务器和网络设备,ATCA和存储卡,工业设备以及医疗系统. LTM4627应用: Telecom Servers and Networking Equipment ATCA and Storage Cards Industrial Equipment Medical Systems 图1.LTM4627简化方框图 图2.LTM4627外形图 图3.LTM46271.2V/1
[电源管理]
LTM4627设计的15<font color='red'>A</font>高效DC-DC电源技术
MSP430 单片机 读取 程序 LM75A LM75 温度传感器
http://www.ti.com/lit/ds/symlink/lm75a.pdf https://item.szlcsc.com/8440.html 三根地址全部接了GND 器件地址 寄存器列表
[单片机]
MSP430 单片机 读取 程序 LM75<font color='red'>A</font> LM75 温度传感器
VP-5565D示波器运用办法
1 .笔直有些的运用办法 ( 1 )笔直办法开关 CH1 , CH2 —— CHl 或 CH2 的独自作业及闪现。 双踪作业时,把信号接到两通道的 INPUT 插座上,挑选下面的 CHOP 或 ALT 。 CHOP ——通常用于比 0.5ms / div 还慢的扫描时的多踪作业,以及被用于多踪的单扫描作业。通道间的改换与扫描无关,以 300kHz 的重复频率进行改换。 ALT ——在扫描完毕时进行 CHl , CH2 的切换。比 0.5ms / div 还慢的扫描观测时,用 CHOP 办法观测更有用。 ADD ——闪现 CHl 和 CH2 信号的代数和或差。 这个操作有必要留神以下几点。 (a) 不能跨过最大输入电压。 (b) 不
[测试测量]
VP-5565<font color='red'>D</font>示波器运用办法
中国这个全球最大3D打印市场有多大含金量
12月9日,王乾带着技术团队来到上海举行的一场3D打印展参观,他们六人来自浙江嘉兴的一座污水处理设备厂,水泵是这座工厂最主要的产品。   最近半年,王乾都在考虑他所在的工厂是否也能用3D打印的方式,降低零件开模制造的时间,更快地满足客户们提出的产品个性化定制需求。相比于传统的制造工艺,3D打印最为人称道的优点,在于所见即所得——快速地将停留在图纸上的设计“打印”成最终成品,并且能拥有相当的精度。   这次来上海,王乾就是希望能在展会上寻找到所需要的解决方案。在左华云的展台前,这群来自嘉兴的参观者们停下了脚步,围着展位上的一台3D打印机讨论起了打印精度等技术问题。左华云是杭州多歌三维科技有限公司(下称杭州多歌)的创始人,这
[嵌入式]
Silicon Labs进军D类音频放大器市场 称新品将改变业界格局
Silicon Labs日前宣布推出公司首款D类音频放大器Si270x,公司音频放大器总监Rick Beale表示,该款产品的推出,可“改变现今D类放大器市场格局。” 根据Databeans 2009年的数据显示,目前音频放大器市场年复合增长率为7.5%,并且该报告预计D类放大器市场未来5年年复合增长率将达22%,超过A/B类放大器市场总量。正是这种替代趋势,使Silicon Labs在三年前着手D类音频放大器产品的研制。Beale表示,此款产品完全基于内部研发,共耗时三年。 图:Databeans统计及预测 尽管Silicon Labs此前从未生产过任何音频放大器,但Beale对于Si270x的市场表
[模拟电子]
Silicon Labs进军<font color='red'>D</font>类音频放大器市场 称新品将改变业界格局
iPhone 8也要延期了 曝意法半导体3D镜头产能低下
据外媒报道,苹果iPhone 8将会集众多黑科技于一身,比如将会搭载3D摄像头。不过也有坏消息,就是iPhone 8的发售日期将可能会被推迟,原因是意法半导体的3D照相系统产能拖累。 意法半导体3D镜头产能低(图片来自baidu)   消息称,意法半导体的这套3D照相系统可能采用先进的激光技术,或成为苹果新引入增强现实与面部识别功能的一个重要组成部分。而为了满足苹果新品的惊人需求,意法半导体需要更多时间去备货。消息人士还透露,这些零部件可能无法在9月前准备好。   另外日本媒体有报道称,全新设计的那款新iPhone可能并不会叫iPhone8,而有可能会被冠以iPhone Edition的名称。   之前爆料称,今年苹果预计会发
[手机便携]
兆易创新第二代车规MCU GD32A7系列亮相AEIF
随着中国汽车产业的迅速崛起,越来越多的国内汽车制造商和系统供应商正积极拓展国际市场。这一趋势不仅彰显了中国品牌日益增强的全球影响力,也对国内半导体供应商提出了全新的挑战与要求。 在近日举行的第十一届汽车电子创新大会(AEIF 2024)暨汽车电子应用展上, 兆易创新 汽车产品部负责人何芳发表了题为“驾驭未来,智领车规:开创可延展平台的新一代MCU”的主题演讲。此次演讲不仅展示了 兆易创新 面对新挑战时所采取的战略应对措施,还全面呈现了公司在 车规级 产品布局方面的最新规划。通过这样的分享, 兆易创新 向业界传递了其致力于技术创新、满足全球化需求以及提供高性能车规产品和解决方案的决心。 成为新形势下的核心战略伙伴
[汽车电子]
兆易创新第二代车规MCU GD32<font color='red'>A</font>7系列亮相AEIF
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved