摘 要:本文采用STM32F103RBT6微控制器做為核心處理單元,以VS1053實現了音頻解碼功能,以OLED液晶屏實現了人機界面,結合TF卡、ASM1117電源芯片等外圍器件完成了一種功能完整、功耗低、人機交互友好的MP3音樂芯片設計。系統可播放VS1053原生支持的MP3、WMA、WAV文件,并通過軟件加載PATCH的方式增加了對無損音頻FLAC格式的支持。
關鍵詞:OLED;音樂播放器;STM32;音頻解碼
中圖分類號:TN312.8 文獻標識碼:A 文章編號:1674-7712 (2014) 02-0000-01
一、引言
MP3是一種可以大幅度降低音頻數據量的音頻壓縮技術,可以播放MP3音樂文件的設備稱為MP3音樂播放器。本文基于STM32系列MCU、VS1053音頻編解碼器和OLED顯示屏,設計了一款可以播放常見格式音樂文件的MP3音樂播放器,該播放器可通過OLED顯示屏顯示長文件名、播放時間等信息,具有音量調節和曲目選擇功能。
二、系統方案設計
本音樂播放器主要由主控部分、存儲模塊、音頻解碼模塊、顯示模塊等幾個核心部分構成。主控電路以STM32F103RBT6嵌入式MCU為核心,配合8M無源晶振、32.768K晶振等外圍器件以及電源電路、復位電路等構成最小系統,主要完成數據讀寫、處理與各模塊調度等功能,是整個系統的核心部分。系統的另一個核心部分是音頻解碼模塊,由VS1053音頻編解碼芯片為核心構成,主要負責將MCU傳輸過來的音頻數據流解碼并通過音頻輸出通道播放。
三、系統的硬件設計
(一)控制核心電路。系統的主芯片STM32F103RBT6是一款采用ARM CORTEX M3內核的高性能、低成本32位核心處理器。該款CPU在STM32F103系列中屬于中端產品,內嵌的128K程序存儲器和20K的RAM已足以滿足音樂播放器系統的需求。該芯片內嵌2個SPI口與2個IIC口,方便與系統中各個模塊進行通信。系統采用8M晶振,利用內部鎖相環倍頻到72M主頻。
(二)顯示模塊設計。系統采用128*64分辨率的OLED顯示屏作為顯示模塊。該顯示屏由SSD1306作為驅動芯片,可以通過8080并口和SPI或IIC串口與單片機進行通訊。本設計中采用SPI串口模式。
(三)音頻解碼模塊。系統采用VS1053芯片作為音頻解碼的核心,該芯片還內置了一個高性能立體聲DAC和音頻耳機放大器,極大簡化了電路設計。在系統中,STM32作為主機,VS1053作為從機,通過7根線與CPU通訊。DREQ是一個數據請求信號。MISO、MOSI和SCK則是VS1053的SPI接口。他們在XCS和XDCS控制下來執行不同的操作。
(四)其他外圍電路設計。存儲部分。存儲部分采用TF封裝的SD卡,用來存放音頻文件。采用SPI模式與CPU通訊,CS/MISO/MOSI/CLK腳分別接10~100K上拉電阻。人機接口。系統共通過四顆按鍵,接到CPU的IO口上,分別實現音量的加、減,曲目的選擇功能。還有一顆復位按鍵,用于系統的復位。
四、系統的軟件設計
(一)內存管理。音樂播放器的程序涉及到大量的數據讀寫,引入內存管理才能提高軟件運行效率,增強系統穩定性。內存管理,是指軟件運行時對計算機內存資源的分配和使用的技術。其最主要的目的是高效,快速的分配,并且在適當的時候釋放和回收內存資源。內存管理主要由2個函數組成:malloc函數用于內存申請,free函數用于內存釋放。本系統中,采用分塊式內存管理方式,即將內存地址映射到內存表中進行管理。
(二)FATFS文件系統的移植。FATFS是一個完全免費開源的FAT文件系統模塊,專門為小型的嵌入式系統而設計。移植需要修改源碼中的兩個文件,即fconf.h和diskio.c。FATFS源碼中的cc936.c文件提供了對中文長文件名的支持,其中含有Unicode與GBK編碼的雙向轉換表,故文件較大,若直接編譯,程序容量將超過芯片的程序存儲器128K的限制,我們需要將其中的轉換表數組提取出來轉換成UNIGBK.BIN文件,放置在內存卡或外置FLASH芯片中。
(三)VS1053控制。VS1053的軟件操作過程如下:
(1)復位VS1053。讓VS1053的狀態回到原始狀態,準備解碼下一首歌曲。
(2)配置VS1053的相關寄存器。配置模式寄存器(MODE)、時鐘寄存器(CLOCKF)、音調寄存器(BASS)、音量寄存器(VOL)等。
(3)發送音頻數據。發送數據的時序規則:DREQ變高時,向VS1053發送32個字節。然后繼續等待DREQ變高,直到音頻數據發送完。
(四)OLED顯示。OLED通過SPI串行口與單片機進行通訊,因STM32F103RBT6只有兩個SPI串行口,且SD卡、VS1053都需要SPI通訊,同時又對傳速速率有較高要求,故將兩個內置SPI分配給SD和VS1053。液晶屏對傳速速率沒有過高要求,故采用IO口模擬SPI的模式。
五、結束語
本文討論了一種基于STM32F103RBT6的音樂播放器設計,定義了OLED液晶顯示屏、SD卡和VS1053的接口設計,討論了FATFS的移植、內存管理和VS1053的控制流程,并指出了軟硬件設計中需要特別注意的一些細節問題,對相應器件的調試和其他類似系統設計有一定的參考意義。
參考文獻:
[1]李寧.基于MDK的STM32處理器開發應用[M].北京:北京航空航天大學出版社,2008.
[2]劉軍.例說STM32[M].北京:北京航空航天大學出版社,2011.
[3]程磊.基于STM32的MP3播放器的設計[J].內江科技,2012(12):100-101.
[4]鄭喜鳳,侯世敏.基于C8051F的OLED控制電路的設計[J].微計算機信息,2008(07):283-284.
[5]李世奇,董浩斌,李榮生.基于FatFs文件系統的SD卡存儲器設計[J].測控技術,2012(12):79-81.
[作者簡介]周言(1993-),女,遼寧丹東人,北華航天工業學院學生,本科在讀,主要研究方向:電氣自動化;王耀(1990-),男,安徽宿州人,北華航天工業學院學生,本科在讀,主要研究方向:圖形圖像處理;王灼(1992-),男,黑龍江綏化人,北華航天工業學院學生,本科在讀,主要研究方向:圖形圖像處理。