我們知道,使用ADC規(guī)則組(常規(guī)組)多通道采樣時,必須要配合DMA使用,但有的小伙伴遇到這種應用下數據錯位的情況,比如預設的轉換順序是通道0->通道1->通道2,但定義的數據buffer中的采樣值卻是通道1->通道2->通道0,那這是為什么呢?
出現這種情況的一個可能原因是——ADC先使能再去配置DMA。我們來看下面的時序:
如果先配置并使能ADC,當觸發(fā)信號來臨,ADC開始轉換,若ADC轉換到通道1的時候,DMA才配置并使能,那么DMA是不會搬運通道0的數據的,而是當通道1的轉換結束后,DMA才開始搬運第一個數據到buffer[0],所以buffer中的數據順序就變成了數據1->數據2->數據0。
我們再來看下先配置DMA再配置ADC的時序:
ADC在轉換第一個通道時,DMA已經準備好搬運數據,所以DMA的第一次搬運發(fā)生在ADC的第一個通道轉換完成后,故數據將不會錯位。
所以小伙伴知道了嗎?ADC+DMA使用的時候,一定要先配置DMA,再配置ADC哦。
-
單片機
+關注
關注
6022文章
44375瀏覽量
628280 -
adc
+關注
關注
97文章
6296瀏覽量
542402 -
GD32
+關注
關注
7文章
400瀏覽量
23971 -
muc
+關注
關注
0文章
14瀏覽量
11386
發(fā)布評論請先 登錄
相關推薦
評論