国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Cortex-M3的MP3播放器設(shè)計(jì)

發(fā)布時(shí)間:2010-4-13 11:00    發(fā)布者:李寬
關(guān)鍵詞: MP3播放器 , 設(shè)計(jì)
引言

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è)計(jì)并實(shí)現(xiàn)了MP3播放器。其主要功能有:播放VSl003支持的所有音頻文件,如MP3、WMA、WAV文件,且音質(zhì)非常好;通過(guò)搖桿控制播放上一首/下一首、音量增減等;通過(guò)LCD顯示歌曲名字和播放狀態(tài);本系統(tǒng)還實(shí)現(xiàn)了讀卡器功能,PC機(jī)可通過(guò)USB接口直接對(duì)開(kāi)發(fā)板上的SD卡進(jìn)行讀寫(xiě)操作,以方便拷貝音頻文件。

1 STM32處理器

Cortex—M3是ARM公司最新推出的基于ARMv7體系架構(gòu)的處理器核,具有高性能、低成本、低功耗的特點(diǎn),專(zhuān)門(mén)為嵌入式應(yīng)用領(lǐng)域設(shè)計(jì)。

ARMv7架構(gòu)采用了Thumb一2技術(shù),它是在ARM的Thumb代碼壓縮技術(shù)的基礎(chǔ)上發(fā)展起來(lái)的,并且保持了對(duì)現(xiàn)存ARM解決方案完整的代碼兼容性。 Thumb一2技術(shù)比純ARM代碼少使用31%的內(nèi)存,減小了系統(tǒng)開(kāi)銷(xiāo),同時(shí)能夠提供比Thumb技術(shù)高出38%的性能。

在中斷處理方面,Cortex—M3集成了嵌套向量中斷控制器NVIC(Nested Vectored Interrupt Controller)。NVIC是Cortex—M3處理器的一個(gè)緊耦合部分,可以配置1~240個(gè)帶有256個(gè)優(yōu)先級(jí)、8級(jí)搶占優(yōu)先權(quán)的物理中斷,為處理器提供出色的異常處理能力。同時(shí),搶占(Pre—eruption)、尾鏈(Tail-chaining)、遲到技術(shù)(Late—arri- ving)的使用,大大縮短了異常事件的響應(yīng)時(shí)間。Cortex—M3異常處理過(guò)程中由硬件自動(dòng)保存和恢復(fù)處理器狀態(tài),進(jìn)一步縮短了中斷響應(yīng)時(shí)間,降低了軟件設(shè)計(jì)的復(fù)雜性。

Cortex—M3體系架構(gòu)提出了新的單線(xiàn)調(diào)試技術(shù),Cortex—M3處理器的跟蹤調(diào)試是通過(guò)調(diào)試訪(fǎng)問(wèn)端口(Debug Access Port,DAP)來(lái)實(shí)現(xiàn)的。DAP端口可以作為串行線(xiàn)調(diào)試端口(SW—DP)或串行JTAG調(diào)試端口(SWJ—DP,允許JTAG或SW協(xié)議)使用。其中SW—DP只需要時(shí)鐘和數(shù)據(jù)2個(gè)引腳,實(shí)現(xiàn)低成本跟蹤調(diào)試,避免使用多引腳進(jìn)行JTAG調(diào)試,并全面支持RealView編譯器和RealView調(diào)試產(chǎn)品。此外Cortex—M3還具備高度集成化的特點(diǎn),大大減小了芯片面積,內(nèi)部集成了許多緊耦合系統(tǒng)外設(shè),合理利用了芯片空間,使系統(tǒng)滿(mǎn)足下一代產(chǎn)品的控制需求。

STM32系列是基于Cortex—M3核的微控制器,它在Cortex—M3內(nèi)核的基礎(chǔ)上擴(kuò)展了高性能的外圍設(shè)備。

2 VSl003 MP3/WMA音頻編解碼器

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



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

3 系統(tǒng)硬件設(shè)計(jì)

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



下面分別介紹系統(tǒng)的存儲(chǔ)模塊SD卡、解碼芯片VSl003與STM32的硬件連接情況。

3.1 SD卡與STM32的連接

該系統(tǒng)使用STM32內(nèi)部接口SPIl與SD卡進(jìn)行通信,下面介紹其引腳連接情況。

PE3:低電平有效,連接到SD卡的片選引腳CD/DAT3。SPI在和SD卡進(jìn)行通信時(shí),需要將PE3拉低才能對(duì)SD卡進(jìn)行操作。

PA7:映射為STM32內(nèi)部接口SPIl的主輸出從輸入(MOSI)信號(hào)線(xiàn)。這里STM32是主設(shè)備,SD卡是從設(shè)備。數(shù)據(jù)流的傳輸方向是從STM32 傳輸給SD卡。該信號(hào)線(xiàn)用于傳輸一些控制命令來(lái)完成SD卡的操作,如讀、寫(xiě)等。

PA5:已連接到STM32內(nèi)部接口SPIl的時(shí)鐘(SCLK)信號(hào)線(xiàn)。可設(shè)置SPI的時(shí)鐘頻率來(lái)調(diào)整讀取SD卡數(shù)據(jù)的快慢。

PA6:已連接到STM32內(nèi)部接口SPIl的主輸入從輸出(MISO)信號(hào)線(xiàn)。數(shù)據(jù)的傳輸方向是從SD卡傳輸給STM32,主要返回SD卡的一些狀態(tài)、內(nèi)部寄存器值等。

PCI2:用于檢測(cè)SD卡是否完全插入。當(dāng)SD卡完全插入時(shí),PCl2為低電平,否則為高電平。

3.2 VSl003與STM32的連接

該系統(tǒng)使用STM32內(nèi)部接口SPl2與VSl003進(jìn)行通信,下面介紹其引腳連接情況。

PA3:VSl003的中斷請(qǐng)求引腳。當(dāng)VSl003內(nèi)部數(shù)據(jù)已處理完畢,需要新的數(shù)據(jù)時(shí),將DREQ拉高。STM32根據(jù)這個(gè)信號(hào)來(lái)給VSl003發(fā)送新的數(shù)據(jù)流。

PBl3:已連接到STM32內(nèi)部接口SPI2的時(shí)鐘(SCLK)信號(hào)線(xiàn)。

PBl4:已連接到STM32內(nèi)部接口SPI2的主輸入從輸出(MISO)信號(hào)線(xiàn)。這里STM32是主設(shè)備,VSl003是從設(shè)備。數(shù)據(jù)流的傳輸方向是從 VSl003傳輸給STM32。主要用于讀取VSl003的一些狀態(tài)和內(nèi)部寄存器值,比如寄存器測(cè)試返回的內(nèi)部寄存器的值。

PBl5:已連接到STM32內(nèi)部接口SPl2的主輸出從輸入(MOSI)信號(hào)線(xiàn)。這里STM32是主設(shè)備,VSl003是從設(shè)備。數(shù)據(jù)流方向是從 STM32傳輸給VSl003,主要傳輸給VSl003一些控制命令、MP3/WMA數(shù)據(jù)流等。

PAl:低電平有效,如果拉低該引腳,那么通過(guò)SPI傳輸?shù)氖强刂菩盘?hào)。控制信號(hào)包括讀寫(xiě)VSl003的內(nèi)部寄存器、對(duì)VSl003進(jìn)行初始化、設(shè)置左右聲道音量等。PA2:低電平有效,如果拉低該引腳,那么通過(guò)SPI傳輸?shù)氖菙?shù)據(jù)信號(hào)。比如在向VSl003傳輸MP3/WMA的數(shù)據(jù)流時(shí)需要拉低該引腳。

PA0:低電平有效,拉低該引腳則硬件復(fù)位VSl003。

4 系統(tǒng)軟件設(shè)計(jì)

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



由于SPIl讀取SD卡文件的速度遠(yuǎn)超過(guò)VSl003播放數(shù)據(jù)流的速度,因此VSl003在播放來(lái)自SPI2的數(shù)據(jù)流期間,SPIl能從SD卡中讀取下次播放所需的數(shù)據(jù),不會(huì)產(chǎn)生聲音不連續(xù)的情況。由于使用了2個(gè)SPI接口,相互之間無(wú)干擾,且提高了文件系統(tǒng)的效率,因此本系統(tǒng)能得到非常高品質(zhì)的音樂(lè)。

限于篇幅,下面僅介紹軟件的兩個(gè)核心模塊。

4.1 SD模塊

SD模塊主要提供SD卡驅(qū)動(dòng)以及對(duì) FAT文件系統(tǒng)操作的函數(shù),F(xiàn)AT文件系統(tǒng)支持長(zhǎng)文件名。該模塊主要含有2個(gè)文件msd.c和fatl6.c。下面分別介紹其主要函數(shù)的功能。

4.1.1 msd.c

該文件用于提供SD卡的驅(qū)動(dòng),主要包括以下函數(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卡寫(xiě)入1個(gè)塊的數(shù)據(jù)。
    MSD_ReadBlock:從SD卡讀取1個(gè)塊的數(shù)據(jù)。
    以下是函數(shù)MSD_ReadBlock的實(shí)現(xiàn):




4.1.2 fatl6.c

該文件提供對(duì)FATl6文件系統(tǒng)的支持,主要包含以下函數(shù)。

    ReadMBR:讀取MBR數(shù)據(jù)結(jié)構(gòu)。
    ReadBPB:讀取BPB數(shù)據(jù)結(jié)構(gòu)。
    ReadFAT:讀取文件分配表指定項(xiàng)。
    ReadBloek:讀取SD卡的一個(gè)扇區(qū)。
    FAT_Init:獲取FATl6文件系統(tǒng)的基本信息。
    DirStartSec:獲取根目錄的開(kāi)始扇區(qū)號(hào)。
    DataStartSec:獲取數(shù)據(jù)區(qū)的開(kāi)始扇區(qū)號(hào)。
    ClusConvLBA:獲取一個(gè)簇的開(kāi)始扇區(qū)號(hào)。
    LBAConvClus:轉(zhuǎn)換扇區(qū)號(hào)與簇號(hào)之間的關(guān)系。
    GetFileName:獲取指定文件的首扇區(qū)號(hào)。
    ListDateTime:列出文件或子目錄創(chuàng)建的時(shí)間日期。
    SearchFoler:在指定范圍內(nèi)查找文件或子目錄。
    ListDir:列出指定范圍內(nèi)的文件或子目錄及相關(guān)信息。
    FAT_FileOpen:打開(kāi)指定文件。
    FAT_FileRead:讀取文件數(shù)據(jù)。

4.2 VSl003模塊

VSl003模塊主要提供對(duì)解碼芯片VSl003的驅(qū)動(dòng),為應(yīng)用層播放音頻數(shù)據(jù)、控制音量聲道等提供基本接口。該模塊主要含文件vsl003.c。其主要函數(shù)的功能如下。

    vsl003.c文件主要提供VSL003芯片的驅(qū)動(dòng),包含以下幾個(gè)主要函數(shù)。
    VSL003_Config:配置STM32與VSl003連接的相關(guān)引腳,包括SPl2、PA0、PAl、PA2、PA3。
    SPIGetChar:通過(guò)SPI從VSl003讀取1個(gè)字節(jié)。
    SPIPutChar:通過(guò)SPI向VSl003寫(xiě)入1個(gè)字節(jié)。如果是MP3/WMA數(shù)據(jù)流,則VSl003將開(kāi)始解碼并播放。
    Mp3ReadRegister:讀取VSl003寄存器的值。
    Mp3WriteRegister:寫(xiě)VSl003寄存器。
    Mp3Reset:VSl003復(fù)位,包括軟件復(fù)位和硬件復(fù)位。
    Mp3SoftReset:VSl003軟件復(fù)位,設(shè)置時(shí)鐘、采樣率、重音、音量、立體聲等參數(shù),一般在2首樂(lè)曲之間需要一次軟件復(fù)位。
    VsSineTest:播放正弦聲波,用于測(cè)試VSl003和STM32的連接是否完好。

結(jié)語(yǔ)

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

參考文獻(xiàn)

   1. ST Microelectronics RM0008 Reference Manual(Medium and Hight-density STM32F101xx and STM32F103xx Advanced ARM-based 32-bit MCUs) 2008
   2. VLSI Solution VS1003 User Mannual.Version 1.03 2008
   3. ARM Limited Cortex-M3 Technical Reference Manual 2005
   4. 李寧 ARM 開(kāi)發(fā)工具 ReaIView MDK使用入門(mén) 2008

作者:武漢理工大學(xué) 李寧  熊剛  徐良平
來(lái)源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 2009 (2)
本文地址:http://www.qingdxww.cn/thread-10382-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠(chǎng)商推薦

  • Microchip視頻專(zhuān)區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來(lái)節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專(zhuān)區(qū)

相關(guān)在線(xiàn)工具

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 新蝙蝠侠2022在线观看完整版 | 最新日本免费一区二区三区中文 | 国产成人香蕉久久久久 | 韩国一级黄色 | 在线精品视频成人网 | 爱情综合症泰剧 | 日韩精品在线看 | 国产午夜亚洲精品 | 国产一区二区在线免费观看 | 妇乱子伦激情 | 黄色在线免费观看网站 | 在线视频亚洲欧美 | 亚洲精品98久久久久久中文字幕 | 久久久免费观看 | 日本在线看片网站 | 日韩精品在线观看视频 | 四虎永久免费地址ww417 | 韩日毛片 | 4hu最新网址 | 免费日韩视频 | 八戒八戒看片在线观看网 | 变态 另类 国产 亚洲 | 久久精品国产精品青草app | 免费在线观看日本 | 中文字幕一区二区三区在线观看 | 久久.com | 国产在线视频www片 国产在线视频99 | 亚洲app| 欧洲三级在线观看 | 日韩一级大片 | 在线视频毛片 | 热re91久久精品国产91热 | 日本爽视频 | 天天干天天射天天操 | 久久精品国产自在一线 | 91成人在线观看视频 | 99久久精品影院老鸭窝 | 日韩福利 | 青青草国产三级精品三级 | 免费黄色国产视频 | 欧美大片在线观看完整版 |