ch573f DMA ADC疑問

我在每次上電后使用這個函數(shù)測量的第一個ADC值總是會在2900左右 不管測量源是多少


uint16_t abcBuff[40];

volatile uint8_t DMA_end = 0;

void Crank_Test()

{

? ? DMA_end = 0;

? ? ADC_AutoConverCycle(224);?

? ? ADC_ExtSingleChSampInit(SampleFreq_8, ADC_PGA_0);

? ? ADC_ChannelCfg(0);

? ? ADC_DMACfg(ENABLE, (uint16_t)(uint32_t)&abcBuff[0], (uint16_t)(uint32_t)&abcBuff[40], ADC_Mode_Single);

? ? PFIC_EnableIRQ(ADC_IRQn);

? ? ADC_StartDMA();

? ? while(!DMA_end);

? ? for(int i = 0; i < 40; i++)

? ? {

printf("abcBuff[%d]: %d\n", i, abcBuff[i]);?

? ? }

}

__attribute__((interrupt("WCH-Interrupt-fast")))

__attribute__((section(".highcode")))

void ADC_IRQHandler(void) //adc中斷服務(wù)程序

{

? ? if(ADC_GetDMAStatus())

? ? {

? ? ? ? ADC_StopDMA();

? ? ? ? R16_ADC_DMA_BEG = ((uint32_t)abcBuff) & 0xffff;

? ? ? ? ADC_ClearDMAFlag();

? ? ? ? DMA_end = 1;

? ? }

}


在上電的時候初始化的 并且也加了延遲 大概率會出現(xiàn)這個情況


查看GPIO是否配置為浮空的狀態(tài),如果涉及到引腳的切換,例如輸入上拉配置為浮空后,需要加個如200ms延時再進(jìn)行測試。

其他導(dǎo)致數(shù)據(jù)不準(zhǔn),例如buf未清0??梢允褂肁DC的例程做一下這個測試。如果還有問題可以發(fā)送至lpc@wch.cn,我們進(jìn)行查看。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频