記錄-cubemx配置STM32F334雙ADC+DMA同步規則轉換

随笔日记發表於2024-05-13

前言

樣例專案使用場景,使用PID做多路電流調節,實現電流穩定輸出,所以需要用到多路ADC檢測。

本次專案使用的是ST的F334晶片,外部高速時鐘8M,使用ADC1、ADC2同步規則轉換模式並且用DMA讀取ADC採集資料。

基礎知識點

1.ADC轉換時間 = 取樣週期 + 12.5(ADC時鐘週期)

2.同步規則模式

在同步規則模式中需要特別注意3個點,如下圖1,2,3所示。

取樣轉換如下圖4所示,每次對屬於ADC模組的2個通道進行轉換,轉換結束後產生DMA請求,DMA按照ADC1,ADC2設定通道

順序依次將資料取走,然後放到指定的記憶體空間。

DMA記憶體資料結構中的ADC取樣資料,高16位為ADC2取樣值,低16位為ADC1取樣值,如下圖所示。

注意點:

1.若使用定時器觸發ADC採集時,定時器的觸發時間不能小於ADC最小完成取樣時間。比如此晶片ADC最大時鐘為72MHz,最小採用週期為1.5Cycles,

則完成取樣一個通道最小時間為0.19us,則定時器觸發時間不能小於0.19us.

2.在雙ADC模式裡,當轉換配置成由外部事件觸發時,使用者必須將其設定成僅觸發主ADC,從ADC設定成軟體觸發,這樣可以防止意外的觸發從轉換。

但是,主和從ADC的外部觸發必須同時被啟用。

3.在雙ADC模式裡,為了在主資料暫存器上讀取從轉換資料,必須使能DMA位,即使不使用DMA傳輸規則通道資料。

可參考《stm32中文參考手冊》

硬體介面配置情況:

ADC1:CH1,CH2,CH3,CH4 做電流檢測。CH11,CH12 做溫度檢測。

ADC2:CH1,CH2,CH3,CH4 做電流檢測。

cubemx配置:

1.配置ADC1時鐘,通道個數,通道採集順序,通道取樣週期,無外部觸發,配置DMA。

2.配置ADC2時鐘,通道個數,通道採集順序,通道取樣週期,無外部觸發。

注:

1.ADC2不需要配置DMA。

2.這裡ADC2的Rank配置中最後的2個通道都配置為通道1的原因,檢視同步規則模式圖示。

軟體設定啟動ADC,獲取ADC採集值,最後雙ADC同步規則模式樣例結束,

重點:

1.根據專案實際情況,最好使用外部觸發ADC取樣。本次樣例未使用外部觸發ADC取樣,所以取樣時間不能設定太快,否則會導致主程式不能執行,而一直

執行ADC取樣完成中斷。

2.在雙ADC同步模式下,兩個ADC不能轉換同一個通道,兩個ADC的規則轉換序列的通道個數應該相同,每個通道的取樣週期也應該相同,
以使得兩個ADC能保持同步。

相關文章