微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 关于使用AIC23采集音频后存储再播放的问题

关于使用AIC23采集音频后存储再播放的问题

时间:10-02 整理:3721RD 点击:

我用C5509A和AIC23进行音频采集实验 初始化是DSP通过IIC总线将配置命令发送给AIC23  我采样率设置的是44.1K 

具体音频采集存储和播放的代码如下   请高手工程师帮忙解答下吧 为什么输出来的没有声音全是噪声 是不是采样点数的问题 不太明白 万分感谢!


while(1)
{
for(i=0;i<8000;i++)
{
while (!ReadMask(pMCBSP0 -> spcr2, SPCR2_XRDY)); // 等待McBSP0准备好

input[i]=Read(pMCBSP0->ddr2); // 读取左右声道的数据
input[i]=Read(pMCBSP0->ddr1); // 因为耳机输入左右声道相同,所以读两次即可
// far_poke(lpWork++,nWork); // 保存到缓冲区

}
///
if(8000==i) i=0;
for(j=0;j<8000;j++)
{
output[j]=input[i];
Write(pMCBSP0->dxr2,output[j]); // 送数据到McBSP0
Write(pMCBSP0->dxr1,output[j]);
} // 声音输出由AIC23完成

Hi, 李阳,

 

可以做个简单的实验将DIN和DOUT短接,看DAC输出是否正常,来确认下AIC23 DAC部分的设置是否有问题。如果设置没有问题,那么原因应该是在DSP端了。

 

Best regards,

Barry Xiao

AD和DA应该没问题 因为我用例程跑 声音很清楚 也就是采集一个输出一个数据就没问题 但是我想储存一部分数据再输出 就有问题了

如果CODEC设置没有问题,而是数据存储的问题,建议向DSP论坛咨询下。

恩 我感觉是 那谢谢了

你好:

          你看下你的保存的数据的格式与你采集的数据的格式是否一致。比如你采用的是CHAR型的,但是保存成Float或者Int那么就会出问题

您好,

       我储存和输出的数据全是int的 实时采集的话声音没问题 而且保存的是int数据 不知道为啥我这个就不行 我感觉是点数太少的缘故 但是我循环了

你好:

           你的保存的中断时间和你的采样率一致吗?还有就是你加大你保存的数据试下。

            你可以用正弦波作试验,采集进去后用数字的方式看是不是正弦波的信号,确保采集的数据没错。。

谢谢您的回答! 

我想问下保存的中断时间是指的储存8000个点的时间吗  我设置采样率是8K 然后循环采样8000储存在数组中 然后再循环从数组中输出  就严重失真了

你好:

          你不是按照中断触发一次保存一次数据的吗?

不是的 直接在程序中循环保存了 

          while (!ReadMask(pMCBSP0 -> spcr2, SPCR2_XRDY)); // 等待McBSP0准备好     

 for(i=0;i<40000;i++)          

 {        input[i]=Read(pMCBSP0->ddr2); // 送数据到McBSP0// 读取左右声道的数据          

          input[i]=Read(pMCBSP0->ddr1);        // 因为耳机输入左右声道相同,所以读两次即可                             

  }       

   for(j=0;j<40000;j++)         

 {  output[j]=input[j];

     Write(pMCBSP0->dxr2,output[j]); // 送数据到McBSP0            

      Write(pMCBSP0->dxr1,output[j]);  

 } 

没有想到用中断 想当然的以为直接这样子就行呢?  这样不可以吗

 

你好:

         现在的问题就是你保存数据是按照DSP的主频在保存,可能频率会有几十M,但是你的采样率只有8K,那么你想下你播放出来的东西会是什么呢?也就是你保存的8000个数据可能是一样的。所以建议你用CCS看一下保存的数据,CCS有个功能可以看的。

嗯   您说的太对了 的确是这样子 我用watch window看过  的确是好多数据都是一样的 变化  那我要是在应该怎么做呢?  在中断中存储吗 还是在中断中采集和存储啊?  谢谢了

你好:

       你可以在中断触发的情况下采集加存储,由于主频比较快,这个操作时间很充足。

您好,

     那我先试试啦 谢谢您的回复

你好:

             你可以先试下,我之前用C6000做的没有问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top