This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DSP5509将AIC23采集的数据保存到外扩SDRAM



大家好,这两天在将AIC23采集后的语音信号保存到外扩SDRAM中时,发现一个问题,加断点调试,数据保存正常;去掉断点,全速运行,发现同一个数据,保存了两次,看了很多相关资料,都没找到头绪,想问问,有人遇到过这种问题么,望大家多多指教。下面是部分代码和为图片。

  • 有没有单独对SDRAM读写测试过?

  • 单独测试过,读写是正常的。单独测试是这样做的:

    。。。

    datacount = 0;

    。。。

    /*向SDRAM中写入数据*/
    souraddr = (int *)0x40000;
    deminaddr = (int *)0x40030;
    while(souraddr<deminaddr)
    {
           *souraddr++ = datacount;
            datacount++ ;
    }

    现在datacount换成从MCBSP接收过来的数据,就不对了;加断点测试,能够对应;但是去掉断点,一个数据就会占2个。

    我在想有没有可能是从mcbsp接收过来的数据太快了导致的。

  • 单独测试过,读写是正常的。单独测试是这样做的:

    。。。

    datacount = 0;

    。。。

    /*向SDRAM中写入数据*/
    souraddr = (int *)0x40000;
    deminaddr = (int *)0x40030;
    while(souraddr<deminaddr)
    {
           *souraddr++ = datacount; 
            datacount++ ;
    }

    现在datacount换成从MCBSP接收过来的数据,就不对了;加断点测试,能够对应;但是去掉断点,一个数据就会占2个。

    我在想有没有可能是从mcbsp接收过来的数据太快了导致的。

  • 你可以做2个测试,

    1. 如果把数保存到片上RAM,会有这个问题出现吗?

    2. 对RRDY位每次置1进行计数,看是否是接收的时候就收了2次?

  • 嗯,我先做这2个测试,谢谢

  • 你好,做了测试,突然想起可能是这个地方的问题:

     /*单数据相,接受数据长度为16位,每相2个数据*/
     MCBSP_RCR1_RMK( MCBSP_RCR1_RFRLEN1_OF(1), MCBSP_RCR1_RWDLEN1_16BIT ),

    改成下面这一句后:  

    MCBSP_RCR1_RMK( MCBSP_RCR1_RFRLEN1_OF(0), MCBSP_RCR1_RWDLEN1_16BIT ),

    经过验证,在加断点调试和去掉断点两种情况下,数据是正常保存到外扩SDRAM中了。

    这点在mcbp部分的手册里做了详细说明: