stm32 adc 连续和扫描_技术分享 | STM32多个ADC模块同时采样转换的应用示例
在STM32家族里,多數系列芯片內含2到3個ADC模塊,有的甚至更多,比方G4系列可以有5個ADC模塊。其中,通道數因不同的系列或型號多少不等,幾個到幾十個的都有。有時,我們可能需要多個ADC模塊同時工作,比方3個ADC模塊同時采樣轉換。這時如果芯片內含有3個ADC模塊,并支持同時采樣轉換就很方便。STM32家族里的STM32F4系列、STM32F7等其它系列都含有3個ADC模塊,并支持同時AD采樣轉換。
這里就3個ADC模塊同時進行采樣轉換應用,做個簡單實現演示,以供有需要的用戶參考。
此時3個ADC模塊會建立主從關系。以STM32F4芯片為例。內部大致框架如下:
采樣轉換時按如下圖示操作,每次對屬于3個AD模塊的3個通道進行AD轉換。如果多組的話,依次掃描進行。
各通道轉換結束時產生DMA請求,DMA按照ADC1、ADC2、ADC3的順序依次將數據取走,然后放到指定的內存空間。
好,大致原理就介紹這么多。更多細節還是請閱讀STM32參考手冊的ADC相關章節。
這里在ADC1/ADC2/ADC3三個模塊各選擇2各通道,它們的通道號及相關輸入連接如下:
【注:ADC模塊的參考電壓也選用VDD.下面實驗基于STM32F407 DISCOVERY板來進行。】
另外,我這里使用STM32的TIM3的更新事件觸發ADC轉換。
01使用STM32CubeMx圖形化配置工具完成基本配置
1.1??? RCC/SYS等必需配置項目【略】
1.2 ?? 對ADC進行配置。
? 1.2.1 ????? 對ADC1及相關DMA進行配置。
1.3 ?對TIM3進行配置。
對TIM3的配置比較簡單,安排你需要的時基參數,選擇合適的觸發輸出即可。ADC轉換靠它定期觸發。
上面配置中,DMA傳輸中斷默認使能了,至于其它,你根據需要選擇使能。
02基于上面的CubeMx配置生成C代碼工程。03添加用戶代碼
3.1為DMA傳輸準備一個內存數組,用來存放轉換結果。
__IO uint32_t ADC_Result[6];
3.2 添加啟動ADC3/ADC2/ADC1以及TIM3的相關代碼。
04編譯、運行、驗證。
結果如下,結果是正確的。到此整個演示過程完畢。
看到這里,是不是覺得很簡單呢。只要你愿意對STM32手冊做認真閱讀把把握相關原理,你也可以輕松實現。不過,或許有人對結果產生了疑問,DMA搬到數組的數據怎么是前面連續3個00,后面連續3個0xfff而不是00,fff,00,fff,00,fff呢?不妨結合上面的介紹和參考手冊自行思考下,相信你可以找到答案。
總結
以上是生活随笔為你收集整理的stm32 adc 连续和扫描_技术分享 | STM32多个ADC模块同时采样转换的应用示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小四卷卖多少钱啊?
- 下一篇: 腌咸蒜的比例和做法???