<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)RM的多通道專(zhuān)業(yè)MP3播放器設計

基于A(yíng)RM的多通道專(zhuān)業(yè)MP3播放器設計

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

  4系統軟件設計

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

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

  4.1操作系統的實(shí)現

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

  4.2驅動(dòng)程序的設計

  本系統所編譯的μClinux內核中包含有USB、LCD等驅動(dòng)程序,只要根據需要適當的修改便可以應用。但是對于解碼部分芯片的驅動(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),在多通道部分設計合理且高效的播放程序代碼很重要,在這里采用的是將待解碼的文件先由USB設備復制到內存的緩沖區,再由緩沖區發(fā)送給解碼器的方法。播放時(shí),程序會(huì )根據每個(gè)通道的歌曲信息將文件流從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)行數據交換和軟件升級。


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

關(guān)鍵詞: ARM MP3

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>