这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » LPC2210,ADC,BURST 请教LPC2210中ADC的BURST转换模

共2条 1/1 1 跳转至

LPC2210,ADC,BURST 请教LPC2210中ADC的BURST转换模式问题。

院士
2006-09-17 18:14:16     打赏
LPC2210,ADC,BURST 请教LPC2210中ADC的BURST转换模式问题。



关键词: LPC2210     BURST     请教     转换     模式     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 拿到2200开发实验板有一段时间了,最近想试试ADCBURST模式到底是怎么回事,但是运行起来问题多多。还望大家多指点一下啊~~~~:(
    具体是这样的:设置开发板上的AIN0~1进入BURST模式,进行AD转换,我试图在中断处理程序中,用一个数组ADCData[ADCChannel]来保存ADDR的值。但是调试起来却很奇怪。用DebugInExRam模式,在中断处理程序的最后设置断点,然后全速运行。此时观察ADCData[ADCChannel]值,发现数组中保存的通道没有规律,就是ADCData[0]保存的有可能是通道0的值0xc0004dc0或者通道1的值0xc1009b00,ADCData[1]也一样。
    如果在中断处理程序中不设置断点,程序全速运行,通道倒是对了,但结果更奇怪。ADCData[0]的值居然是0xc0009b00,ADCData[1]的值是0xc1009b00。而ADCChannel的值最后始终是1。
真是让我非常郁闷啊~~~~周工救我~~!

    相关代码如下:
/****************************************************************************
* 名称:ADCIRQ()
* 功能:ADC中断服务程序函数
* 入口参数:无。
* 出口参数:无。
* 全局变量:ADCChannel    ADC通道号
*          ADCData[]     ADC结果缓存数组   
****************************************************************************/
void __irq ADCIRQ()
{
    ADCData[ADCChannel] = ADDR;                       //读取AD转换结果
    
    if ((++ADCChannel) > 1)
    {
        ADCChannel = 0;                                //恢复ADC通道为0
        ADCR = ADCR & 0xFFFEFF03;          //停止BURST模式
    }
    
    VICVectAddr = 0;
}

主函数中的ADC设置代码:
   ADCR = (0x03 << 0)                  |        // SEL = 0x03 ,选择通道0~1
         ((Fpclk / 1000000 - 1) << 8) |         // CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟 为1MHz     
          (1 << 16)                    |        // BURST = 1 ,启用BURST模式      
          (0 << 17)                    |         // CLKS = 0 ,使用11clock转换     
          (1 << 21)                    |         // PDN = 1 , 正常工作模式(非掉电转换模式)     
          (0 << 22)                    |         // TEST1:0 = 00 ,正常工作模式(非测试模式)     
          (0 << 24)                    |         // START = 0 ,不软件启动ADC转换 
          (0 << 27);                            // EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换),未使用。 1: 自己顶ADDR中的24~26位,CHN是不是就是AD转换通道的指示?感觉应该是吧。《ARM与嵌入式系统基础教程》上面写的是:“这些位包含的是LS位的转换通道”。不清不楚的,应该是转换通道哦。

BURST模式到底怎么用?可以用中断读取结果嘛?大家给点意见吧 2: 请教请问BURST=1时,置 START = 0 ,不软件启动ADC转换 那么ADC如何启动?若置START=001可以启动否?这个ADC好伤脑筋啊!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]