TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

Shine:

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

user4715584:

回复 Shine:

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

。。。

datacount = 0;

。。。

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

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

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

user4715584:

回复 Shine:

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

。。。

datacount = 0;

。。。

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

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

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

Shine:

回复 user4715584:

你可以做2个测试,

1. 如果把数保存到片上RAM,会有这个问题出现吗?2. 对RRDY位每次置1进行计数,看是否是接收的时候就收了2次?

user4715584:

回复 Shine:

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

user4715584:

回复 Shine:

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

 /*单数据相,接受数据长度为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部分的手册里做了详细说明:

赞(0)
未经允许不得转载:TI中文支持网 » DSP5509将AIC23采集的数据保存到外扩SDRAM
分享到: 更多 (0)