項目需求
完成對板上音頻信號的采集和波形顯示,可以通過手機播放音樂或App產生音頻信號的方式提供聲音信號源,通過板上電路的放大、MCU中ADC的采集以后將波形顯示在OLED屏幕上,可以通過板上按鍵的操作在兩個方向(橫軸-時間;縱軸-幅度)來擴展、壓縮波形的顯示,按鍵的功能可自行定義;
實現信號發生器的功能,能夠產生20KHz以內的正弦波、三角波、方波三種常用波形,通過按鍵的操作能夠實現頻率可調、幅度可調;
能夠通過Ain管腳測量外部模擬信號(0-3.3V,DC-200KHz),并能夠對外部的周期性波形測量其周期和峰峰值
能夠對采集到的信號進行FFT變換,并在屏幕上顯示其基頻及低次諧波的分量
實現的思路
因為我是對stm32是一個完全零基礎的的學生,所以首先就是對軟件和芯片的學習,通過直播課程先對stm32有一個大概的了解,對IDE、Pro等軟件有一個初步的學習,然后是對于原理圖 的學習,了解做一個簡易示波器需要哪些引腳。初步的學習了解后就要開始上手實踐,先是要看一些相關的比如ADC、信號發生器的例程,然后仿照例程自己去實踐做一些工程。有了一點基礎以后就可以開始做這個項目了。
然后項目實現大概的思路就是:ADC對模擬信號采樣、量化->映射到坐標軸上形成波形->顯示相關的參數->通過RC低通濾波實現方波、正弦波、三角波的生成->調整采樣率占空比等改變波形->FFT變換獲得頻譜。
整體思路是先做一個一個模塊,如ADC、信號發生、數據顯示等,然后整合在一起形成想要的項目,最后對項目進行優化調整。
完成的功能及達到的性能
完成的功能為對音頻信號進行采集并形成波形,可以在時間上擴展壓縮波形
實現信號發生器的功能,能夠產生20KHz以內的正弦波、三角波、方波三種常用波形,通過按鍵的操作能夠實現頻率可調
能夠通過Ain管腳測量外部模擬信號
對采集到的信號進行FFT變換,顯示頻譜
遇到的主要難題
本次項目遇到的最大的難題就是解決y軸自動縮放功能,我本來使用的是固定的y軸(0-5V),有時候圖形看起來很難看,受大佬指點然后就準備做一個自動縮放的y軸,結果不知道為什么,y軸相關的數據全都顯示不出來了,這也就是我視頻中沒有y軸數據的原因,開始是忘記了改設置導致浮點數不能直接printf,更改好設置后,一直報錯好像意思是Flash內存不足,然后我嘗試使用網上的方法一是通過 sprintf 將浮點數轉換成字符串輸出,另一種是分解整數和小數部分,分別輸出,結果都沒能實現,在我想改回固定y軸之前,板子死機無法復位,就導致了現在的版本,板子死機無法復位的問題最終是問了硬禾的老師解決的。
還有一個問題就是因為之前沒接觸過stm32,對于oled屏幕以及按鍵使用不知所措,花費了較多的時間學習例程和看別人的做法,然后實在是對FFT理解不夠,在FFT花了很多時間也沒做出來,后來參考了別人FFT的部分代碼才能用。
未來的計劃建議
因為時間不足和能力有限,沒能在規定時間內完成所有的性能指標要求,我計劃在之后有時間的時候盡量將y軸自動縮放完善,然后自己編寫出符合要求的FFT。
然后通過這次寒假在家的練習,我從對單片機、嵌入式系統一無所知到現在的初步了解讓我對于這方面的內容產生了極大的興趣,以后我會在課余時間多去接觸相關的內容,爭取做出更多有意思有用的東西來。
我的建議是我感覺這個項目老師的課程不夠詳細,兩個多小時的課程很多東西都被壓縮了,當然也可能是因為我基礎太差或者是老師要考慮各方面的因素,我希望以后的課程能夠更系統更注重帶我們實操一些。
總結
這個項目極大的豐富了我的寒假生活,是我上大學以來為數不多覺得收獲蠻大的假期,雖然我沒能完成所有的項目需求,但是在這過程中學習到的知識以及對我實踐能力的培養讓我受益匪淺,硬禾的老師也是很盡心盡力,我板子死機的問題直接拉了個群給我解決,總體而言,通過這次項目我學到了很多東西,我希望以后也能多參加類似的活動來鍛煉自己,充實自己的生活。
原文標題:北理工亢嘉晨同學制作的簡易示波器和FFT分析
文章出處:【微信公眾號:FPGA入門到精通】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
示波器
+關注
關注
113文章
6267瀏覽量
185380 -
FFT
+關注
關注
15文章
436瀏覽量
59427
原文標題:北理工亢嘉晨同學制作的簡易示波器和FFT分析
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論