51 開源 180MHz-PWMA-播放立體聲音樂@STC32G12K128, USB-CDC實時傳輸音頻
1、簡介 建議用戶直接下載"Objects"里的"audio-play.hex"測試. 下載時選擇主頻30MHz。 本WAV播放器使用STC32G12K128運行,MCU內部HIRC工作于30MHz,PLL到180MHz給PWM時鐘,6分頻30MHz給CPU-系統時鐘。 兩路HS-PWM工作時鐘為180MHz,PWM周期為4097,輸出PWM頻率大約為44KHz(與CD采樣率44.1KHz相近),占空比為12位。 本播放程序支持以下WAV文件的播放,由【STC-ISP | 調試接口 |播放WAVE】界面通過 USB-CDC 虛擬串口/就是串口下傳音頻數據: 支持PCM、ADPCM、A-Law: 支持16位無壓縮(CD音軌)WINDOWS PCM格式,單聲道或雙聲道采樣率最高支持44.1KHz。 支持IMA-ADPCM格式,單通道或雙通道采樣率最高支持44.1KHz。 支持A-law(A率)格式,單通道或雙通道采樣率最高支持44.1KHz。 語音解碼算法可能看似跟網上的有差異,但算法實際是一樣的,我只是將其簡化操作而已。各種算法可以網搜相關知識,但不在本文討論之列。 2、輸出濾波電路 輸出PWM要經過低通濾波器獲得光滑的模擬信號輸出,請參考下圖的電路:3階巴特沃斯低通濾波器。
1.jpg (44.4 KB, 下載次數: 46)
下載附件
2023-11-20 17:03 上傳
PWMA1P--P1.0左聲道, PWMA3P--P1.4右聲道。 左右聲道完全一致,以左聲道為例,PWM信號經過R1、R2分壓適當衰減后與C1組成第一階RC低通濾波,將變化陡峭的PWM的高頻諧波濾除,再送到運放組成的二階低通濾波電路濾波輸出,就得到模擬信號,經過C4隔直后得到交流信號,從3.5mm的立體聲插座輸出。用戶可以用SPWM輸出一個1000Hz正弦波來評估其性能。 上圖參數為對應16KHz采樣的輸出,轉折頻率為不超過采樣頻率的一半即可。 要改成別的采樣頻率,則按比例改變電容即可,電阻不變。 注意:圖中零件不是隨便取的,是經過精心計算的,無源一階低通、有源二階低通的截止頻率和Q值都不同,兩者串聯才能得到最終的輸出響應。 模擬濾波器相關的知識不在本文討論范疇,用戶可以自行復習模擬電子技術基礎的相關章節。
3、使用“屠龍刀三”核心板驗證 本程序使用STC公司的“屠龍刀三”核心板驗證,用戶可以自行修改到自己的系統上。 與“屠龍刀三”核心板的連接: 將上述的P1.0、P1.4、VCC、GND連接到核心板的對應焊盤即可,最好斷開板上R107、R108兩個0歐姆電阻,避免其電路影響PWM信號。 板上的P3.2按鍵為播放鍵,P3.3按鍵為停止鍵。 P2.7為每個采樣解碼時間指示(高電平時間),用示波器觀察。 P2.0為播放指示燈,正在播放時輸出低驅動LED亮。 P2.1為CDC接收數據包指示,每收到一包(64字節)就取反一次,下傳數據一塊為1024字節,分16個包傳輸。 P2.4為MCU請求PC傳輸數據的提示,從請求開始P2.4輸出高電平,之后收到第一包數據(64字節)輸出低電平,用示波器觀察。 4、下載程序 下載程序和CDC通信均使用板上TYPE-C接口實現。打開STC-ISP V6.92G或更高版本。 打開程序文件,即打開"Objects"里的"audio-play.hex"文件。
用USB TYPE-C延長線將“屠龍刀三”核心板與PC連接,持續按下P3.2按鍵,短按OFF鍵釋放,1秒后釋放P3.2按鍵,STC ISP就能自動識別到設備:
2.jpg (74.37 KB, 下載次數: 43)
下載附件
2023-11-20 17:04 上傳
點擊下載按鈕,將程序下載到MCU中。
5、播放設置
此時STC ISP已能自動識別播放程序的CDC通信口,下圖的“掃描”里顯示的就是CDC串口。
3.jpg (88.48 KB, 下載次數: 45)
下載附件
2023-11-20 17:05 上傳
點擊“STC調試接口”,選擇“播放Wave(P)”,見下圖:
4.jpg (60.26 KB, 下載次數: 36)
下載附件
2023-11-20 17:05 上傳
點擊“打開Wave”,選擇要播放的Wave文件。 Wave文件信息里會顯示文件的重要信息: 文件格式,目前只支持:1-PCM,6-A law,17-IMA ADPCM這3種類型。 通道數:1表示單聲道,2表示立體聲。 采樣率:不用解釋。 采樣位數:就是一個采樣點的位數,用戶不用關心。 數據大小:即聲音的字節數。 設置數據發送模式里的“每個數據包的大小(字節)”為1024。 勾選“第一包數據發送WAVE文件信息” 選擇“應答式發送”。 點擊“發送Wave數據”。
之后,按一下板上的P3.2鍵開始播放,MCU請求的第一個數據包為14字節的上述文件信息,大端模式。 Byte0、Byte1:WAV類型,0x0001-->PCM,0x0006-->A Law,0x0011-->IMA ADPCM。 Byte2:聲道數,1(單聲道)或2(立體聲)。 Byte3:采樣位數,用戶不用理會。 Byte4~Byte7:采樣率,Hz。 Byte8~Byte11:數據長度(字節數)。 Byte12~Byte13:BLOCK長度(ADPCM使用)。 后面請求發送的都是音頻數據包,程序根據文件格式進行處理后送去PWM播放出聲音。 輸出的聲音要接功放和音箱才能聽到傳真度不錯的音樂,使用32KHz或44.1KHz的采樣格式,普通音響將難以分辨其與320Kbps碼率的MP3的音質有啥差別。
6、通信查詢速度適配 文件格式不同,采樣率不同,就有不同的數據率,數據率越高,對通信的速度要求就越高。但是通信速度高,PC的CPU占用率就高,這必須要平衡一下。
點擊串口助手“更多設設置”,在“響應接收時間(查詢周期)”的輸入框中,根據數據率輸入合適的值,時間短通信速度快,但電腦PC占用率會加大。
5.jpg (119.98 KB, 下載次數: 40)
下載附件
2023-11-20 17:06 上傳
下面為參考的時間設置: PCM 采樣率 響應接收時間 數據率 44.1KHz 0ms 176.4KB/S 32KHz 1ms或2ms 128KB/S 16KHz 4ms或5ms 64KB/S
ADPCM 采樣率 響應接收時間 數據率 44.1KHz 5ms 44.1KB/S 32KHz 10ms 32KB/S 16KHz 10ms 16KB/S
A law 采樣率 響應接收時間 數據率 44.1KHz 2ms或3ms 88.2KB/S 32KHz 4ms或5ms 64KB/S 16KHz 10ms 32KB/S
最后,將HIFI功放打開,8寸迷宮式二單元書架箱安排上,將重低音開最大,聽著圓潤的歌聲和直拍心口的重低音鼓,等待隔壁鄰居來敲門!
6.jpg (49.65 KB, 下載次數: 36)
下載附件
2023-11-20 17:07 上傳
7.jpg (50.93 KB, 下載次數: 50)
下載附件
2023-11-20 17:07 上傳
|