LPC1768的ADC是否每次只能进行一个通道的采样?
我同时Enable两个通道, 第二个打开的通道好像读不到有效数据 Burst 模式被你吃了········ BURST模式可以不开中断吗哪位有BURST模式下多通道的例子啊 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;
}
}
mark!标记一下! 哪位有BURST模式下多通道的例子啊
我现在使用BURST模式采集三个通道,没有使用中断,就是隔一段时间读一次各通道的转换值,但是有时上电后AD却不转换,何故啊 我用的ADC+DMA 8各通道BURST 模式工作的,每个通道才256个点 然后做FFT变换 现在遇到的问题是 程序工作正常1通道采样很好,但是2、3、4、5、6通道不是会有4095 这个值误差,正在解决中!向高手请教哦~ 没有跳过,同样期待 同求,LPC17xx,ADC+DMA 8通道BURST 例程
页:
[1]