各位dx好:<br /> 我正在用三星44b0实验箱做一个语音电子时钟,现需连续播放两段wave声音,一段是欢迎使用(huanying.wav总共404858字节,除去44字节的头文件信息是404814字节),另一段是播报日期的声音(nian.wav总共是156698字节,除去44字节的头文件信息是156654字节),两者总共播放时间不过5秒,在程序中定义的播放buffer缓冲区”int buffer[AUDIO_IN_BUFFERSIZE*20];“大小是1764000字节(>(404814+156654))我的做法是先把huanying.wav读到缓冲区buffer的0~404813中,然后把nian.wav读到404814~561467中,然后在把buffer作为dma的源地址进行播放!单结果只是播放了huanying.wav,后面的没出来,请问是什么原因?错在哪里》》÷??<br />一下是程序:<br /><br />void Main_Task(void *Id) //Main_Test_Task<br />{ u32 toubyte;<br /> U32 nbyte;<br /> FILE *pfile;<br /> FILE *pfile1;<br /> char filename[]="huanying.wav";//erlingling<br /> char filename1[]="nian.wav";<br /> int aa=1;<br /> rIISCON=0; //disable;<br /> rIISMOD=IISMOD_TX|IISMOD_16BIT|IISMOD_32FS|IISMOD_MCLK_384FS;<br /> rIISFCON=IISFCON_TXDMA|IISFCON_TXFIFO;<br /> rIISPSR=0x11;<br /> rIISCON=IISCON_PRESCALE|IISCON_ENABLE;<br /> <br /> Init_UDA1341();<br /> pfile=OpenOSFile(filename, FILEMODE_READ);<br /> if(!pfile)<br /> return ;<br /> pfile1=OpenOSFile(filename1, FILEMODE_READ);<br /> if(!pfile1)<br /> return ; <br /> toubyte=ReadOSFile(pfile, (U8*) buffer, 0x16*2);//读取头文件信息<br /> nbyte=ReadOSFile(pfile, (U8*) buffer, 404814);//读取波形数据<br /> Uart_Printf("
huanying file tounbyte=%d nbyte=%d sizeofbuff=%d
",toubyte,nbyte,sizeof(buffer));<br /> <br /> toubyte=ReadOSFile(pfile1, (U8*) (buffer+404814), 0x16*2);//读取头文件信息<br /> Uart_Printf("
nian tounbyte=%d
",toubyte);<br /> nbyte=ReadOSFile(pfile1, (U8*) (buffer+404814),156654);//读取波形数据<br /> Uart_Printf("
nian file tounbyte=%d nbyte=%d sizeofbuff=%d
",toubyte,nbyte,sizeof(buffer));<br /> <br /> for(;;)<br /> {//死循环<br /> /****** BDMA0 Initialize ******/<br /> //for Source<br /> rBDISRC0=(1<<30)+(1<<28)+(int)buffer; //Half word,inc,Buf<br /> //for des<br /> rBDIDES0=(1<<30)+(3<<28)+((int)0x1d18010); //M2IO,fix,IISFIF<br /> //Size<br /> //iis,reserve,done_int,not auto-reload/start,DMA enable,COUNT<br /> rBDICNT0=(1<<30)+(1<<26)+(3<<22)+(0<<21)+(0<<20)+(sizeof(buffer)&(~0x3));<br /> rBDICNT0 |= (1<<20);//enable<br /> //Enable DMA<br /> rBDCON0 = 0x0<<2;<br /> //Tx DMA<br /> rIISCON|=IISCON_TXDMA;<br /> }<br />}<br />这是超级终端的结果:<br />File huanyingwav have been read!<br />File nian wav have been read!<br />huanying file tounbyte=44 nbyte=404814 sizeofbuff=1764000<br />nian tounbyte=44<br />nian file tounbyte=44 nbyte=156654 sizeofbuff=1764000<br />恳请指教! |
|