我們知道,使用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哦。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6076文章
45494瀏覽量
670262 -
adc
+關注
關注
100文章
7511瀏覽量
555916 -
GD32
+關注
關注
7文章
432瀏覽量
27339 -
muc
+關注
關注
0文章
15瀏覽量
11714
發布評論請先 登錄
相關推薦
熱點推薦
GD32F310-ADC規則組連續采樣
即可配置。有一點疑問的地方就是ADC_CTL1寄存器中的 ETSRC[2:0] 的軟件觸發選項,目前是不用配置也不影響你的軟件觸發ADC轉換。注入通道的 ETSIC[2:0] 沒有測試,大致應該是一樣的。原作者:兆易創新
發表于 10-21 15:21
在GD32F427開發板上實現ADC規則組連續采樣
ADC 簡介及特點器件中集成了一個 12 位 2.6 MSPS 多通道 ADC。 一共有19個多路復用通道:16個外部
發表于 11-25 11:11
STM32G070 DMA ADC通道數據錯位
STM32G070 配置DMA ADC轉換。想通過軟件定時觸發連續轉換一個序列后停止。測試時發現采樣時間設置快了會出現ADC通道數據
發表于 03-01 16:56
【GD32】GD32讀取ADC數據
GD32的ADC有很多模式,這里教大家使用最簡單的軟件觸發讀取ADC,我使用的芯片是 GD32F350K8U6使用步驟1.初始化IO引腳設置為模擬輸入模式2.初始
發表于 12-02 15:06
?34次下載
【GD32】GD32 DMA+ADC多通道掃描
芯片:GD32F350 運行在8M目標:每10ms讀取三個adc通道,并且通過DMA傳輸流程1.配置DMA傳輸2.配置ADC模式和通道3.配
發表于 12-02 15:06
?24次下載
如何通過GD32 MCU內部ADC參考電壓通道提高采樣精度?
ADC采樣精度受很多因素影響,比如電源波動、參考電壓波動、輸入信號波動等,GD32 MCU內部提供了一個參考電壓通道,理論上可以優化由于電源和參考電壓較大波動引入的
GD32 ADC轉換時間如何計算?
GD32 MCU當前產品的ADC都是SAR ADC,它有著轉換速度快,精度高的優點,剛好適合在一些需要快速ADC轉換的場合使用,比如電機應用。那么小伙伴們知道如何計算
GD32 ADC規則組多通道采樣,數據發生錯位?
評論