szcs 发表于 2013-6-21 08:15:51

LPC1768的ADC是否每次只能进行一个通道的采样?

我同时Enable两个通道, 第二个打开的通道好像读不到有效数据

kalo425 发表于 2013-8-1 10:29:08

Burst 模式被你吃了········

19781011 发表于 2013-12-6 17:23:23

BURST模式可以不开中断吗
哪位有BURST模式下多通道的例子啊

menglogic 发表于 2013-12-6 18:07:09

BURST 我也调不通。
就直接使用中断方式
void adcInit (void)
{
    uint32_t ulTemp;

    LPC_SC->PCONP|= 1 << 12;                                                            /* 打开ADC的功率控制位          */
    LPC_PINCON->PINSEL1 &=~((0x03 << 14) | (0x03 << 16) |(0x03 << 18) |(0x03 << 20));
    LPC_PINCON->PINSEL1 |= (0x01 << 14) | (0x01 << 16) |(0x01 << 18) |(0x01 << 20);         /* P0 23 24 25 26                     */
    ulTemp = (25000000 / (1000000))-1;
    ulTemp = 0                                                                  /* 选择AD0.0 1,2,3为AD输入引脚      */
         |( ulTemp << 8)                                                             /* 转换时钟为13MHz            */
         |(0 << 16)                                                                       /* BURST=0,不使用Burst模式      */
         |(0 << 17)                                                                                                        
         |(1 << 21)                                                                       /* PDN = 1,正常工作模式      */
         |(0 << 24)                                                                    /* START=0,在Burst模式下,      */
         |(0 << 25)                                                /* 起始位(bit24~26)必须为0   */       
         |(0 << 26);
       
         LPC_ADC->ADCR = ulTemp;
          LPC_ADC->ADINTEN = 1<<8;                                                                          /* 通道0,1,2,3中断使能                */
          NVIC_EnableIRQ(ADC_IRQn);                                                                               
         NVIC_SetPriority(ADC_IRQn, 8);
      LPC_ADC->ADCR |= 1 << 24;
}
void ADC_IRQHandler(void)
{
        u32 value=0;
       
        value = LPC_ADC->ADDR0;                                          /* 读取通道0的值                */
        value = (value >> 4) & 0xfff;
        ulADCbuf = (value*3300)/4096;
       
        value = LPC_ADC->ADDR1;                                          /* 读取通道1的值                */
        value = (value >> 4) & 0xfff;
        ulADCbuf = (value*3300)/4096;
       
        value = LPC_ADC->ADDR2;                                          /* 读取通道2的值                */
        value = (value >> 4) & 0xfff;
        ulADCbuf = (value*3300)/4096;
       
        value = LPC_ADC->ADDR3;                                          /* 读取通道3的值                */
        value = (value >> 4) & 0xfff;
        ulADCbuf = (value*3300)/4096;
       

        if(Adc_Chanel<4)
        {
                LPC_ADC->ADCR &=~((1 << 0)|(1 << 1)|(1 << 2)|(1 << 3));
                LPC_ADC->ADCR |=1<<Adc_Chanel;
                Adc_Chanel++;
        }
        else
        {
                Adc_Chanel=0;                                                       
        }
       
}

Honolulu 发表于 2013-12-7 11:44:12

mark!标记一下!

19781011 发表于 2014-1-3 14:15:24

哪位有BURST模式下多通道的例子啊

我现在使用BURST模式采集三个通道,没有使用中断,就是隔一段时间读一次各通道的转换值,但是有时上电后AD却不转换,何故啊

Honolulu 发表于 2014-2-8 11:56:15

我用的ADC+DMA 8各通道BURST 模式工作的,每个通道才256个点 然后做FFT变换

Honolulu 发表于 2014-2-8 11:58:15

现在遇到的问题是 程序工作正常1通道采样很好,但是2、3、4、5、6通道不是会有4095 这个值误差,正在解决中!向高手请教哦~

爺@龙行天下 发表于 2014-4-15 09:30:16

没有跳过,同样期待

popo_new 发表于 2015-9-8 20:56:28

同求,LPC17xx,ADC+DMA 8通道BURST 例程
页: [1]
查看完整版本: LPC1768的ADC是否每次只能进行一个通道的采样?