STM32H743+CubeMX-ADC(16bit分辨率)+DMA采样三路模拟量,硬件过采样器实现1024倍过采样
一、前言
上一個筆記:STM32H743+CubeMX-ADC+DMA采樣三路模擬量(并行),沒過采樣
這個應該是STM32上ADC采樣的終極解決方案了,硬件1024倍過采樣+DMA搬運數據。
在一個實驗的基礎上,添加STM32H743的過采樣器硬件,實現1024倍采樣濾波算法。在上一個筆記的基礎下,僅僅修改STM32CubeMX就能實現,代碼都不用動!
以往像STM32F103(Cortex-M3)與STM32F407(Cortex-M4)的MCU都沒有過采樣器的硬件,MCU雖然可以不參與數據搬運(DMA搬運),但是采樣濾波算法需要自己用代碼實現的。算法很簡單,就是積分后再求平均。
STM32H743的過采樣器:
STM32工程:
鏈接:https://pan.baidu.com/s/1rWyWvMYj_BisR6z8yHnrZQ
提取碼:xpbg
二、CubeMX
2.1、ADC
設置完成后,直接生成代碼。
三、Debug
3.1、Debug(printf) Viewer
3.2、觀察全局變量
四、細節補充
4.1、采樣時間的計算
首先要確認ADC的工作頻率,還有ADC3的分頻系數。
從上面的信息可以算出ADC3的工作頻率是72M / 16 = 4.5MHz。
ADC3單個通道的轉換頻率 =4.5M / ( 采樣時間 + 逐次逼近時間 )
=4.5M /( 810.5 cycles + 8.5 cycles )
=4.5M / 819 cycles
= 5.49kHz
ADC3單個通道的轉換的周期T = 1 / 5.49kHz = 0.1821ms = 182.1us
當前一共是3個通道,所以ADC總的轉換周期T = 182.1us * 3 = 546.3us,所以ADC3的轉換總時間不超過1ms。這個時間指標很重要,它決定了MCU每隔多少時間來取數據才能取到不重復的(有意義的)數據。比如ADC3的轉換總時間T = 10ms,如果MCU每隔5ms來獲取一次數據的話,其中一半的數據都是重復的(沒意義的)數據。
總結
以上是生活随笔為你收集整理的STM32H743+CubeMX-ADC(16bit分辨率)+DMA采样三路模拟量,硬件过采样器实现1024倍过采样的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java集合多个最大值_Java 8 S
- 下一篇: 5分绩点转4分_高考语文如何考上120分