发新帖我要提问
123
返回列表
打印

55009a配合aic23b实现报警音播放和音频实时回放的代码

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
41
橙子公民 发表于 2014-5-7 00:17
事实上我没有connect也有这样的情况,而且跑其他程序也是一样

没连接都这样啊  奇怪了  
AIC23的程序还可以理解  别的也这样  不会吧

使用特权

评论回复
42
橙子公民| | 2014-5-30 16:22 | 只看该作者
问下codec程序其在play_mode==1时,rrdy始终为1,表示一直读入?按照时序来看,是无延迟的以最大帧频率模式发送?然后送入DSP的RAM,然后直接同样的模式输出数据?

使用特权

评论回复
43
以马内利3005|  楼主 | 2014-5-30 16:50 | 只看该作者
橙子公民 发表于 2014-5-30 16:22
问下codec程序其在play_mode==1时,rrdy始终为1,表示一直读入?按照时序来看,是无延迟的以最大帧频率模式 ...

rrdy始终为1,表示MCBSP的接收准备好了,可以进行数据接收了,但是有没有数据传进来是MCBSP的FSR帧同步信号决定的,同步信号变为高电平时,才有数据传入!
这里FSR信号由aic23b的LRCOUT提供,和其AD采样率有关!

使用特权

评论回复
44
橙子公民| | 2014-5-31 12:59 | 只看该作者
终于 出来了,mcbsp0,1,2应该用0不能用1,折腾死了

使用特权

评论回复
45
以马内利3005|  楼主 | 2014-6-1 23:47 | 只看该作者
橙子公民 发表于 2014-5-31 12:59
终于 出来了,mcbsp0,1,2应该用0不能用1,折腾死了

那是你硬件和软件的MCBSP接口没对应上~

使用特权

评论回复
46
gxliu08| | 2014-6-2 20:38 | 只看该作者
学习了,涨知识!

使用特权

评论回复
47
以马内利3005|  楼主 | 2014-6-3 10:55 | 只看该作者
gxliu08 发表于 2014-6-2 20:38
学习了,涨知识!

欢迎交流,互相学习~

使用特权

评论回复
48
zhangmangui| | 2014-6-7 11:19 | 只看该作者
好帖子就是受欢迎    大家多多向以马内利3005 学习
琢磨研究出来的东西分享出来也是对自己的一种巩固
同时也能受益别人

使用特权

评论回复
49
以马内利3005|  楼主 | 2014-6-8 20:58 | 只看该作者
zhangmangui 发表于 2014-6-7 11:19
好帖子就是受欢迎    大家多多向以马内利3005 学习
琢磨研究出来的东西分享出来也是对自己的一种巩固
同时 ...

谢谢斑竹抬举,我的荣幸!

使用特权

评论回复
50
Cvdog| | 2016-5-14 17:22 | 只看该作者
mark

使用特权

评论回复
51
yahu9527| | 2016-7-6 14:56 | 只看该作者
楼主,你好,最近我也在做codec这个实验,我按照你的方法,自己想直接实现音频实时回放,但是程序下载进去,始终都会一点击运行,就报错:C55xx: Trouble Reading Memory Block at 0x14187 on Page 0 of Length 0x501: Error 0x00000002/-1146 Error during: Memory,  Invalid data was scanned by the emulation controller. Verify the board setup to make sure the scan chain is properly defined. If the setup is correct, then RESET EMULATOR.  This will disconnect each  target from the emulator.  The targets should then be power cycled or hard reset followed by an emureset and reconnect to each target.
后来修改后,耳机里面听到的全是噪音,而且程序无法停止下来,只有关闭电源重启。
我的想法是,语音通过话筒,从AIC23的A/D采集进来,在经过MCBSP传给AIC23的D/A,最后送给耳机。我看了开发板的例程中是直接给aic23data赋值,通过循环,产生警报音的效果。例程代码如下:
/*回放音频*/
        while(TRUE)
        {
                while(!MCBSP_rrdy(hMcbsp)){};
                //aic23data = MCBSP_read16(hMcbsp);         
                aic23data = 5000;
                for(temp=30000;temp>0;temp-=100)
        {
                       for(i=0;i<2;i++)
                      {
                         aic23data = 5000;
                         MCBSP_write16(hMcbsp,aic23data);      
                         delay(temp);
                         aic23data = 0;
                         MCBSP_write16(hMcbsp,aic23data);        
                         delay(temp);
                        }
               }
               //MCBSP_write16(hMcbsp,aic23data);        
        };
我现在改的部分如下:
/*回放音频*/
        while(TRUE)
        {
                while(!MCBSP_rrdy(hMcbsp)){};               
                aic23data = MCBSP_read16(hMcbsp);
                //for(temp=300;temp>0;temp--);
                delay(3000);
                while(!MCBSP_xrdy(hMcbsp)){};
                MCBSP_write16(hMcbsp,aic23data);
        };   
我不知道是我理解有问题,还是代码没写对。望楼主和路过的牛人们给小弟指点一二。                                                                        

使用特权

评论回复
52
以马内利3005|  楼主 | 2017-7-12 23:28 | 只看该作者
yahu9527 发表于 2016-7-6 14:56
楼主,你好,最近我也在做codec这个实验,我按照你的方法,自己想直接实现音频实时回放,但是程序下载进去 ...

不好意思,好久没来了!
你先看一下我的代码吧。我的可以直接运行。

使用特权

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

本版积分规则