STM32G4多通道連續高速采樣


1. 基本思路

對於stm32的ADC多通道采樣,由於不是每個通道都具備轉換結果寄存器,因此在多通道采樣時通常需要采用DMA,但是考慮到敏感場合DMA錯誤或導致ADC Overrun,從而導致待控制的Power Stage故障。鑒於此,考慮采用Auto Injection模式配和一個連續采樣的Regular通道實現多通道連續采樣,此時連續采樣的規則通道和注入通道交替進行,從而實現所設定的通道依次連續采樣。經測算,采用此方法采樣25通道,所需時間在2us以內。

此時可用的通道數為5個,轉換結果分別存放與RDATA和JDATA1-4,如下圖所示。

2. 實現方法

以下采用STM32CubeIDE說明實現方法。

(1) 電源和時鍾配置

基於手冊給出的限制進行設置。

對於多ADC單端情況,設置電源Range1。

由PLLP引出ADC的時鍾,fADC<52Mhz。

ADC配置頁,取時鍾分頻如下。

(2) 通道和采樣模式設置

通道選擇見上圖,6、7、15通道被選中,取單端模式。設置一個規則采樣通道,並使之為連續模式,新值overwrite,軟件觸發轉換。

image

使能注入轉換,設置所需Rank數和響應的通道,選擇Auto Injected Mode。

對於采樣時間的選擇,不妨選擇與手冊中測試條件相同的設置,快速通道取2.5 Cycles,慢速通道取6.5 Cycles。

3. 使用方法

  • 在ADC初始化后,采用函數HAL_ADC_Start(&hadc) HAL_ADCEx_InjectedStart(&hadc1)啟動ADC的多通道連續采樣;
  • 直接讀取ADC的相應RDATA寄存器和JDATA寄存器即可獲取轉換值,如:
    A1_6 = hadc1.Instance->DR;
    A1_7 = hadc1.Instance->JDR1;
    A1_15 = hadc1.Instance->JDR2;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM