打印

一段IIS音频播放的问题

[复制链接]
2203|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
snowtx|  楼主 | 2008-6-28 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我程序中用来播放wav文件的部分,和网上的许多程序都一样,程序运行很正常,但就是没有声音放出来,请教各位高手帮我分析一下,我用的是
arm 44b0的板子,想播放44.1KHz,单声道的wav文件:

void Play_SmallWave(U32 addr)
{
    unsigned char *pWave;
    U32 i;
    unsigned short *pSteroWave;
    U32 samplesize,start;

    rPLLCON = (0x69 << 12) | (0x17 << 4) | 0;
    Uart_Init(45200000,115200);

    pWave=(unsigned char *)addr;
    pWave+=0x28;
    samplesize=*(pWave+0) | *(pWave+1)<<8 | *(pWave+2)<<16 | *(pWave+3)<<24;
    pWave+=4;    
    start=(U32)(unsigned char *)pWave;
    pSteroWave=(U16 *)start;
    samplesize=(samplesize>>1)<<1;
    Uart_Printf("\r\nsample start:0x%x",pWave);
    Uart_Printf("\r\nsample size:%d\r\n",samplesize);
    /****** IIS Initialize ******/
    rIISCON=0x02;    
    rIISMOD=0x89;    
    rIISPSR=0x33;    
    rIISFCON=0x200;

    Uart_Printf("\r\nNow play the wave file ...");
    Uart_Printf("\r\nPush any key to exit!!!");
    /****** IIS Tx Start ******/
    rIISCON |=0x1;
    
    while(!Uart_GetKey())
    {
        if(IIS_FIFOREADY)
        {
            for(i=0;i<8;i++)
            {
              *rIISFIF = *pSteroWave++;
            }
                
            if( ((U32)pSteroWave-start) > samplesize )
            {
              pSteroWave=(U16 *)start;
              WrUTXH0('#');
            }
        }
    }

    /****** IIS Tx Stop ******/
    rIISCON=0x0;    //IIS stop
    ChangePllValue(0x48,0x3,0x2);
    Uart_Init(0,115200);
    Uart_Printf("\r\nIIS IS OK!!!");
}

相关帖子

沙发
阿南| | 2008-6-29 10:55 | 只看该作者

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

然后再来查找这个程序是否有问题

使用特权

评论回复
板凳
snowtx|  楼主 | 2008-6-30 12:42 | 只看该作者

公版的44b0test

使用特权

评论回复
地板
snowtx|  楼主 | 2008-6-30 12:45 | 只看该作者

关于公版的44b0test

我找了买开发板时送的光盘,试了里面的44b0test。但是没有关于IIS的测试啊,应该去哪里找可以测试IIS的程序呢??

使用特权

评论回复
5
snowtx|  楼主 | 2008-6-30 21:10 | 只看该作者

请问阿南

请问你有没有含IIS测试的公版的44b0test,如果有的话可不可以给我发一个,小弟在此先谢了.我的邮箱是:snowflower_tx@163.com

使用特权

评论回复
6
rockos| | 2008-7-1 00:25 | 只看该作者

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

那个叫什么4334的, 要挺长时间的启动延时, 如果你的wav只有一两秒, 可能真听不到声音.

另外, 44b0的iis master模式要通过修改主频实现, 玩玩可以, 当真使用的话..慎之慎之~~~

使用特权

评论回复
7
snowtx|  楼主 | 2008-7-1 08:44 | 只看该作者

有点不明白

谢谢楼上的大哥,我播放的是windows.wav,也就是windows启动时的声音,时间长度应该够了吧,还有,您说的4334要挺长时间的启动延时是怎么回事?是说要等启动IIS(rIISCON |=0x1)后,等一段时间再往rIISFIF里传数据么?

使用特权

评论回复
8
rockos| | 2008-7-1 14:13 | 只看该作者

windows录音机的声音是16位的,你用二进制编辑器看一下你测试的是8位还是16位的声音。

声音文件的格式网上大把。

使用特权

评论回复
9
snowtx|  楼主 | 2008-7-1 22:05 | 只看该作者

有问题

我这个wav文件是16位的,发现一个问题:
 for(i=0;i<8;i++)
 {
   *rIISFIF = *pSteroWave++;
 }
这个程序我查了一下,*rIISFIF 的值一直是0,就是说根本没有数据通过IIS传出来,这是怎么回事?4334这个芯片用不用初始化啊?我可是真够菜鸟的,哈哈!
                
     

使用特权

评论回复
10
snowtx|  楼主 | 2008-7-1 22:19 | 只看该作者

还有

顺便说一下,*pSteroWave的值是正确的,但*rIISFIF = *pSteroWave++就是不成功

使用特权

评论回复
11
snowtx|  楼主 | 2008-7-3 13:28 | 只看该作者

顶一下

顶一下

使用特权

评论回复
12
snowtx|  楼主 | 2008-7-4 12:10 | 只看该作者

请大家帮助一下

今天我无意中发现了关于44B0和UDA1341搭配的程序,里面要配置很多东西。如:
save_A=rPCONA;//L3DATA
save_C=rPCONC;//IIS port
save_E=rPCONE;//CODEC clk GPE8
save_B=rPCONB;//L3CLK,L3MOD
save_PC=rPUPC;
save_PE=rPUPE;
rPCONC |=0xff;
rPUPC |= 0xf;
rPCONE=(rPCONE&0xffff)+(2<<16); //PE:CODECLK
rNCACHBE0= ((int)Buf>>12) + ( (((int)Buf>>12) +0x100)<<16 );
Uart_Printf("rNCACHBE0=0x%x\n",rNCACHBE0);
Init1341Play();

请问cs4334要不要设置这些东西呢???

使用特权

评论回复
13
snowtx|  楼主 | 2008-7-4 21:28 | 只看该作者

问题找到了

问题找到了,要初始化端口,因为ARM得端口都是复用的,所以要先设置一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

66

帖子

0

粉丝