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

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

ADC在轉換第一個通道時,DMA已經準備好搬運數據,所以DMA的第一次搬運發生在ADC的第一個通道轉換完成后,故數據將不會錯位。
所以小伙伴知道了嗎?ADC+DMA使用的時候,一定要先配置DMA,再配置ADC哦。
-
單片機
+關注
關注
6065文章
44944瀏覽量
648037 -
adc
+關注
關注
99文章
6658瀏覽量
548512 -
GD32
+關注
關注
7文章
419瀏覽量
25235 -
muc
+關注
關注
0文章
15瀏覽量
11601
發布評論請先 登錄

GD32F310-ADC規則組連續采樣
在GD32F427開發板上實現ADC規則組連續采樣
STM32G070 DMA ADC通道數據錯位
【GD32】GD32讀取ADC數據

【GD32】GD32 DMA+ADC多通道掃描

如何通過GD32 MCU內部ADC參考電壓通道提高采樣精度?

GD32 ADC轉換時間如何計算?

評論