• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于嵌入式微處理器S3C44B0X音頻文件播放

    基于嵌入式微處理器S3C44B0X音頻文件播放

    作者: 時間:2009-07-24 來源:網絡 收藏

      S3C44B0X是三星公司針對嵌入式系統推出高性價比微處理器,它是基于ARM7TDMI內核的16/32位RISC處理器,工作主頻為66MHz.為了降低成本和節約產品開發周期,S3C44BO0X提供了豐富的內置部件,包括:內部SRAM,LCD控制器,8通道10位ADC,IIC總線接口,IIS總線接口等.其中S3C44B0X IIS接口能用來連接一個外部8/16位立體聲聲音解碼器.是CIRRUS公司推出的系列音頻解碼芯片.文獻[1,2,3]中對它們的工作原理和應用有詳細的論述.

      本文詳細研究了S3C44B0X IIS總線接口和的連接,搭建了以二者為基礎的嵌入式工作平臺.在該平臺上現WAVE音頻文件的播放,并給出了測試程序.

      1IIS總線結構

      S3C44B0X IIS(Inter-IC Sound)接口對FIFO存取提供DMA傳輸模式代替中斷模式,它可以同時發送數據和接收數據也可以只發或只收.

      如圖1所示,總線接口FIFO控制包括總線接口、內部寄存器和狀態機,控制總線接口邏輯和FIFO訪問;3位的雙分頻器包括一個作為IIS總線主設備時鐘發生器,另外一個作為外部編碼器的時鐘發生器;主設備串行比特時鐘發生器(主設備模式),將從主設備時鐘中分頻得到串行比特數時鐘;聲道發生器和狀態器生成和控制IISCLK和IISLRCK,并且控制數據的接收和發送;16位移位寄存器在發送數據時將數據由并變串,接收數據時做相反的動作.

      IIS總線可以使用正常傳輸模式,DMA傳輸模式和發送接收同時模式三種傳輸方式.

      2 音頻數模轉換芯片

      CS4334是CIRRUS半導體公司生產的音頻數模轉換芯片,具有接口簡單、性能穩定以及便于操作等特點,在嵌入式系統中有著廣泛的應用. 另外,由于WAVE數字音頻經CS4334轉換成模擬音頻后信號較微弱,需要增加一個音頻功率放大器.本文選用的是PHILIPS公司的TDA7050低電平單聲道/立體聲功率放大器.

    IIS總線結構框圖

    圖1 IIS總線結構框圖

    圖2S3C44B0X與CS4334以及TDA7050的連接示意圖

    圖2S3C44B0X與CS4334以及TDA7050的連接示意圖

      3S3C44B0X和CS4334以及TDA7050的連接

      S3C44B0X IIS總線接口和CS4334模塊都具有很強的通用性,連接很容易實現.連接方法為:將S3C44B0X的端口PF6(IISDO)、 PF8(IISCLK)、PF5(IISLRCK)、PE8(END/AN)分別與CS4334的管腳1、2、3、4連接.CS4334與TDA7050 連接時,只需將CS4334的輸出連接到TDA7050的相應輸入管腳即可.具體連接方法如圖2所示.

      4 程序設計

      程序設計假設S3C44B0X已經成功啟動,此處著重介紹播放WAVE文件主函數:

      Playwave().IIS_Init( )是初始化IIS接口函數,BDMA0_Done( )是BDMA0中斷處理函數.分別介紹如下.

      4.1 IIS接口初始化

      代碼如下:

      void IIS_Init(void){

      rPCONF = 0x24900a; //設置I/O端口PF,使端口PF5~8工作在IIS狀態

      Init_4334(); //初始化CS4334芯片}

      4.2 播放WAVE音頻文件函數

      Playwave()函數運行前會提示先將下載到指定RAM區域,函數計算出文件大小并提示播放與否,最后返回.

      void Playwave (U32 addr, U32 size){

      unsigned char *pWave;

      U32 samplesize; //WAVE文件長度

      U32 save_PLLCON;

      save_PLLCON = rPLLCON;

      rPLLCON= x6912)|(0x174)|0;

      SerialChgBaud(115200);

      pISR_BDMA0=(unsigned)BDMA0_Done;

      rINTMSK=~(BIT_GLOBAL|BIT_BDMA0);//中斷設置

      pWave=(unsigned char *)addr;//wave文件數據地址

      pWave+=0x28; //指向wav采樣長度

      samplesize=*(pWave+0) | *(pWave+1)8 | *(pWave+2)16 | *(pWave+3)24;

      pWave+=4; //指向wav數據

      samplesize=(samplesize>>1)lt;1;

      printf(nsample start:0x%x,pWave);

      printf(nsamplesize:0x%x,samplesize);

      Init_4334();

      /****** IIS 初始化 ******/

      rIISCON=0x22; //使能 DMA,接收空閑,使能分頻

      rIISMOD=0x89; //主模式,IIS格式,16位數據,256fs,32 fs

      rIISPSR=0x33; //分頻因子

      rIISFCON=0xa00;//接收、發送DMA模式,使能FIFO

      /****** BDMA0 初始化******/

      rBDISRC0=(130)+(128)+(U32)pWave; //DMA源;16位數據,增長方式

      rBDIDES0=(130)+(328)+((U32)rIISFIF); //DMA目的:M2IO,內部模塊

      rBDICNT0=(130)+(126)+(322)+(121)+(020)+samplesize;

      rBDICNT0 |= (120);//設置DMA請求源為IIS,中斷方式,手動重載,使能DMA

      rBDCON0 = 0x02;

      printf(nNow play the wave file ...);

      printf(nPush any key to exit!!!);

      rIISCON |=0x1;

      while(!getkey()); //按下任意鍵返回}

      5 小結

      采用S3C44B0X內置IIS總線和音頻數模轉換芯片CS4334,本文搭建了以二者為核心的工作平臺,并詳細討論了基于此平臺實現播放WAVE音頻文件的方法.由于S3C44B0X及CS4334模塊具有較強的通用性,因此本文給出的實現方法及程序具有使用簡單、運行穩定、便于移植等特點.

      本文作者創新點在于詳細設計了基于嵌入式微處理器S3C44B0X和CS4334的WAVE音頻文件播放平臺,融合了ARM處理器功耗小、便攜、代碼執行效率高和WAVE音頻文件音質好的優點,并給出了詳細的連接方法,所設計程序已經在硬件平臺上成功運行.



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 荣昌县| 金门县| 泰州市| 南康市| 涡阳县| 蕉岭县| 清徐县| 昌宁县| 庆元县| 瑞金市| 马山县| 宁阳县| 台南县| 台北县| 五指山市| 确山县| 镇赉县| 丰原市| 绍兴市| 白城市| 大关县| 沭阳县| 皋兰县| 赣州市| 科技| 交城县| 上高县| 普格县| 洪泽县| 丰都县| 广东省| 南郑县| 虞城县| 将乐县| 织金县| 太康县| 深泽县| 盐源县| 资阳市| 金川县| 玉龙|