一段IIS音频播放的问题

[复制链接]
3495|12
 楼主| snowtx 发表于 2008-6-28 21:41 | 显示全部楼层 |阅读模式
这是我程序中用来播放wav文件的部分,和网上的许多程序都一样,程序运行很正常,但就是没有声音放出来,请教各位高手帮我分析一下,我用的是<br />arm&nbsp;44b0的板子,想播放44.1KHz,单声道的wav文件:<br /><br />void&nbsp;Play_SmallWave(U32&nbsp;addr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;*pWave;<br />&nbsp;&nbsp;&nbsp;&nbsp;U32&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;short&nbsp;*pSteroWave;<br />&nbsp;&nbsp;&nbsp;&nbsp;U32&nbsp;samplesize,start;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;rPLLCON&nbsp;=&nbsp;(0x69&nbsp;&lt&lt&nbsp;12)&nbsp;|&nbsp;(0x17&nbsp;&lt&lt&nbsp;4)&nbsp;|&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Init(45200000,115200);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pWave=(unsigned&nbsp;char&nbsp;*)addr;<br />&nbsp;&nbsp;&nbsp;&nbsp;pWave+=0x28;<br />&nbsp;&nbsp;&nbsp;&nbsp;samplesize=*(pWave+0)&nbsp;|&nbsp;*(pWave+1)&lt&lt8&nbsp;|&nbsp;*(pWave+2)&lt&lt16&nbsp;|&nbsp;*(pWave+3)&lt&lt24;<br />&nbsp;&nbsp;&nbsp;&nbsp;pWave+=4;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;start=(U32)(unsigned&nbsp;char&nbsp;*)pWave;<br />&nbsp;&nbsp;&nbsp;&nbsp;pSteroWave=(U16&nbsp;*)start;<br />&nbsp;&nbsp;&nbsp;&nbsp;samplesize=(samplesize&gt&gt1)&lt&lt1;<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;\r\nsample&nbsp;start:0x%x&quot;,pWave);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;\r\nsample&nbsp;size:%d\r\n&quot;,samplesize);<br />&nbsp;&nbsp;&nbsp;&nbsp;/******&nbsp;IIS&nbsp;Initialize&nbsp;******/<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISCON=0x02;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISMOD=0x89;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISPSR=0x33;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISFCON=0x200;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;\r\nNow&nbsp;play&nbsp;the&nbsp;wave&nbsp;file&nbsp;...&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;\r\nPush&nbsp;any&nbsp;key&nbsp;to&nbsp;exit!!!&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;/******&nbsp;IIS&nbsp;Tx&nbsp;Start&nbsp;******/<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISCON&nbsp;|=0x1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!Uart_GetKey())<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(IIS_FIFOREADY)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt8;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*rIISFIF&nbsp;=&nbsp;*pSteroWave++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp;((U32)pSteroWave-start)&nbsp;&gt&nbsp;samplesize&nbsp;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pSteroWave=(U16&nbsp;*)start;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WrUTXH0('#');<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/******&nbsp;IIS&nbsp;Tx&nbsp;Stop&nbsp;******/<br />&nbsp;&nbsp;&nbsp;&nbsp;rIISCON=0x0;&nbsp;&nbsp;&nbsp;&nbsp;//IIS&nbsp;stop<br />&nbsp;&nbsp;&nbsp;&nbsp;ChangePllValue(0x48,0x3,0x2);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Init(0,115200);<br />&nbsp;&nbsp;&nbsp;&nbsp;Uart_Printf(&quot;\r\nIIS&nbsp;IS&nbsp;OK!!!&quot;);<br />}<br />
阿南 发表于 2008-6-29 10:55 | 显示全部楼层

楼主可以用公版的44b0test程序测试一下以判断是否为硬件问题

然后再来查找这个程序是否有问题
 楼主| snowtx 发表于 2008-6-30 12:42 | 显示全部楼层

公版的44b0test

  
 楼主| snowtx 发表于 2008-6-30 12:45 | 显示全部楼层

关于公版的44b0test

我找了买开发板时送的光盘,试了里面的44b0test。但是没有关于IIS的测试啊,应该去哪里找可以测试IIS的程序呢??
 楼主| snowtx 发表于 2008-6-30 21:10 | 显示全部楼层

请问阿南

请问你有没有含IIS测试的公版的44b0test,如果有的话可不可以给我发一个,小弟在此先谢了.我的邮箱是:snowflower_tx@163.com
rockos 发表于 2008-7-1 00:25 | 显示全部楼层

你放的声音有多长? 哪个音频芯片?

那个叫什么4334的,&nbsp;要挺长时间的启动延时,&nbsp;如果你的wav只有一两秒,&nbsp;可能真听不到声音.<br /><br />另外,&nbsp;44b0的iis&nbsp;master模式要通过修改主频实现,&nbsp;玩玩可以,&nbsp;当真使用的话..慎之慎之~~~<br /><br />
 楼主| snowtx 发表于 2008-7-1 08:44 | 显示全部楼层

有点不明白

谢谢楼上的大哥,我播放的是windows.wav,也就是windows启动时的声音,时间长度应该够了吧,还有,您说的4334要挺长时间的启动延时是怎么回事?是说要等启动IIS(rIISCON&nbsp;|=0x1)后,等一段时间再往rIISFIF里传数据么?
rockos 发表于 2008-7-1 14:13 | 显示全部楼层

windows录音机的声音是16位的,你用二进制编辑器看一下你测试的是8位还是16位的声音。<br /><br />声音文件的格式网上大把。
 楼主| snowtx 发表于 2008-7-1 22:05 | 显示全部楼层

有问题

我这个wav文件是16位的,发现一个问题:<br />&nbsp;for(i=0;i&lt8;i++)<br />&nbsp;{<br />&nbsp;&nbsp;&nbsp;*rIISFIF&nbsp;=&nbsp;*pSteroWave++;<br />&nbsp;}<br />这个程序我查了一下,*rIISFIF&nbsp;的值一直是0,就是说根本没有数据通过IIS传出来,这是怎么回事?4334这个芯片用不用初始化啊?我可是真够菜鸟的,哈哈!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 楼主| snowtx 发表于 2008-7-1 22:19 | 显示全部楼层

还有

顺便说一下,*pSteroWave的值是正确的,但*rIISFIF&nbsp;=&nbsp;*pSteroWave++就是不成功
 楼主| snowtx 发表于 2008-7-3 13:28 | 显示全部楼层

顶一下

顶一下
 楼主| snowtx 发表于 2008-7-4 12:10 | 显示全部楼层

请大家帮助一下

今天我无意中发现了关于44B0和UDA1341搭配的程序,里面要配置很多东西。如:<br />save_A=rPCONA;//L3DATA<br />save_C=rPCONC;//IIS&nbsp;port<br />save_E=rPCONE;//CODEC&nbsp;clk&nbsp;GPE8<br />save_B=rPCONB;//L3CLK,L3MOD<br />save_PC=rPUPC;<br />save_PE=rPUPE;<br />rPCONC&nbsp;|=0xff;<br />rPUPC&nbsp;|=&nbsp;0xf;<br />rPCONE=(rPCONE&0xffff)+(2&lt&lt16);&nbsp;//PE:CODECLK<br />rNCACHBE0=&nbsp;((int)Buf&gt&gt12)&nbsp;+&nbsp;(&nbsp;(((int)Buf&gt&gt12)&nbsp;+0x100)&lt&lt16&nbsp;);<br />Uart_Printf(&quot;rNCACHBE0=0x%x\n&quot;,rNCACHBE0);<br />Init1341Play();<br /><br />请问cs4334要不要设置这些东西呢???
 楼主| snowtx 发表于 2008-7-4 21:28 | 显示全部楼层

问题找到了

问题找到了,要初始化端口,因为ARM得端口都是复用的,所以要先设置一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

66

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部