LPC1768之模数转换ADC

发布者:MindfulBeing最新更新时间:2017-11-25 来源: eefocus关键字:LPC1768  模数转换  ADC 手机看文章 扫描二维码
随时随地手机看文章

悲催的是我的串口有点问题,没法print信息。只能Debug查看变量看数值了。幸好AD转换代码不多,用F10看的转换结果。具体配置参考datasheet各个寄存器的配置。

/*************************************************************************************      

*   main.c:  the main file   

*   NXP --> LPC1768  

*  

*     

*   Author  :   light                     

*   Date    :   2012-4-21    

*  

*   Email   :   lightwu@hotmail.com  

***************************************************************************************/  

  

#include  

#include "../Source/uart.h"  

  

#define     ADC_MAX     0XFFF  

  

uint32_t    AdcFlag = 1;  

/********************************************************************************  

** Descriptions         :ADC initialize  

**  

** parameters           :None   

** Returned value       :None  

*********************************************************************************/  

void AdcInit(void)  

{  

    LPC_SC->PCONP |= (1<<12);                  //打开ADC功率控制器  

    LPC_PINCON->PINSEL3 |= (3<<30);                //设为ADC管脚  

  

    LPC_ADC->ADCR |= (1<<5);                   //选择ADC0.5作为输入  

    LPC_ADC->ADCR |= (4<<8);  

    LPC_ADC->ADCR |= (1<<21);                  //正常工作模式  

  

//  NVIC_EnableIRQ(ADC_IRQn);              /* enable irq in nvic              */  

//  LPC_ADC->ADINTEN |= (1<<5);                 //中断使能  

}  

/********************************************************************************  

** Descriptions         :ADC start convert  

**  

** parameters           :None   

** Returned value       :None  

*********************************************************************************/  

void AdcStart(void)  

{  

    LPC_ADC->ADCR &= ~(7<<24);         //停止转换  

    LPC_ADC->ADCR |=  (1<<24);         //开始转换    

}  

/********************************************************************************  

** Descriptions         :ADC stop convert  

**  

** parameters           :None   

** Returned value       :None  

*********************************************************************************/  

void AdcStop(void)  

{  

    LPC_ADC->ADCR &= ~(7<<24);         //停止转换  

}  

/********************************************************************************  

** Descriptions         :ADC convert  

**  

** parameters           :None   

** Returned value       :None  

*********************************************************************************/  

void AdcCovt(void )  

{  

    while((~(LPC_ADC->ADGDR))&(1<<31));            //查询等待转换完成标志  

  

//  while(AdcFlag);                             //ADC转换完成中断标志  

//  AdcFlag = 1;                                //ADC转换完成中断标志置一  

}  

/********************************************************************************  

** Descriptions         :Get ADC convert value  

**  

** parameters           :None   

** Returned value       :ADC convet value  

*********************************************************************************/  

uint32_t GetAdcCovt(void )  

{  

    uint32_t AdcValue;  

  

    AdcStart();  

    AdcCovt();  

    AdcValue = ((LPC_ADC->ADGDR)>>4) & ADC_MAX;                //读取转换结果,12位最大值为0XFFF  

    AdcStop();  

  

    return AdcValue;  

}  

/********************************************************************************  

** Descriptions         :ADC finish interrupt  

**  

** parameters           :None   

** Returned value       :None  

*********************************************************************************/  

void ADC_IRQHandler(void)  

{  

    AdcFlag = 0;      

}  

  

  

/*----------------------------------------------------------------------------  

  The main Function   

 *----------------------------------------------------------------------------*/  

int main(void)  

{  

  

    SystemInit();  

    Uart0Init(115200);  

    AdcInit();  

  

    while(1)  

    {  

          

        GetAdcCovt();  

          

  

    }  

  


关键字:LPC1768  模数转换  ADC 引用地址:LPC1768之模数转换ADC

上一篇:LPC1768之外部中断
下一篇:2440外部中断实验遇到问题与总结

推荐阅读最新更新时间:2024-03-16 15:46

基于LPC1768的俄罗斯方块源代码,配合3.2寸TFT屏幕
程序运行后,用板子上的五向按键控制。 单片机源程序如下: #include stdlib.h #include stdint.h #include lcd_api.h #include ili_lcd_general.h #include LPC17xx.h typedef struct //方块结构体,包括类型,状态,坐标,颜色 { uint8_t type; //方块的类型(LJITOSZ) uint8_t state; //方块的状态(0、90、180、270°旋转) in
[单片机]
超低功耗、18位、差分PULSAR ADC驱动(CN0237)
电路功能与优势   图1所示电路使用超低功耗、18位1 MSPS ADCAD7982 ,由低功耗全差分放大器ADA4940-1来驱动。低噪声精密5.0V基准电压源 ADR395用于提供该ADC所需的5V电源。图1所示的所有IC均采用3 mm × 3 mm LFCSP或3 mm × 5 mm MSOP小型封装,从而有助于降低电路板成本和空间。   电路中ADA4940-1的功耗不到9 mW。18位1 MSPS AD7982 ADC的功耗仅7 mW (1 MSPS时),远低于市面上的同类ADC。此功耗也随吞吐量而变化。ADR395功耗仅为0.7mW,使系统总功耗低于17 mW。   图1 高性能18位差分ADC驱动器(简易
[模拟电子]
超低功耗、18位、差分PULSAR <font color='red'>ADC</font>驱动(CN0237)
单片机PWM波(AT89C51、ADC0808)
一、简介 此电路由AT89C51最小系统和ADC0808组成。 二、运行效果 三、代码 /*想要更多项目私wo!!!*/ #include reg52.h #define uint unsigned int #define uchar unsigned char sbit CLK = P2^4; sbit ST = P2^5; sbit EOC = P2^6; sbit OE = P2^7; sbit PWM = P3^0; void DelayMS(uint ms) { uchar i; while(ms--) { for(i=0;i 120;i++); } } voi
[单片机]
单片机PWM波(AT89C51、<font color='red'>ADC</font>0808)
IMEC详述ADC和60GHz无线开发
  在ISSCC(国际晶体管电路讨论会)上,IMEC研究员详细介绍了其在数据转换和无线60GHz的最新业绩。   在数据转换方面,IMEC的三篇论文详述了针对软件无线电(SDR),60GHz通信和传感器网络应用的超低功耗模数转换器(ADC)。位于比利时Leuven的IMEC微电子研发中心已经对其SAR(逐次逼近)架构、闪存和CABS(基于比较器的异步二进制搜索)ADC家族申请了专利,希望这些可以作为白盒IP授权应用到产品开发过程中。   IMEC研究人员开发了一个两步、7bit、150Msamples/s的ADC,达到每个转换步骤10fJ的品质因数。这个创新的CABS ADC架构包括一个1bit原始ADC和6bit副ADC。6
[模拟电子]
Atmel推出最快的12位ADC
Atmel公司宣布推出业界最快的时钟频率达500Msps的商用单芯片12位ADC,这种型号为AT84AS001TP器件是为帮助系统设计人员以高达250MHz采样率数字化信号而设计的,而此前,12位分辨率还从未达到250MHz的采样率。 现有12位商业产品均不能达到250MSps,因而设计人员只能在把模拟信号输入ADC前使用数个下行转换硬件级,并交叉采用数个ADC来达到高数据采样率。AT84AS001TP能使系统架构更简单,并提供更宽的采样信号。从而将使电信设施、高IF宽带数字接收器、测试和测量设备、高速数据采集和国防雷达及通信系统等应用领域从中获益。 AT84AS001TP采用TBGA192塑料封装,将有商业和工业温度范围两种
[新品]
副边变压器端接提升高速ADC的增益平坦度
      正确选择输入网络元件对于高速ADC的驱动和输入网络的平衡至关重要(参考应用笔记:“正确选择输入网络,优化高速ADC的动态性能和增益平坦度”)。       在较高IF应用中,端接电阻的位置非常重要。交流耦合输入信号可以在变压器的原边或副边端接,具体取决于系统对高速ADC增益平坦度和动态范围的要求。宽带变压器是一个常用元件,能够在较宽的频率范围内将单端信号转换成差分信号,提供了一种快速、便捷的解决方案。       原边端接       本文以MAX1124 (Maxim近期推出的250MHz、10位高IF ADC)为例,讨论不同的端接架构以及对高速ADC增益平坦度和动态范围的影响。我们首先以原边端接电路为
[电源管理]
副边变压器端接提升高速<font color='red'>ADC</font>的增益平坦度
设置高速ADC的共模输入电压范围
通信接收机包含基带采样和高速ADC,设计中输入共模电压范围(VCM)非常重要。特别是在单 电源 供电、采用直流耦合的低压 电路 中,VCM尤其重要。对于单 电源 供电 电路 ,送入 驱动 放大器和ADC的输入信号应该偏置在VCM范围内,从而消除放大器和ADC的性能障碍,因为放大器和ADC不需要在0V保持低失真和高线性度。本应用笔记给出了一个用于RF正交解调器前端的直流耦合电路,利用MAX1196构建电路。 对于包含基带采样、高速ADC的通信接收机,输入共模电压范围(VCM)非常重要。特别是对于单电源供电、直流耦合的低压系统,这个问题尤其关键。 对于单电源供电电路,送入驱动放大器和ADC的输入信号应该偏置在VCM范围内,从而消除
[模拟电子]
模拟工程师必知必会:带你全方位学习模数转换器
ADC关键性能指标及误区   由于ADC产品相对于网络产品和服务器需求小很多,用户和集成商在选择产品时对关键指标的理解难免有一些误区,加之部分主流厂商刻意引导,招标规范往往有不少非关键指标作被作为必须符合项。接下来就这些误区和真正的关键指标做一些探讨。   误区1: CPU数量和主频。 目前大部分厂商采用了类似的通用CPU架构,但还是可能采用不同厂家的CPU。即使是同一个厂家,也可能是不同系列。最关键的是CPU数量和主频并不代表性能,除非是同一个厂家的同一个软件。同样,完全相同的硬件配置,不同厂商的架构和系统发挥出来的性能可能相差数倍,正如完全相同的几个人在不同的管理环境下发挥出来的贡献差别会很大。并行计算处理不好,由于C
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved