这是我程序中用来播放wav文件的部分,和网上的许多程序都一样,程序运行很正常,但就是没有声音放出来,请教各位高手帮我分析一下,我用的是<br />arm 44b0的板子,想播放44.1KHz,单声道的wav文件:<br /><br />void Play_SmallWave(U32 addr)<br />{<br /> unsigned char *pWave;<br /> U32 i;<br /> unsigned short *pSteroWave;<br /> U32 samplesize,start;<br /><br /> rPLLCON = (0x69 << 12) | (0x17 << 4) | 0;<br /> Uart_Init(45200000,115200);<br /><br /> pWave=(unsigned char *)addr;<br /> pWave+=0x28;<br /> samplesize=*(pWave+0) | *(pWave+1)<<8 | *(pWave+2)<<16 | *(pWave+3)<<24;<br /> pWave+=4; <br /> start=(U32)(unsigned char *)pWave;<br /> pSteroWave=(U16 *)start;<br /> samplesize=(samplesize>>1)<<1;<br /> Uart_Printf("\r\nsample start:0x%x",pWave);<br /> Uart_Printf("\r\nsample size:%d\r\n",samplesize);<br /> /****** IIS Initialize ******/<br /> rIISCON=0x02; <br /> rIISMOD=0x89; <br /> rIISPSR=0x33; <br /> rIISFCON=0x200;<br /><br /> Uart_Printf("\r\nNow play the wave file ...");<br /> Uart_Printf("\r\nPush any key to exit!!!");<br /> /****** IIS Tx Start ******/<br /> rIISCON |=0x1;<br /> <br /> while(!Uart_GetKey())<br /> {<br /> if(IIS_FIFOREADY)<br /> {<br /> for(i=0;i<8;i++)<br /> {<br /> *rIISFIF = *pSteroWave++;<br /> }<br /> <br /> if( ((U32)pSteroWave-start) > samplesize )<br /> {<br /> pSteroWave=(U16 *)start;<br /> WrUTXH0('#');<br /> }<br /> }<br /> }<br /><br /> /****** IIS Tx Stop ******/<br /> rIISCON=0x0; //IIS stop<br /> ChangePllValue(0x48,0x3,0x2);<br /> Uart_Init(0,115200);<br /> Uart_Printf("\r\nIIS IS OK!!!");<br />}<br /> |
|