我們知道,使用ADC規(guī)則組(常規(guī)組)多通道采樣時,必須要配合DMA使用,但有的小伙伴遇到這種應(yīng)用下數(shù)據(jù)錯位的情況,比如預(yù)設(shè)的轉(zhuǎn)換順序是通道0->通道1->通道2,但定義的數(shù)據(jù)buffer中的采樣值卻是通道1->通道2->通道0,那這是為什么呢?
出現(xiàn)這種情況的一個可能原因是——ADC先使能再去配置DMA。我們來看下面的時序:

如果先配置并使能ADC,當(dāng)觸發(fā)信號來臨,ADC開始轉(zhuǎn)換,若ADC轉(zhuǎn)換到通道1的時候,DMA才配置并使能,那么DMA是不會搬運(yùn)通道0的數(shù)據(jù)的,而是當(dāng)通道1的轉(zhuǎn)換結(jié)束后,DMA才開始搬運(yùn)第一個數(shù)據(jù)到buffer[0],所以buffer中的數(shù)據(jù)順序就變成了數(shù)據(jù)1->數(shù)據(jù)2->數(shù)據(jù)0。
我們再來看下先配置DMA再配置ADC的時序:

ADC在轉(zhuǎn)換第一個通道時,DMA已經(jīng)準(zhǔn)備好搬運(yùn)數(shù)據(jù),所以DMA的第一次搬運(yùn)發(fā)生在ADC的第一個通道轉(zhuǎn)換完成后,故數(shù)據(jù)將不會錯位。
所以小伙伴知道了嗎?ADC+DMA使用的時候,一定要先配置DMA,再配置ADC哦。
-
單片機(jī)
+關(guān)注
關(guān)注
6076文章
45499瀏覽量
670621 -
adc
+關(guān)注
關(guān)注
100文章
7513瀏覽量
556082 -
GD32
+關(guān)注
關(guān)注
7文章
432瀏覽量
27373 -
muc
+關(guān)注
關(guān)注
0文章
15瀏覽量
11715
發(fā)布評論請先 登錄
GD32 ADC規(guī)則組多通道采樣,數(shù)據(jù)發(fā)生錯位? #GD32 #ADC #單片機(jī) #嵌入式開發(fā)
ADC的規(guī)則通道和注入通道混合使用(轉(zhuǎn))
GD32F310-ADC規(guī)則組連續(xù)采樣簡介
GD32F310-ADC規(guī)則組連續(xù)采樣
在GD32F427開發(fā)板上實現(xiàn)ADC規(guī)則組連續(xù)采樣
STM32G070 DMA ADC通道數(shù)據(jù)錯位
【GD32】GD32讀取ADC數(shù)據(jù)
【GD32】GD32 DMA+ADC多通道掃描
你了解GD32 MCU的命名規(guī)則嗎
GD32 ADC內(nèi)部通道采樣異常原因
如何通過GD32 MCU內(nèi)部ADC參考電壓通道提高采樣精度?
GD32 ADC轉(zhuǎn)換時間如何計算?
【GD32F470紫藤派開發(fā)板使用手冊】第八講 ADC-規(guī)則組多通道采樣實驗
【GD32H757Z海棠派開發(fā)板使用手冊】第八講 ADC-規(guī)則組多通道采樣實驗
【GD32F303紅楓派開發(fā)板使用手冊】第十二講 ADC-雙軸按鍵搖桿多通道循環(huán)采樣實驗
GD32 ADC規(guī)則組多通道采樣,數(shù)據(jù)發(fā)生錯位?
評論