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