山東科技大學(xué) 張學(xué)慧 朱愛珍
MP3是一種高質(zhì)量音樂壓縮標(biāo)準(zhǔn),采用MP3壓縮的數(shù)據(jù)量可以縮小到1/12,音質(zhì)卻沒有多少損失。由于MP3音樂的較小數(shù)據(jù)量和高質(zhì)量的播放效果,使它很快成為一種集音頻播放、數(shù)據(jù)存儲為一身的數(shù)碼產(chǎn)品,并深受人們的喜愛。本文設(shè)計(jì)的MP3是基于ARM公司最新Cortex-M3內(nèi)核的STM32控制器,利用該處理器內(nèi)置的SPI接口對SD存儲卡進(jìn)行控制,并對MP3音頻文件進(jìn)行解碼實(shí)現(xiàn)MP3的播放。系統(tǒng)實(shí)現(xiàn)的功能:播放VS1003支持的MP3、WMA等音頻文件,且具有歌詞同步功能;控制播放上一首/下一首,音量增減;通過LCD顯示音量圖標(biāo)和播放狀態(tài)等。
系統(tǒng)采用STM32為主控制器有不可或缺的優(yōu)勢,STM32系列是意法半導(dǎo)體基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計(jì)的ARM Cortex-M3內(nèi)核。時(shí)鐘頻率72MHz,功耗36mA,是32位市場上性價(jià)比最高的產(chǎn)品。系統(tǒng)主要由控制模塊、電源模塊、音頻解碼模塊、SD卡模塊、人機(jī)交互模塊組成。其結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)的工作流程:STM32處理器讀取SD存儲卡里的MP3音樂文件數(shù)據(jù),通過SPI傳輸至音頻解碼芯片經(jīng)過解碼轉(zhuǎn)換,再送至耳機(jī)聽筒。SPI總線控制音頻DAC芯片的參數(shù)實(shí)現(xiàn)音量控制等功能。使用人機(jī)交互設(shè)備實(shí)現(xiàn)播放/暫停、上一曲/下一曲等控制功能和顯示播放狀態(tài)。
圖1 系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)的硬件設(shè)計(jì)包含控制器及各模塊芯片的選型和相關(guān)電路的設(shè)計(jì)。
STM32系列32位微控制器基于Cortex-M3內(nèi)核,旨在為MCU用戶提供新的開發(fā)自由度。它具有高性能、低功耗、低電壓等特性,同時(shí)還具有高集成度和易于開發(fā)的特點(diǎn),使該系列產(chǎn)品成為小型項(xiàng)目和作為完整平臺的理想選擇[2]。STM32的使用需要一個(gè)最小系統(tǒng),包括晶振電路,復(fù)位電路。
1)晶振電路的設(shè)計(jì):晶振電路用于向處理器提供工作時(shí)鐘。本系統(tǒng)使用無源晶振X1作為系統(tǒng)的主振蕩器,一個(gè)32.768kHz的晶振作為內(nèi)置實(shí)時(shí)時(shí)鐘(RTC)振蕩器[3]。晶體振蕩器的連接如圖2所示。
晶振的負(fù)載電容應(yīng)當(dāng)按照要求選取,電容不正確可能導(dǎo)致晶振起振緩慢甚至不起振,這將影響整個(gè)系統(tǒng)的穩(wěn)定性。
2)復(fù)位電路的設(shè)計(jì):采用簡單的“RC+按鍵”復(fù)位形式,該復(fù)位電路可以實(shí)現(xiàn)上電自動(dòng)復(fù)位和手動(dòng)按鍵復(fù)位[3]。上電自動(dòng)復(fù)位是通過外部復(fù)位電路的電容充電來實(shí)現(xiàn)的,按鍵復(fù)位是通過復(fù)位端經(jīng)電阻與電源VCC接通而實(shí)現(xiàn)的。
系統(tǒng)中硬件電路的輸入電源需要5V、3.3V和2.5V。對于5V電源輸入,本著設(shè)計(jì)簡單、有效的原則采用USB供電,而且還可以通過USB線直接對SD的文件進(jìn)行操作,實(shí)現(xiàn)即插即用。
對于3.3V和2.5V電源輸入,這些電源要求的功率都不大,可以采用B1117-2.5和B1117-3.3穩(wěn)壓芯片來提供。3.3V的電源輸入如圖3所示,2.2V電源輸入與之類似。
圖2 晶振電路
圖3 3.3V電源輸入
由于使用了ARM處理器,MP3的解碼方法有兩種,一是通過ARM處理器軟解碼,通過對MP3數(shù)據(jù)格式的解析實(shí)現(xiàn)MP3播放。二是通過外部解碼芯片解碼。前者對處理器運(yùn)算要求高,在解碼高碼率的MP3時(shí),STM32的處理能力不足,得不到好的解碼效果,而且STM32解碼之后還需要外部的DAC來做音頻輸出,所以采用后者。
MP3解碼芯片選擇的是由芬蘭VLSI公司出品的一款單芯片MP3/WMA音頻解碼芯片VS1003,其擁有一個(gè)高性能低功耗的DSP處理器核,5K的指令ROM,0.5K的數(shù)據(jù)RAM,串行控制和數(shù)據(jù)輸入接口,同時(shí)片內(nèi)帶有一個(gè)可變采樣速率的ADC、一個(gè)立體聲DAC以及音頻耳機(jī)放大器接口,還可以調(diào)節(jié)音量高低。其電路設(shè)計(jì)及與主控制器的連接如圖4所示。
VS1003與處理器的數(shù)據(jù)通信是通過SPI總線方式進(jìn)行的。VS1003主要通過串行命令接口(SCI)和串行數(shù)據(jù)接口(SDI)來接收STM32控制器的控制命令和MP3的數(shù)據(jù)。通過XCS、XDCS引腳的置高、置低來確認(rèn)是哪一個(gè)接口處于傳送狀態(tài)。對VS1003芯片的功能控制,如初始化、暫停、音量控制的讀取等,均是通過SCI寫入到特定寄存器來實(shí)現(xiàn)的。
圖4 音頻解碼電路
圖6 人機(jī)交互設(shè)備電路
SD卡在日常生活與工作中使用非常廣泛,已經(jīng)成為最為通用的數(shù)據(jù)存儲卡。在MP3、數(shù)碼相機(jī)等設(shè)備上也都采用SD卡作為存儲設(shè)備。SD卡之所以得到如此廣泛的使用,是因?yàn)樗鼉r(jià)格低廉、存儲容量大、安全性強(qiáng)等優(yōu)點(diǎn)。SD卡支持兩種總線方式:SD方式與SPI方式。其中SD方式采用6線制,而SPI方式采用4線制,使用單片機(jī)對SD卡進(jìn)行讀寫時(shí)一般都采用SPI模式。因此設(shè)計(jì)中使用STM32內(nèi)部接口SPI1與SD卡進(jìn)行通信[4],圖5是其引腳連接情況。
人機(jī)交互設(shè)備包括輸入設(shè)備和輸出設(shè)備,對于輸出設(shè)備,采用彩色液晶屏,這里選擇一款2.8寸的TFT液晶屏ILI9341,其分辨率為320*240,工作模式為8位數(shù)據(jù)模式,與MCU的通訊所需IO口較少,速度也較快。輸入設(shè)備為了使控制方便,人性化,采用觸摸屏實(shí)現(xiàn)。觸摸屏的控制芯片選擇由TI公司生產(chǎn)的12位四線觸摸屏控制芯片ADS7843,因?yàn)樵撔酒木仁?2Bit,有很高的分辨率,有利于屏幕控制精度的提高。LCD與主控制器是SPI接口方式。其電路設(shè)計(jì)如圖6所示。
Cortex-M3是ARM公司推出的最新的針對控制器應(yīng)用的內(nèi)核,提供業(yè)內(nèi)領(lǐng)先的高性能和低成本的解決方案。但目前能夠支持Cortex-M3架構(gòu)的開發(fā)工具很少,而MDK是ARM公司推出目前性價(jià)比最高的支持Cortex-M3處理器的開發(fā)工具。故本次設(shè)計(jì)的軟件平臺是建立在MDKμVision3之上的[5]。
1)FAT文件系統(tǒng):MP3播放器支持FAT文件系統(tǒng),以便識別出SD卡上的音樂文件,需要文件系統(tǒng)存儲數(shù)據(jù)的原理,協(xié)議,格式等。根據(jù)對文件系統(tǒng)的掌握,通過跑在RTX實(shí)時(shí)操作系統(tǒng)上的MP3驅(qū)動(dòng)程序和應(yīng)用程序,將存儲在SD卡上MP3數(shù)據(jù)文件讀取出來,并進(jìn)行正常的播放。
2)GUI圖形用戶界面:系統(tǒng)中的MP3界面是基于GUI圖形界面,采用圖形方式顯示MP3操作用戶界面在視覺上更易于接受??梢酝ㄟ^窗體、菜單、按鍵等方式來方便的進(jìn)行操作。
從整個(gè)系統(tǒng)來說,按其與硬件是否直接相關(guān),可以把軟件分為兩大部分:
(1)與硬件相關(guān)的底層驅(qū)動(dòng)軟件子系統(tǒng),包括LCD驅(qū)動(dòng)模塊、觸摸屏驅(qū)動(dòng)模塊、SD卡驅(qū)動(dòng)模塊、VS1003驅(qū)動(dòng)模塊。
圖5 SD卡連接
圖7 程序設(shè)計(jì)流程圖
(2)與硬件無關(guān)的應(yīng)用軟件子系統(tǒng),包括FAT文件系統(tǒng)管理模塊和音樂播放模塊。主程序的設(shè)計(jì)流程如圖7所示。
系統(tǒng)啟動(dòng)后,先初始化STM32處理器,再初始化各硬件模塊,完成底層驅(qū)動(dòng)。由MCU通過FAT文件系統(tǒng)接口讀取SD卡的一些基本信息,如容量、FAT表及根目錄所在的啟始扇區(qū)等。通過獲得這些信息,就可以找出SD卡是否有我們可以播放的音樂文件。若有音樂文件,處理器將通過SPI總線方式讀出該文件的音頻信息,并將歌曲的數(shù)據(jù)流信息送入到解碼芯片中,通過VS1003芯片解碼以及其內(nèi)含的高質(zhì)量的立體DAC和耳機(jī)驅(qū)動(dòng)電路,實(shí)現(xiàn)MP3歌曲的播放。在觸摸屏的控制下,通過LCD中菜單選項(xiàng)實(shí)現(xiàn)歌曲選擇和音量控制。
本文提出了一種基于STM32的嵌入式MP3播放器的設(shè)計(jì)方案,硬件上重點(diǎn)介紹了各模塊的電路設(shè)計(jì),軟件上介紹了需要的嵌入式知識和主程序的流程。該方案對于需要嵌入式媒體播放器的工業(yè)控制、車載播放器等行業(yè)具有一定的研究價(jià)值。方案設(shè)計(jì)中涉及到很多內(nèi)容,包括芯片的選型與設(shè)計(jì),實(shí)時(shí)操作系統(tǒng)移植,F(xiàn)AT文件管理系統(tǒng),GUI圖形用戶界面,對嵌入式的設(shè)計(jì)具有一定的參考性。整個(gè)系統(tǒng)設(shè)計(jì)簡潔,可靠性高,具有很高的性價(jià)比。
[1]程磊.基于STM32的MP3播放器的設(shè)計(jì)[J].技術(shù)創(chuàng)新,2011(12).
[2]王永虹,徐煒,郝立平等.STM32系列ARM Cortex-M3微控制器原理與實(shí)踐[M].北京航空航天大學(xué)出版社,2008.
[3]江力,蔡駿等.單片機(jī)原理與應(yīng)用技術(shù)[M].清華大學(xué)出版社,2006.
[4]潘浩.嵌入式MP3播放系統(tǒng)研究[D].北方工業(yè)大學(xué),2008.
[5]李寧.基于MDK的STM32處理器開發(fā)應(yīng)用[M].北京航空航天大學(xué)出版社,2008.