色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM的多通道專(zhuān)業(yè)MP3播放器設(shè)計(jì)

          基于ARM的多通道專(zhuān)業(yè)MP3播放器設(shè)計(jì)

          作者: 時(shí)間:2015-06-02 來(lái)源:網(wǎng)絡(luò) 收藏

            4系統(tǒng)軟件設(shè)計(jì)

          本文引用地址:http://cafeforensic.com/article/275079.htm

            系統(tǒng)軟件包括操作系統(tǒng)、驅(qū)動(dòng)程序及播放器應(yīng)用程序3部分。

            4.1操作系統(tǒng)的實(shí)現(xiàn)

            在嵌入式系統(tǒng)中,通常并沒(méi)有像BIOS那樣的固件程序,因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由BootLoader來(lái)完成。BootLoader的任務(wù)是初始化芯片和主板,系統(tǒng)選用的是U-Boot-1.1.2啟動(dòng)程序,因?yàn)閁-Boot的優(yōu)點(diǎn)在于對(duì)多系統(tǒng)和多平臺(tái)的支持。由于S3C44B0X沒(méi)有存儲(chǔ)管理單元(MMU),所以無(wú)法移植標(biāo)準(zhǔn)的Linux內(nèi)核,而μClinux主要是針對(duì)沒(méi)有MMU的處理器設(shè)計(jì)的操作系統(tǒng)[4],因此可以作為播放器的操作系統(tǒng)平臺(tái)進(jìn)行移植。通過(guò)修改相應(yīng)的配置文件和驅(qū)動(dòng)程序就可以實(shí)現(xiàn)移植過(guò)程中需要?jiǎng)?chuàng)建的開(kāi)發(fā)板文件。

            4.2驅(qū)動(dòng)程序的設(shè)計(jì)

            本系統(tǒng)所編譯的μClinux內(nèi)核中包含有USB、LCD等驅(qū)動(dòng)程序,只要根據(jù)需要適當(dāng)?shù)男薷谋憧梢詰?yīng)用。但是對(duì)于解碼部分芯片的驅(qū)動(dòng)需要自己編寫(xiě)。音頻驅(qū)動(dòng)程序?qū)崿F(xiàn)的主要功能是:(1)系統(tǒng)啟動(dòng)時(shí)可以完成芯片的初始化;(2)具體操作時(shí)可以提供給操作系統(tǒng)合適的軟件接口。音頻驅(qū)動(dòng)初始化程序如下:

            void STA013_Init(void)

            {

            if(STA013_SendCommand(RESET_REG,0,0x00)) //復(fù)位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數(shù)據(jù)格式

            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)) //數(shù)據(jù)傳送激活

            STA013_PrintError();

            }

            4.3播放程序的設(shè)計(jì)

            作為本系統(tǒng)的一個(gè)主要?jiǎng)?chuàng)新點(diǎn),在多通道部分設(shè)計(jì)合理且高效的播放程序代碼很重要,在這里采用的是將待解碼的文件先由USB設(shè)備復(fù)制到內(nèi)存的緩沖區(qū),再由緩沖區(qū)發(fā)送給解碼器的方法。播放時(shí),程序會(huì)根據(jù)每個(gè)通道的歌曲信息將文件流從USB設(shè)備復(fù)制到相應(yīng)的緩沖區(qū)中。其主要實(shí)現(xiàn)代碼如下:

            for(i=0;i<4;i++){

            if((dbuf[i]=malloc(BUF_LEN))==NULL){

            printf("Allocation %d Error n", i);

            exit(1);

            }

            }

            4.4 操作界面的實(shí)現(xiàn)

            完整的MP3播放器設(shè)備需要有一個(gè)簡(jiǎn)潔的操作界面。本系統(tǒng)的操作界面選用MiniGUI軟件進(jìn)行編寫(xiě),通過(guò)對(duì)MiniGUI運(yùn)行模式的選擇、MiniGUI的移植[5]以及界面程序的編寫(xiě),最終的操作界面如圖4所示。整個(gè)操作界面簡(jiǎn)潔明了,系統(tǒng)在開(kāi)機(jī)后提供了當(dāng)前時(shí)間,以及播放、設(shè)置和復(fù)位按鍵,可以直接通過(guò)播放鍵來(lái)實(shí)現(xiàn)多通道播放功能,通過(guò)設(shè)置鍵進(jìn)行歌曲目錄的編排。

            

           

            圖4 播放器主界面

            5 結(jié)束語(yǔ)

            多通道MP3播放器與傳統(tǒng)的MP3播放器相比,具有許多優(yōu)勢(shì),可以滿足大型公共場(chǎng)所對(duì)背景音樂(lè)更高性能的需求。多通道MP3播放器可以實(shí)現(xiàn)多個(gè)音頻輸出通道同步播放,并可以通過(guò)USB接口外掛存儲(chǔ)設(shè)備實(shí)現(xiàn)歌曲的大容量存儲(chǔ)。此外,系統(tǒng)還提供了串口、以太網(wǎng)等一系列接口,方便與外部進(jìn)行數(shù)據(jù)交換和軟件升級(jí)。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: ARM MP3

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉