顏 銳,譚周文
(湖南人文科技學院通信與控制工程系,湖南婁底417000)
MP3作為高質(zhì)量音樂壓縮標準,給音頻產(chǎn)業(yè)帶來了具大的沖擊。MP3技術使音樂數(shù)據(jù)壓縮比率大,回放質(zhì)量高。傳統(tǒng)音樂文件在網(wǎng)絡上傳播時,主要用Winamp等播放軟件進行播放,使MP3音樂無法脫離計算機進行播放,給音樂欣賞帶來不便。隨著MP3播放器的出現(xiàn)及其技術的發(fā)展,人們對MP3播放器的要求越來越高,制造商在MP3播放器的選型、設計、開發(fā)和功能等領域等方面做了很多努力,便攜式多功能MP3播放器的應用也越來越具有實際應用價值和潛在的市場要求。基于以上背景,本文提出以STM32F103 ZET6為處理器,以VS1053為播放器解碼芯片,設計一款便攜多功能MP3播放器。
根據(jù)要求,確定如下方案:以STM32F103ZET6為主控芯片,從SD卡中讀取音樂文件的數(shù)據(jù),送VS1053進行解碼,輸出模擬音頻信號。LD3320用來實現(xiàn)人機語音交互,2M的FLASH用來保存字庫信息和UNICODE轉OEM的碼表。24C02用來保存觸摸屏的校準信息。外擴512K的SRAM用來滿足大內(nèi)存的使用需求。顯示模塊采用3.0寸的觸摸電阻屏,所有操作通過觸摸完成。DS18B20完成溫度的采集功能,蜂鳴器完成聲音提示音的功能,攝像頭接口外接OV7670模塊完成照相的功能。硬件系統(tǒng)結構框圖如圖1所示。
圖1 硬件系統(tǒng)結構框圖
本系統(tǒng)采用VS1053音頻編解碼器作為音頻文件的硬件解碼方案,VS1053能解碼MP3,WMA,WAV,MID,F(xiàn)LAC,OGG 格式的音頻文件,并且還能進行ADPCM編碼,包含一個低功耗,高性能的DSP處理器。VS1053采用SPI的通信方式,通過判斷DREQ,如果此引腳為高電平則送數(shù)據(jù),如果為低電平則停止送數(shù)據(jù)。因為VS1053自帶立體DAC輸出,如果解碼成功,可以用示波器從LEFT和RIGHT引腳測得波形。能夠直接驅(qū)動耳機。VS1053的原理圖如圖2所示:
圖2 音頻編解碼電路
本系統(tǒng)采用的顯示模塊為3.0寸的TFT四線電阻屏。該顯示屏的控制器是R61509V。顯示屏外配有觸摸屏,觸摸屏的控制器是XPT2046。總的來說觸摸電阻屏的設計分為兩個部分,一個是顯示屏的設計,另一個是觸摸屏的設計。為了能夠做出比較好的UI,采用的價格較高的3.0寸的TFT顯示屏。TFT裸屏的原理圖設計如圖3所示:STM32F103ZET6的IO比較充足,況且選用16位的數(shù)據(jù)模式要比8位的數(shù)據(jù)模式,顯示的速度要快得多。配合STM32F103ZET6的FSMC刷屏高達33FPS,可以說速度非???。有兩個0歐姆的電阻,當R2焊接的時候,IM0引腳就接地了,這時候就是16位數(shù)據(jù)模式,當R1焊接的時候,IM0引腳就接高電平,選擇的就是8位數(shù)據(jù)模式。顯示屏的LCD_BAK引腳是用來控制屏幕的亮度。這里接到處理器的PWM引腳就可以任意控制屏幕的亮度。
常見的觸摸 IC 有 ADS7843,7846,UH7843,7846,XPT2046,TSC2046。XPT2046 有兩種工作模式。一種是單端工作模式,另一種是差分工作模式,這里采用差分的工作模式。XPT2046的通信協(xié)議是SPI,指令很簡單,當輸入的指令為0X90時去讀X坐標的電壓值,當時指令為0XD0時就讀取Y坐標的電壓值。觸摸屏的原理圖設計如圖4所示:
圖3 TFT裸屏原理圖
圖4 觸摸屏原理圖
圖3中有兩個0歐姆的電阻,這是為了能夠自由選擇8位數(shù)據(jù)模式或16位的數(shù)據(jù)模式。
XPT2046包含12位精度的SAR型AD轉換器。該IC主要為了采集電阻屏的電壓值。對于電源的波動還是比較敏感的,TVCC通過VCC串聯(lián)一個10歐姆的電阻,然后分別并上一個10UF和104的電容。電阻的作用是衰減小幅值的噪聲信號,起到濾波的效果。104電容是濾除高頻噪聲。10UF電容有兩個作用。一是儲能的作用,此IC工作在差分模式,功耗比較大,這里的作用是避免工作時對電源的波動,對外可以濾除低頻噪聲。
STM32F103ZET6處理器內(nèi)部自帶溫度傳感器,然而這個溫度傳感器的精度很不高,所以采用外接溫度傳感器。DS18B20是DALLAS公司生產(chǎn)的數(shù)字溫度傳感器,采用單總線的操作方式,精度又高。只占用一個IO口。溫度傳感器的設計很簡單,需要注意引腳的接法,如果電源和地接反,將可能燒壞芯片。DS18B20連接圖如圖5所示:
圖5 DS18B20原理圖
系統(tǒng)采用容易編寫程序的有源蜂鳴器,有源蜂鳴器和無源蜂鳴器的最大區(qū)別是:有源蜂鳴器含有振蕩器,只要電流達到要求,就能夠以一定頻率發(fā)出聲音。對于某些操作采用蜂鳴器作為反饋聲音,會使得本系統(tǒng)的設計變得更加人性化。蜂鳴器的連接圖如圖6所示:
圖6 蜂鳴器原理圖
采用貼片的三級管S8050,將STM32的BUZZER引腳設置為推挽高電平輸出就能是蜂鳴器鳴叫了,可以注意到三級管的基極和地之間跨接了一個10K的電阻。當BUZZER引腳置為低電平的時候,由于基極還存在電壓,電壓不能夠快速下降,并接一個電阻有利于電壓快速降到低電平。
系統(tǒng)軟件設計采用μC/OS-II作為操作系統(tǒng),以UCGUI作為圖形用戶界面軟件。采用模塊化的編程思想,先寫好底層與硬件相關的軟件模塊,封裝成.c和.h文件。然后再編寫與硬件無關的應用軟件模塊。軟件總體框架設計如圖7所示。具體操作包含幾個模塊的移植。
圖7 軟件總體設計框圖
在官網(wǎng)上下載源碼。下載后,在Software文件夾中有兩個子文件夾。在Ports文件夾中分別修改好 os_cpu.h,os_cpu_a.a(chǎn)sm,os_cpu_c.c,os_dbg.c。然后再修改啟動文件。修改完畢后,就可以通過os_cf g.h來裁剪內(nèi)核,把不需要的系統(tǒng)服務裁剪掉以節(jié)省系統(tǒng)資源。裁剪完畢后,就可編寫一個LED閃爍的任務來檢驗是否移植成功。
下載uCGUI的源碼(3.9版的)后。將文件中的CONFIG,GUI_X文件夾以及GUI的源文件夾添加到工程當中。CONFIG文件夾是用來裁剪和配置uCGUI的,該文件夾下有三個文件需要配置和修改,GUIConf.h是用來配置uCGUI是否支持操作系統(tǒng),是否支持觸摸,為窗體分配動態(tài)內(nèi)存等等,GUITouchConf.h是用來配置觸摸屏的參數(shù),LCDConf.h是用來配置LCD顯示其參數(shù)。對應CONFIG文件夾,GUI_X文件夾是用來修改具體的函數(shù)。完成這兩個文件夾的修改,編譯正確后,就可以通過uCGUI的一些簡單的2D圖形庫函數(shù)測試uCGUI是否移植成功。
首先下載源碼,有兩個文件夾doc和src。在src文件夾包含需要的源碼。ffconf.h是FatFs模塊的配置文件,ff.c和ff.h分別是模塊的源文件,頭文件。Integer.h是模塊的數(shù)據(jù)類型定義文件,diskio.c和diskio.h是模塊的底層磁盤I/O文件。移植FatFs的時候只需要修改ffconf.h和diskio.c文件。通過ffconf.h文件可以配置是夠支持字符串操作,是否支持長文件名,是否支持格式化,設置語言類型等等。FatFs模塊完全與底層磁盤I/O分離,因此需要實現(xiàn)底層物理磁盤的讀寫函數(shù)。實現(xiàn)底層函數(shù)的時候,只考慮了一個物理磁盤的情況,其實FatFs可以支持多個不同的存儲媒介,不過這里只有SD卡。移植好FatFs,就可像PC機一樣讀寫文件。
底層驅(qū)動模塊和硬件緊密相連,是整個軟件設計的基石,如果底層驅(qū)動沒寫好,上層軟件的編寫就會變得很困難,有時候在上層應用軟件的編寫的時候總是找不到錯誤,就有可能底層驅(qū)動出問題了。本軟件系統(tǒng)的底層驅(qū)動模塊文件相對來說比較多,可以采用模塊化的編程思想,只需每個編寫調(diào)試就可以成功。
設計完成的MP3播放器能夠完成正常音樂播放,數(shù)碼相框能解碼出小于屏幕尺寸的bmp,jpg,gif文件,照相機能夠拍攝320X240的圖片,電子書能夠打開.txt,.h,.c,.lrc 文件,能夠完成語音對話功能。該系統(tǒng)實際運行穩(wěn)定可靠,以后仍可以對其功能進行補充,完善多功能MP3的性能。
[1]先鋒工作室.單片機程序設計實例[M].北京:清華大學出版社,2002:46-50.
[2]張大明.單片機控制實訓指導及綜合應用實例[M].北京:機械工業(yè)出版社,2007:668-710.
[3]方安平,蔡俊宇.Cortex-M3的異常處理機制研究[J].單片機與嵌入式系統(tǒng)應用,2009(2):15-18.
[4]馬義德,周煒超,文芳,李柏年,李庚.基于SPCE061A的聲控MP3播放器設計[J].微計算機信息,2009(8):301-303.
[5]黃智偉.全國大學生電子設計競賽電路設計([M].北京:北京航空航天大學出版社,2006:127-140.
[6]馬喆.基于AT89C51SND1C的mp3播放器的設計[J].中小企業(yè)管理與科技:下旬刊,2009(1):235-236.
[7]陳永降,朱維杰.基于SL811HS的U盤MP3播放器設計[J].科技創(chuàng)新導報,2008(14):9.
[8]馬鵬閣,張松煒,陳恩慶.基于SOC芯片ATJ2135的MP3播放器設計[J].電子工程師,2008(6):57-59.