导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教LPC2144 AD双通道转换问题[zx1221]

 *第38375篇: 请教LPC2144 AD双通道转换问题

  
楼 主:zx1221 2006年3月10日11:00
 请教LPC2144 AD双通道转换问题
使用AD0.1 AD0.2进行AD转换,但是测量p0.28 p0.29管脚电压只有0.5mv。应该是没有成功,不知哪里出了问题,麻烦帮看下。还有AD1转换完了是否要关掉再转换AD2?可以AD1 AD2写在一个程序里吗?我试了怎么都不行!程序如下:

void ADC1_Convert (void)
{   
    uint32 ADC_Data;
    PINSEL1 = (PINSEL1&0xF0FFFFFF)|0x01000000;//设置AD0通道1
    AD0CR = (1   <  < 1)                        |    // SEL=1,选择通道1
            ((Fpclk / 1000000 - 1)   <  < 8)    |    // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
            (0   <  < 16)                        |    // BURST=0,软件控制转换操作
            (0   <  < 17)                        |    // CLKS=0, 使用11clock转换
            (1   <  < 21)                        |      // PDN=1,正常工作模式
            (0   <  < 22)                        |      // TEST1:0=00,正常工作模式
            (1   <  < 24)                        |    // START=1,直接启动ADC转换
            (0   <  < 27);                             // 直接启动ADC转换时,此位无效
     
     DelayNS (5);
     
     ADC_Data = AD0DR1;
         
          AD0CR |= 1   <  < 24;                    // 进行第一次转换
        while ((AD0DR1 & 0x80000000) == 0);    // 等待转换结束
        AD0CR |= 1   <  < 24;                    // 再次启动转换
        while ((AD0DR1 & 0x80000000) == 0);    // 等待转换结束
        ADC_Data = AD0DR1;                    // 读取ADC结果
        ADC_Data = (ADC_Data >  >   6) & 0x3ff;
        ADC_Data = ADC_Data * 2475;            // 参考电压经过3/4分压
        ram[1] = ADC_Data / 1024;
}
    
    
void ADC2_Convert (void)
{   
    uint32 ADC_Data;
    PINSEL1 = (PINSEL1&0xF0FFFFFF)|0x04000000;//设置AD0通道2
    AD0CR = (1   <  < 2)                        |    // SEL=1,选择通道2
            ((Fpclk / 1000000 - 1)   <  < 8)    |    // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
            (0   <  < 16)                        |    // BURST=0,软件控制转换操作
            (0   <  < 17)                        |    // CLKS=0, 使用11clock转换
            (1   <  < 21)                        |      // PDN=1,正常工作模式
            (0   <  < 22)                        |      // TEST1:0=00,正常工作模式
            (1   <  < 24)                        |    // START=1,直接启动ADC转换
            (0   <  < 27);                             // 直接启动ADC转换时,此位无效
     
     DelayNS (5);    
      
     ADC_Data = AD0DR2;
      
        AD0CR |= 1   <  < 24;                    //切换到通道2并进行第一次转换
        while ((AD0DR2 & 0x80000000) == 0);    // 等待转换结束
        AD0CR |= 1   <  < 24;                    // 再次启动转换
        while ((AD0DR2 & 0x80000000) == 0);    // 等待转换结束
        ADC_Data = AD0DR2;                    // 读取ADC结果
        ADC_Data = (ADC_Data >  >   6) & 0x3ff;
        ADC_Data = ADC_Data * 2475;            // 参考电压经过3/4分压
        ram[2] = ADC_Data / 1024;
        dataReady=1;
}


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:寻良策,怎么实现一个动态交互的web server?

[下一篇主题]:关于6N137运用问题