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

基于Cortex-M3的MP3播放器設計

發布時間:2010-4-13 11:00    發布者:李寬
關鍵詞: MP3播放器 , 設計
引言

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

1 STM32處理器

Cortex—M3是ARM公司最新推出的基于ARMv7體系架構的處理器核,具有高性能、低成本、低功耗的特點,專門為嵌入式應用領域設計。

ARMv7架構采用了Thumb一2技術,它是在ARM的Thumb代碼壓縮技術的基礎上發展起來的,并且保持了對現存ARM解決方案完整的代碼兼容性。 Thumb一2技術比純ARM代碼少使用31%的內存,減小了系統開銷,同時能夠提供比Thumb技術高出38%的性能。

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

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

STM32系列是基于Cortex—M3核的微控制器,它在Cortex—M3內核的基礎上擴展了高性能的外圍設備。

2 VSl003 MP3/WMA音頻編解碼器

VSl003內部包含1個高性能、低功耗的DSP處理核(VSDSP),1個工作內存,1片可供用戶程序使用的5.5KB RAM,1個串行SPI總線接口,1個高質量的采樣頻率可調的過采樣DAC以及1個16位的采樣ADC。VSl003的內部結構如圖1所示。



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

3 系統硬件設計

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



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

3.1 SD卡與STM32的連接

該系統使用STM32內部接口SPIl與SD卡進行通信,下面介紹其引腳連接情況。

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

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

PA5:已連接到STM32內部接口SPIl的時鐘(SCLK)信號線。可設置SPI的時鐘頻率來調整讀取SD卡數據的快慢。

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

PCI2:用于檢測SD卡是否完全插入。當SD卡完全插入時,PCl2為低電平,否則為高電平。

3.2 VSl003與STM32的連接

該系統使用STM32內部接口SPl2與VSl003進行通信,下面介紹其引腳連接情況。

PA3:VSl003的中斷請求引腳。當VSl003內部數據已處理完畢,需要新的數據時,將DREQ拉高。STM32根據這個信號來給VSl003發送新的數據流。

PBl3:已連接到STM32內部接口SPI2的時鐘(SCLK)信號線。

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

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

PAl:低電平有效,如果拉低該引腳,那么通過SPI傳輸的是控制信號。控制信號包括讀寫VSl003的內部寄存器、對VSl003進行初始化、設置左右聲道音量等。PA2:低電平有效,如果拉低該引腳,那么通過SPI傳輸的是數據信號。比如在向VSl003傳輸MP3/WMA的數據流時需要拉低該引腳。

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

4 系統軟件設計

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



由于SPIl讀取SD卡文件的速度遠超過VSl003播放數據流的速度,因此VSl003在播放來自SPI2的數據流期間,SPIl能從SD卡中讀取下次播放所需的數據,不會產生聲音不連續的情況。由于使用了2個SPI接口,相互之間無干擾,且提高了文件系統的效率,因此本系統能得到非常高品質的音樂。

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

4.1 SD模塊

SD模塊主要提供SD卡驅動以及對 FAT文件系統操作的函數,FAT文件系統支持長文件名。該模塊主要含有2個文件msd.c和fatl6.c。下面分別介紹其主要函數的功能。

4.1.1 msd.c

該文件用于提供SD卡的驅動,主要包括以下函數。

    SPI_Config:配置與SD卡相連接的SPIl及相關GPIO。
    MSD_Init:初始化SD卡通信。
    Get_Medium_Characteristics:獲取SD卡的容量和塊大小等相關信息。
    MSD_GoIdleState:令SD卡處于空閑態。
    MSD_SendCmd:向SD卡發送命令。
    MSD_GetResponse:從SD卡獲取響應。
    MSD_GetStatus:獲取SD卡的狀態。
    MSD_WriteBlock:向SD卡寫入1個塊的數據。
    MSD_ReadBlock:從SD卡讀取1個塊的數據。
    以下是函數MSD_ReadBlock的實現:




4.1.2 fatl6.c

該文件提供對FATl6文件系統的支持,主要包含以下函數。

    ReadMBR:讀取MBR數據結構。
    ReadBPB:讀取BPB數據結構。
    ReadFAT:讀取文件分配表指定項。
    ReadBloek:讀取SD卡的一個扇區。
    FAT_Init:獲取FATl6文件系統的基本信息。
    DirStartSec:獲取根目錄的開始扇區號。
    DataStartSec:獲取數據區的開始扇區號。
    ClusConvLBA:獲取一個簇的開始扇區號。
    LBAConvClus:轉換扇區號與簇號之間的關系。
    GetFileName:獲取指定文件的首扇區號。
    ListDateTime:列出文件或子目錄創建的時間日期。
    SearchFoler:在指定范圍內查找文件或子目錄。
    ListDir:列出指定范圍內的文件或子目錄及相關信息。
    FAT_FileOpen:打開指定文件。
    FAT_FileRead:讀取文件數據。

4.2 VSl003模塊

VSl003模塊主要提供對解碼芯片VSl003的驅動,為應用層播放音頻數據、控制音量聲道等提供基本接口。該模塊主要含文件vsl003.c。其主要函數的功能如下。

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

結語

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

參考文獻

   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 開發工具 ReaIView MDK使用入門 2008

作者:武漢理工大學 李寧  熊剛  徐良平
來源:單片機與嵌入式系統應用 2009 (2)
本文地址:http://m.qingdxww.cn/thread-10382-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色婷婷国产麻豆AV | 一级毛片影院| 热线视频在线观看| 偷窥自拍亚洲色图| 天天综合天天色| adc网址在线观看| 久久久久综合| 亚洲区欧美日韩综合| 欧美一级免费大片| 日韩精品视频在线| 中文天堂在线www| 真人实干一级毛片aa免费| 国内精品久久久久久久999下| 色综合久久久久久| 亚洲国产天堂| 日韩三级视频在线观看| 在线免费观看亚洲| 一级特黄aa大片欧美小说| 精品国产乱码久久久久久免费 | 五月深爱网| 一个色在线| 久久人妻少妇嫩草AV無碼| 野花影院手机在线观看| 亚洲国产成人麻豆精品| 社区天堂| 亚洲欧美日韩精品一区| 国产又湿又黄又硬又刺激视频| 午夜人妻理论片天堂影院| 一级aaa级毛片午夜在线播放| 日本最新免费二区| 天天做天天爱天天操| 国产扒开美女双腿屁股流白浆| 日日干夜夜艹| 亚洲国产成人成上人色| 亚洲a级片| 亚洲一区二区中文字5566| 娇小萝被两个黑人用半米长| 亚洲精品无码不卡在线播放he| 亚洲精品乱码蜜桃久久久| 香蕉视频导航| 亚洲色域网|