當前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]提出一種基于Cortex—M3處理器的MP3播放器的設(shè)計方法。硬件設(shè)計上,介紹了具體模塊間的硬件連接情況;軟件設(shè)計上,主要介紹2個核心模塊的主要函數(shù)功能。該播放器采用STM32作為微控制器,采用VSl003作為解碼芯片,采用SD卡存儲MP3/WMA文件,PC機可通過USB接口操作開發(fā)板上SD卡的文件。該系統(tǒng)的軟件使用RealView MDK開發(fā)。

引 言
   
STM32系列微控制器采用ARM公司最新的Cortex—M3內(nèi)核。VSl003音頻解碼芯片為VSlOxx系列的第三代產(chǎn)品,是芬蘭VLSI Solution公司生產(chǎn)的單片MP3/WMA/MIDI解碼和ADPCM編碼芯片。本文采用STM32系列微控制器,結(jié)合解碼芯片VSl003、SD卡、LCD等外圍設(shè)備設(shè)計并實現(xiàn)了MP3播放器。其主要功能有:播放VSl003支持的所有音頻文件,如MP3、WMA、WAV文件,且音質(zhì)非常好;通過搖桿控制播放上一首/下一首、音量增減等;通過LCD顯示歌曲名字和播放狀態(tài);本系統(tǒng)還實現(xiàn)了讀卡器功能,PC機可通過USB接口直接對開發(fā)板上的SD卡進行讀寫操作,以方便拷貝音頻文件。

1 STM32處理器
    Cortex—M3是ARM公司最新推出的基于ARMv7體系架構(gòu)的處理器核,具有高性能、低成本、低功耗的特點,專門為嵌入式應(yīng)用領(lǐng)域設(shè)計。
    ARMv7架構(gòu)采用了Thumb一2技術(shù),它是在ARM的Thumb代碼壓縮技術(shù)的基礎(chǔ)上發(fā)展起來的,并且保持了對現(xiàn)存ARM解決方案完整的代碼兼容性。Thumb一2技術(shù)比純ARM代碼少使用31%的內(nèi)存,減小了系統(tǒng)開銷,同時能夠提供比Thumb技術(shù)高出38%的性能。
    在中斷處理方面,Cortex—M3集成了嵌套向量中斷控制器NVIC(Nested Vectored Interrupt Controller)。NVIC是Cortex—M3處理器的一個緊耦合部分,可以配置1~240個帶有256個優(yōu)先級、8級搶占優(yōu)先權(quán)的物理中斷,為處理器提供出色的異常處理能力。同時,搶占(Pre—eruption)、尾鏈(Tail-chaining)、遲到技術(shù)(Late—arri-ving)的使用,大大縮短了異常事件的響應(yīng)時間。Cortex—M3異常處理過程中由硬件自動保存和恢復(fù)處理器狀態(tài),進一步縮短了中斷響應(yīng)時間,降低了軟件設(shè)計的復(fù)雜性。
    Cortex—M3體系架構(gòu)提出了新的單線調(diào)試技術(shù),Cortex—M3處理器的跟蹤調(diào)試是通過調(diào)試訪問端口(Debug Access Port,DAP)來實現(xiàn)的。DAP端口可以作為串行線調(diào)試端口(SW—DP)或串行JTAG調(diào)試端口(SWJ—DP,允許JTAG或SW協(xié)議)使用。其中SW—DP只需要時鐘和數(shù)據(jù)2個引腳,實現(xiàn)低成本跟蹤調(diào)試,避免使用多引腳進行JTAG調(diào)試,并全面支持RealView編譯器和RealView調(diào)試產(chǎn)品。此外Cortex—M3還具備高度集成化的特點,大大減小了芯片面積,內(nèi)部集成了許多緊耦合系統(tǒng)外設(shè),合理利用了芯片空間,使系統(tǒng)滿足下一代產(chǎn)品的控制需求。
    STM32系列是基于Cortex—M3核的微控制器,它在Cortex—M3內(nèi)核的基礎(chǔ)上擴展了高性能的外圍設(shè)備。

2 VSl003 MP3/WMA音頻編解碼器
    VSl003內(nèi)部包含1個高性能、低功耗的DSP處理核(VSDSP),1個工作內(nèi)存,1片可供用戶程序使用的5.5KB RAM,1個串行SPI總線接口,1個高質(zhì)量的采樣頻率可調(diào)的過采樣DAC以及1個16位的采樣ADC。VSl003的內(nèi)部結(jié)構(gòu)如圖1所示。

    MP3播放過程是STM32通過SPIl接口將數(shù)據(jù)從SD卡中取出,然后通過SPl2接口送至解碼芯片VSl003解碼播放。這里解碼模塊單獨使用一個SPI接口,以減小干擾和噪聲、提高音質(zhì)。

3 系統(tǒng)硬件設(shè)計
    本系統(tǒng)在硬件上分為6個模塊:微控制器STM32F103、解碼模塊VSl003、存儲模塊SD卡、控制搖桿Joystick、USB接口和顯示屏LCD。系統(tǒng)硬件框架如圖2所示。

    下面分別介紹系統(tǒng)的存儲模塊SD卡、解碼芯片VSl003與STM32的硬件連接情況。
3.1 SD卡與STM32的連接
    該系統(tǒng)使用STM32內(nèi)部接口SPIl與SD卡進行通信,下面介紹其引腳連接情況。
    PE3:低電平有效,連接到SD卡的片選引腳CD/DAT3。SPI在和SD卡進行通信時,需要將PE3拉低才能對SD卡進行操作。
    PA7:映射為STM32內(nèi)部接口SPIl的主輸出從輸入(MOSI)信號線。這里STM32是主設(shè)備,SD卡是從設(shè)備。數(shù)據(jù)流的傳輸方向是從STM32傳輸給SD卡。該信號線用于傳輸一些控制命令來完成SD卡的操作,如讀、寫等。
    PA5:已連接到STM32內(nèi)部接口SPIl的時鐘(SCLK)信號線。可設(shè)置SPI的時鐘頻率來調(diào)整讀取SD卡數(shù)據(jù)的快慢。
    PA6:已連接到STM32內(nèi)部接口SPIl的主輸入從輸出(MISO)信號線。數(shù)據(jù)的傳輸方向是從SD卡傳輸給STM32,主要返回SD卡的一些狀態(tài)、內(nèi)部寄存器值等。
    PCI2:用于檢測SD卡是否完全插入。當SD卡完全插入時,PCl2為低電平,否則為高電平。
3.2 VSl003與STM32的連接
    該系統(tǒng)使用STM32內(nèi)部接口SPl2與VSl003進行通信,下面介紹其引腳連接情況。
    PA3:VSl003的中斷請求引腳。當VSl003內(nèi)部數(shù)據(jù)已處理完畢,需要新的數(shù)據(jù)時,將DREQ拉高。STM32根據(jù)這個信號來給VSl003發(fā)送新的數(shù)據(jù)流。
    PBl3:已連接到STM32內(nèi)部接口SPI2的時鐘(SCLK)信號線。
    PBl4:已連接到STM32內(nèi)部接口SPI2的主輸入從輸出(MISO)信號線。這里STM32是主設(shè)備,VSl003是從設(shè)備。數(shù)據(jù)流的傳輸方向是從VSl003傳輸給STM32。主要用于讀取VSl003的一些狀態(tài)和內(nèi)部寄存器值,比如寄存器測試返回的內(nèi)部寄存器的值。
    PBl5:已連接到STM32內(nèi)部接口SPl2的主輸出從輸入(MOSI)信號線。這里STM32是主設(shè)備,VSl003是從設(shè)備。數(shù)據(jù)流方向是從STM32傳輸給VSl003,主要傳輸給VSl003一些控制命令、MP3/WMA數(shù)據(jù)流等。[!--empirenews.page--]
    PAl:低電平有效,如果拉低該引腳,那么通過SPI傳輸?shù)氖强刂菩盘枴?刂菩盘柊ㄗx寫VSl003的內(nèi)部寄存器、對VSl003進行初始化、設(shè)置左右聲道音量等。PA2:低電平有效,如果拉低該引腳,那么通過SPI傳輸?shù)氖菙?shù)據(jù)信號。比如在向VSl003傳輸MP3/WMA的數(shù)據(jù)流時需要拉低該引腳。
    PA0:低電平有效,拉低該引腳則硬件復(fù)位VSl003。


4 系統(tǒng)軟件設(shè)計
   
本系統(tǒng)的軟件由集成開發(fā)工具RealView MDK專業(yè)版開發(fā),它具有強大的編譯、鏈接和調(diào)試功能。軟件結(jié)構(gòu)如圖3所示。本系統(tǒng)的工作過程大致為:STM32通過SPIl從SD卡中讀取MP3/WMA文件,將所讀取的數(shù)據(jù)流通過SPl2發(fā)送到VSl003解碼器中播放;PC機可通過USB總線讀寫SD卡的內(nèi)容,傳送MP3/WMA等文件;LCD顯示屏用于顯示MP3的文件名、播放狀態(tài)。五維搖桿左右搖動控制播放上一首/下一首,上下?lián)u動控制音量,按下則控制播放/暫停。

    由于SPIl讀取SD卡文件的速度遠超過VSl003播放數(shù)據(jù)流的速度,因此VSl003在播放來自SPI2的數(shù)據(jù)流期間,SPIl能從SD卡中讀取下次播放所需的數(shù)據(jù),不會產(chǎn)生聲音不連續(xù)的情況。由于使用了2個SPI接口,相互之間無干擾,且提高了文件系統(tǒng)的效率,因此本系統(tǒng)能得到非常高品質(zhì)的音樂。
    限于篇幅,下面僅介紹軟件的兩個核心模塊。
4.1 SD模塊
    SD模塊主要提供SD卡驅(qū)動以及對FAT文件系統(tǒng)操作的函數(shù),F(xiàn)AT文件系統(tǒng)支持長文件名。該模塊主要含有2個文件msd.c和fatl6.c。下面分別介紹其主要函數(shù)的功能。
4.1.1 msd.c
    該文件用于提供SD卡的驅(qū)動,主要包括以下函數(shù)。
    SPI_Config:配置與SD卡相連接的SPIl及相關(guān)GPIO。
    MSD_Init:初始化SD卡通信。
    Get_Medium_Characteristics:獲取SD卡的容量和塊大小等相關(guān)信息。
    MSD_GoIdleState:令SD卡處于空閑態(tài)。
    MSD_SendCmd:向SD卡發(fā)送命令。
    MSD_GetResponse:從SD卡獲取響應(yīng)。
    MSD_GetStatus:獲取SD卡的狀態(tài)。
    MSD_WriteBlock:向SD卡寫入1個塊的數(shù)據(jù)。
    MSD_ReadBlock:從SD卡讀取1個塊的數(shù)據(jù)。
    以下是函數(shù)MSD_ReadBlock的實現(xiàn):


4.1.2 fatl6.c
   
該文件提供對FATl6文件系統(tǒng)的支持,主要包含以下函數(shù)。
    ReadMBR:讀取MBR數(shù)據(jù)結(jié)構(gòu)。
    ReadBPB:讀取BPB數(shù)據(jù)結(jié)構(gòu)。
    ReadFAT:讀取文件分配表指定項。
    ReadBloek:讀取SD卡的一個扇區(qū)。
    FAT_Init:獲取FATl6文件系統(tǒng)的基本信息。
    DirStartSec:獲取根目錄的開始扇區(qū)號。
    DataStartSec:獲取數(shù)據(jù)區(qū)的開始扇區(qū)號。
    ClusConvLBA:獲取一個簇的開始扇區(qū)號。
    LBAConvClus:轉(zhuǎn)換扇區(qū)號與簇號之間的關(guān)系。
    GetFileName:獲取指定文件的首扇區(qū)號。
    ListDateTime:列出文件或子目錄創(chuàng)建的時間日期。
    SearchFoler:在指定范圍內(nèi)查找文件或子目錄。
    ListDir:列出指定范圍內(nèi)的文件或子目錄及相關(guān)信息。
    FAT_FileOpen:打開指定文件。
    FAT_FileRead:讀取文件數(shù)據(jù)。
4.2 VSl003模塊
    VSl003模塊主要提供對解碼芯片VSl003的驅(qū)動,為應(yīng)用層播放音頻數(shù)據(jù)、控制音量聲道等提供基本接口。該模塊主要含文件vsl003.c。其主要函數(shù)的功能如下。
    vsl003.c文件主要提供VSL003芯片的驅(qū)動,包含以下幾個主要函數(shù)。
    VSL003_Config:配置STM32與VSl003連接的相關(guān)引腳,包括SPl2、PA0、PAl、PA2、PA3。
    SPIGetChar:通過SPI從VSl003讀取1個字節(jié)。
    SPIPutChar:通過SPI向VSl003寫入1個字節(jié)。如果是MP3/WMA數(shù)據(jù)流,則VSl003將開始解碼并播放。
    Mp3ReadRegister:讀取VSl003寄存器的值。
    Mp3WriteRegister:寫VSl003寄存器。
    Mp3Reset:VSl003復(fù)位,包括軟件復(fù)位和硬件復(fù)位。
    Mp3SoftReset:VSl003軟件復(fù)位,設(shè)置時鐘、采樣率、重音、音量、立體聲等參數(shù),一般在2首樂曲之間需要一次軟件復(fù)位。
    VsSineTest:播放正弦聲波,用于測試VSl003和STM32的連接是否完好。

結(jié) 語
    本文提出了一種基于STM32的MP3播放器設(shè)計方案,并使用ARM開發(fā)工具RealView MDK實現(xiàn)了該方案的原型。盡管該方案無法作為一個通用MP3的方案,但是對于某些音頻需要的工業(yè)控制、汽車電子、醫(yī)療電子等方案具有一定的參考性。另外,本系統(tǒng)綜合使用了STM32處理器的多個外圍接口,也可供讀者學習參考。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉