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