|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
s344b0x實驗箱聲音的播放 |
| 作者:syzhou1314 欄目:嵌入式系統(tǒng) |
我正在用s344b0x實驗箱做一個語音電子時鐘,現(xiàn)需連續(xù)播放兩段wave聲音: 一段是歡迎使用(huanying.wav總共404858字節(jié),除去44字節(jié)的頭文件信息是404814字節(jié)), 另一段是播報日期的聲音(nian.wav總共是156698字節(jié),除去44字節(jié)的頭文件信息是156654字節(jié)),兩者總共播放時間不過5秒,在程序中定義的播放buffer緩沖區(qū)”int buffer[AUDIO_IN_BUFFERSIZE*20];“大小是1764000字節(jié)(>(404814+156654)) 我的做法是先把huanying.wav讀到緩沖區(qū)buffer的0~404813中,然后把nian.wav讀到404814~561467中,然后在把buffer作為dma的源地址進行播放!單結(jié)果只是播放了huanying.wav,后面的沒出來,請問是什么原因?錯在哪里》》÷?? void Main_Task(void *Id) //Main_Test_Task { u32 toubyte; U32 nbyte; FILE *pfile; FILE *pfile1; CHAR filename[]="huanying.wav";//erlingling CHAR filename1[]="nian.wav"; int aa=1; rIISCON=0; //disable; rIISMOD=IISMOD_TX|IISMOD_16BIT|IISMOD_32FS|IISMOD_MCLK_384FS; rIISFCON=IISFCON_TXDMA|IISFCON_TXFIFO; rIISPSR=0x11; rIISCON=IISCON_PRESCALE|IISCON_ENABLE; Init_UDA1341(); pfile=OpenOSFile(filename, FILEMODE_READ); if(!pfile) return ; pfile1=OpenOSFile(filename1, FILEMODE_READ); if(!pfile1) return ; toubyte=ReadOSFile(pfile, (U8*) buffer, 0x16*2);//讀取頭文件信息 nbyte=ReadOSFile(pfile, (U8*) buffer, 404814);//讀取波形數(shù)據(jù) Uart_Printf("\nhuanying file tounbyte=%d\t nbyte=%d sizeofbuff=%d\n",toubyte,nbyte,sizeof(buffer)); toubyte=ReadOSFile(pfile1, (U8*) (buffer+404814), 0x16*2);//讀取頭文件信息 Uart_Printf("\nnian tounbyte=%d\n",toubyte); nbyte=ReadOSFile(pfile1, (U8*) (buffer+404814),156654);//讀取波形數(shù)據(jù) Uart_Printf("\nnian file tounbyte=%d\t nbyte=%d sizeofbuff=%d\n",toubyte,nbyte,sizeof(buffer)); for(;;) {//死循環(huán) /****** BDMA0 Initialize ******/ //for Source rBDISRC0=(1<<30)+(1<<28)+(int)buffer; //Half word,inc,Buf //for des rBDIDES0=(1<<30)+(3<<28)+((int)0x1d18010); //M2IO,fix,IISFIF //Size //iis,reserve,done_int,not auto-reload/start,DMA enable,COUNT rBDICNT0=(1<<30)+(1<<26)+(3<<22)+(0<<21)+(0<<20)+(sizeof(buffer)&(~0x3)); rBDICNT0 |= (1<<20);//enable //Enable DMA rBDCON0 = 0x0<<2; //Tx DMA rIISCON|=IISCON_TXDMA; } } 這是超級終端的結(jié)果: File huanyingwav have been read! File nian wav have been read! huanying file tounbyte=44 nbyte=404814 sizeofbuff=1764000 nian tounbyte=44 nian file tounbyte=44 nbyte=156654 sizeofbuff=1764000 懇請指教! |
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |