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

* 89992: 请教LPC2144 AD双通道转换问题

   zx1221 
zx1221发表的帖子 

 请教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;
}


发表时间:2006年3月10日11:00:08

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:rabbitweb博控论坛重新开张了,可以去那看看 /P P http://www.bocon.
[下一篇帖子]:关于6N137运用问题请教:高速光耦6N137的工作电压是5V,但6脚OC门能接12V电压吗?最高能