周雙飛++黃海波++簡煒++高云++王志虎
摘要:基于STM32F103VET6增強型微控制器設計了一款MP3播放器,基于硬件解碼實現了多頁顯示歌曲播放列表、換頁、觸摸換歌以及支持MP3、WAV等格式歌曲的播放等功能的操作。硬件系統包括VS1003音頻解碼器、TDA1308功放模塊、MicroSD卡以及液晶觸摸屏;軟件系統基于VS1003驅動、液晶觸摸屏的驅動、μC/OS- 實時操作系統和FATFS文件系統等進行實現,系統實現表明具有很好的播放和界面操作效果。
關鍵詞:STM32;MP3播放器;μC/OS-
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2016)01-0260-03
Design and Implementation of MP3 Player Based on STM32
ZHOU Shuang-fei1, HUANG Hai-bo1, JIAN Wei1, GAO Yun2, WANG Zhi-hu2
(School of Electrical & Information Engineering, Hubei University of Automotive Technology, Shiyan 442002, China; 2. Power Equipment Plant of Dongfeng Motor Group Co., Ltd., Shiyan 442000, China)
Abstract: A MP3 player was designed based on STM32F103VET6, which is an enhanced micro controller. Based on hardware decode, main functions are achieved, such as multiple pages show the songs list, paging, touch to change songs and support MP3,WAV format songs play, and so on. The hardware system included VS1003 audio decoder, TDA1308 power amplifier module, MicroSD card and LCD touch screen. The software was implemented based on VS1003 driver, LCD touch screen driver, μC/OS-II real-time operating system and FATFS file system. The implementation shows that the MP3 player has the very good play and interface operation effect.
Key words: STM32;MP3 player;μC/OS-
MP3播放器被廣泛應用于各種消費類電子領域,如新型的車載音頻設備、移動手機、網絡MP3等,所以對MP3的研究還具有很高的市場價值。國內外現有的MP3解碼方案實現有2種方案:硬件和軟件解碼,由于軟件解碼借助軟件提供的算法來實現音頻的分析、解碼等工作,程序復雜,實現難度大且相對來講非常耗電,所以本文采用硬件解碼設計MP3播放器。
1 硬件設計
1.1 硬件系統方案設計
基于STM32F103VET6微控制器所設計的MP3播放器,主要包括三個模塊:存儲模塊、播放模塊和顯示模塊。系統方案設計的系統框圖如圖1所示。音頻文件存儲在MicroSD卡內(支持文件夾),通過微控制器讀取歌曲數據發送到VS1003音頻解碼器,經解碼后發送給TDA1308功放模塊,放大后在通過耳機外放出來,同時通過液晶顯示器實時的顯示播放的狀態信息。
圖1 系統框圖
STM32F103VET6增強型微控制器使用的是高性能、低成本、低功耗的Cortex-M3內核,支持睡眠、停機、待機三種低功耗模式[1]。工作頻率為72MHZ,內置64KB的SRAM和 512KB的閃存,包含2個USART、2個SPI、1個USB和1個CAN等通信接口,還具有豐富外設和增強I/O端口。下面對系統中的幾個主要模塊進行設計說明。
1.2 MicroSD卡模塊
MicroSD卡與STM32開發板的連接采用SDIO接口,其中SDIO有多種工作模式,本次采用SDIO的DMA模式,管腳連接如圖2所示。MicroSD卡的驅動采用FATFS文件系統,FATFS是面向小型嵌入式系統的一種通用的FAT文件系統模塊,FATFS完全獨立于底層的I/O介質,因此獨立于硬件架構,可以很方便的移植到處理器當中,FATFS里面的各個函數都是封裝好的函數,只需要添加底層介質函數,就可以對MicroSD卡進行讀寫操作。
圖2 MircroSD管腳連接圖
1.3 液晶模塊
LCD與CPU的連接采用FSMC接口,FSMC接口初始化完成后,就可以對液晶屏控制芯片ILI9341進行控制,其中液晶屏的掃描方式、像素點的顏色及橫/豎屏的控制都是通過調用液晶屏寄存器初始配置函數向ILI9341寫控制參數來實現。對不同圖片及文字的顯示實質是控制液晶的所有像素點的顏色來達到預期的結果。顯示器的觸摸屏使用的是電阻觸摸屏,通過TSC2046芯片控制。要實現觸摸功能首先要對觸摸屏進行觸摸校準,校準成功后,保存校準參數(為避免每次開機都進行校準,將參數保存在MircroSD中),當再次點擊時,就可以把測量出來的觸點電壓經轉換公式計算出對應的液晶屏坐標。
1.4 VS1003解碼模塊和TDA1308功放模塊
VS1003音頻解碼芯片為VS10xx系列的第三代產品,是芬蘭VLSI Solution公司出品的單片MP3/WMA/MIDI解碼和ADPCM編碼芯片[2]。VS1003使用的是數字信號處理器VS_DSP,具有功耗低,性能高等特點。VS1003具有串行的控制和數據接口,片內帶有一個高品質可變采樣的ADC和多速立體聲DAC,其工作的主時鐘為12.288MHz,VS1003通過開發板中的SPI2來控制,解碼電路如圖3所示。數據的寫入主要通過DREQ信號控制,當VS1003的FIFO能夠接收數據時,DREQ為高向VS1003發送32Byte的數據(當DREQ變低時停止發送數據),接收數據后進行解碼、高低音配置,然后流向音量控制單元和音頻FIFO,最后通過低通濾波輸送到音頻放大器。
圖3 MP3解碼電路
由于從VS1003輸出的功率太小,播放的音效不佳,所以將輸出的信號送往TDA1308功放模塊,放大后在經過耳機播放出來。
2 軟件系統設計
要實現本系統的MP3功能,需要做的準備工作有在SD卡內新建兩個文件夾,分別命名為MP3Ready和Music。MP3Ready文件夾內存放list1.txt和list2.txt兩個空文件, list1.txt用于存放掃描到的可播放文件名及路徑, list2.txt用于存放播放歌曲列表不添加路徑,同時還要將預先制作好的用于LCD顯示的字模及圖片存放到此文件夾下;Music文件夾用于存放要播放的音頻文件。做完這些工作后,把液晶屏驅動、觸摸屏驅動、MicroSD卡驅動、VS1003驅動等驅動程序添加到工程中,通過μC/OS-Ⅱ實時操作系統調度整個程序的運行,軟件部分總體框圖如圖4所示。
圖4 軟件部分總體框架
2.1 μC/OS-Ⅱ實時操作系統
μC/OS-Ⅱ是一個代碼完全開放的多任務實時操作系統,其結構簡單明了,代碼嚴謹,雖然它只是一個內核,但包括了一個操作系統基本的特性:中斷管理、內存管理、多任務的管理、定時管理等,而且具有很強的移植性,很容易被移植到各種微處理器上,它還具有可裁剪、實時性好、高可靠性等特點[3],所以MP3的設計選擇μC/OS-Ⅱ實時操作系統。
本系統使用μC/OS-Ⅱ實時操作系統,涉及μC/OS-Ⅱ實時操作系統的移植,移植成功后,還要對任務的建立、任務的堆棧及任務優先級配置等進行編程。要實現μC/OS-Ⅱ的運行首先要對操作系統的所有變量和數據結構初始化,創建一個空任務,然后創建播放器運行、指示燈等任務,最后通過多任務任務調度及中斷實現就緒表中最高優先級任務的切換。
2.2 主程序的流程實現
要實現MP3的功能,其主程序首先要完成對開發板所用到的外設進行初始化和文件系統的初始化,進而將MicroSD卡中可播放的音頻文件(支持長文件名,如果文件名過長,超出部分忽略不顯示)掃描到播放列表中,同時將播放列表中的文件名以列表的形式在LCD上顯示出來,然后按照播放指令將要播放的音頻文件發送給VS1003模塊,經過VS1003的解碼、高低音配置等處理,最后發送給功放模塊將歌曲播放出來,一首歌播放完之后,自動播放歌曲列表的下一首,直至所有歌曲播放完畢。主程序流程框圖如圖5所示。
圖5 主程序流程框圖
3 系統實現效果
MP3播放器的設計用到多種調試手段,主要通過JTAG接口調試,其次通過指示燈的狀態和串口在電腦屏幕上打印MP3播放器運行過程的參數協助調試。設計的界面效果如圖6所示,歌曲名稱以列表的形式顯示,單頁最多顯示8首歌曲,正在播放的歌曲用三角圖標指示。開始按鍵兩邊的按鍵實現直接切換上一首、下一首歌曲的功能;左下角菱形的左右頂角區域分別是上一頁、下一頁的按鍵;對于歌曲的切換還可以直接點擊列表歌曲名稱進行切換。
圖6 界面效果
4結束語
本文對MP3硬件解碼技術進行了研究,并成功開發了一款MP3播放器。在硬件上解碼器與存儲器分離,增加了歌曲存儲容量(可支持4G的MicroSD卡),既節省了成本,又極大地方便了應用,同時還采用了觸摸屏顯示器,使操作更加便捷,具有一定的使用和推廣價值。
參考文獻:
[1] 馬忠梅,徐琰.ARM Cortex 微控制器教程[M]. 北京:北京航空航天大學出版社,2010:59-61.
[2] VLSI Solusion.VS1003.Version:1.06,2012-03-16.
[3] 任哲.嵌入式實時操作系統μC/OS-Ⅱ原理及應用[M].北京:北京航空航天大學出版社,2014:7-13.