基于A(yíng)RM的多通道專(zhuān)業(yè)MP3播放器設計
4.2 驅動(dòng)程序的設計
本文引用地址:http://dyxdggzs.com/article/84900.htm本系統所編譯的μClinux內核中包含有USB、LCD等驅動(dòng)程序,只要根據需要適當的修改便可以應用。但是對于MP3解碼部分芯片的驅動(dòng)需要自己編寫(xiě)。音頻驅動(dòng)程序實(shí)現的主要功能是:(1)系統啟動(dòng)時(shí)可以完成芯片的初始化;(2)具體操作時(shí)可以提供給操作系統合適的軟件接口。音頻驅動(dòng)初始化程序如下:
void STA013_Init(void)
{
if(STA013_SendCommand(RESET_REG,0,0x00)) //復位STA013
STA013_PrintError();
if(STA013_SendCommand(ACT_CON_REG,0,0x00)) //未激活狀態(tài)
STA013_PrintError();
if(STA013_SendCommand(PWR_CON_REG,0,0x00)) //上電
STA013_PrintError();
if(STA013_SendCommand(FS_CON_REG,0,
I STA013L_FsValue[SysInfo.SamplingIndex])) //選擇采樣頻率
STA013_PrintError();
if(STA013_SendCommand(IF_CON_REG,0,0x02+(0<<6))) //選擇16位IIS數據格式
STA013_PrintError();
if(STA013_SendCommand(ANG_CTL_REG,0,0)) // 0x13, 0x12選擇DAC
STA013_PrintError(); 和Line In輸入模式
if(STA013_SendCommand(DGT_CTL_REG,0,0x00)) // DAC靜音
STA013_PrintError();
if(STA013_SendCommand(LHP_VOL_REG,0,0x00)) //左聲道音量
STA013_PrintError();
if(STA013_SendCommand(RHP_VOL_REG,0,0x00)) //右聲道音量
STA013_PrintError();
if(STA013_SendCommand(ACT_CON_REG,0,0x00)) //數據傳送激活
STA013_PrintError();
}
4.3 播放程序的設計
作為本系統的一個(gè)主要創(chuàng )新點(diǎn),在多通道部分設計合理且高效的播放程序代碼很重要,在這里采用的是將待解碼的MP3文件先由USB設備復制到內存的緩沖區,再由緩沖區發(fā)送給解碼器的方法。播放時(shí),程序會(huì )根據每個(gè)通道的歌曲信息將MP3文件流從USB設備復制到相應的緩沖區中。其主要實(shí)現代碼如下:
for(i=0;i<4;i++){
if((dbuf[i]=malloc(BUF_LEN))==NULL){
printf("Allocation %d Error n", i);
exit(1);
}
}
4.4 操作界面的實(shí)現
完整的MP3播放器設備需要有一個(gè)簡(jiǎn)潔的操作界面。本系統的操作界面選用MiniGUI軟件進(jìn)行編寫(xiě),通過(guò)對MiniGUI運行模式的選擇、MiniGUI的移植[5]以及界面程序的編寫(xiě),最終的操作界面如圖4所示。整個(gè)操作界面簡(jiǎn)潔明了,系統在開(kāi)機后提供了當前時(shí)間,以及播放、設置和復位按鍵,可以直接通過(guò)播放鍵來(lái)實(shí)現多通道播放功能,通過(guò)設置鍵進(jìn)行歌曲目錄的編排。
圖4 播放器主界面
5 結束語(yǔ)
多通道MP3播放器與傳統的MP3播放器相比,具有許多優(yōu)勢,可以滿(mǎn)足大型公共場(chǎng)所對背景音樂(lè )更高性能的需求。多通道MP3播放器可以實(shí)現多個(gè)音頻輸出通道同步播放,并可以通過(guò)USB接口外掛存儲設備實(shí)現歌曲的大容量存儲。此外,系統還提供了串口、以太網(wǎng)等一系列接口,方便與外部進(jìn)行數據交換和軟件升級。
本文創(chuàng )新點(diǎn):設計了基于ARM7平臺下的多通道MP3播放器,實(shí)現了對外接移動(dòng)硬盤(pán)或U盤(pán)上的mp3文件進(jìn)行多通道同步播放。
參考文獻
[1] 王旭東,徐剛.基于Windows CE.Net 4.2嵌入式操作系統多媒體播放器的應用研究[J].微計算機信息, 2006,22-6:77-79
[2] 馬忠梅,馬廣云,徐英慧等.ARM嵌入式處理器結構與應用基礎[M].北京:北京航空航天大學(xué)出版社,2002
[3] 王道乾,劉定智,文俊浩.基于ARM處理器的MP3播放器分析與實(shí)現[J].計算機工程與設計, 2007,28-7:1595-1597
[4] 李巖,榮盤(pán)祥.基于S3C44B0X嵌入式μClinux系統原理及應用[M].北京:清華大學(xué)出版社,2005
[5] 閆玉忠,石理.嵌入式Linux的MiniGUI研究和移植[J].單片機與嵌入式系統應用,2003,6-1:5-7
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論