新聞中心

        EEPW首頁 > 消費電子 > 設計應用 > 基于嵌入式微處理器S3C44B0X音頻文件播放的實現

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

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

          4.2 WAVE函數

          Playwave()函數運行前會提示先將wave下載到指定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 小結

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

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

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 小金县| 高淳县| 科技| 聊城市| 花垣县| 鱼台县| 东明县| 进贤县| 南木林县| 莆田市| 梓潼县| 阳城县| 辽中县| 韶山市| 自贡市| 宾阳县| 韶关市| 泸溪县| 光山县| 长乐市| 扬州市| 阿拉善左旗| 黄石市| 个旧市| 桃江县| 宜丰县| 尼勒克县| 怀来县| 陇南市| 项城市| 无锡市| 绵阳市| 和龙市| 青河县| 荔浦县| 八宿县| 黄浦区| 新安县| 工布江达县| 闸北区| 涟源市|