TI论坛
直播中

黎桂珍

7年用户 165经验值
私信 关注
[问答]

DSP6748EDMA如何传输数据至mcasp?

大家好,最近调试音频播放程序。主要是将蓝牙接收数据转发到Mcasp。
目前,采用八个缓存池装载数据每个缓存池有18K大小。由于工作时长以及时钟不同步问题,现在将缓存池数目增加到108个。
测试两个缓存池数目差异下的代码发现 :增加到108个缓存池后存在规律性的噪音。八个缓存池测试OK。
怀疑DDR2内存空间存在缓存池的重叠。特修改CMD文件将各个缓存池分配到相应的内存块中。测试发现依旧存在问题。
复查代码N多次,确认代码无问题。目前,无法定位问题出在哪,求各位大侠指点。
万分感谢!!!!!

回帖(6)

李波

2020-7-30 07:51:25
是不是McASP与外面的codec的时钟不同源的原因造成的?
                                                                         http://processors.wiki.ti.com/index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
举报

黎桂珍

2020-7-30 08:10:01
对,是由于时钟不同源造成,这也是我增大缓存区的意义。今天又测试了一遍,发现在缓存区增大到46个以上时,就出现噪音,固定的频率。所有缓存区都在DDR2中。
目前,还是无法定位问题。
 
举报

黎桂珍

2020-7-30 08:40:05
你好,目前是无法通过匹配时钟解决问题的,所以只能考虑使用代码方面解决。“CODEC的DAC的工作时钟与McASP口的发送时钟不同源,会产生累积误差,从而造成固定间隔的噪音。”这个噪音是收发速度不一致而导致的,我现在采用的是外部音频数据输入到MCbsp接收,然后由EDMA发送至mcasp。我是这样考虑的是增大缓存池数量以及大小都可解决问题。现有两点状态:1、增大缓存池大小,影响的是噪音的持续时间。2、增大缓存区个数目前是只能增大到48个,再大就会有噪音。
还有一点比较头疼就是在缓存区个数不产生噪音的情况下,增大和减小缓存区大小并不会产生噪声。
EDMA出发次数引起的么?在我的认知里,这个是不可能的事情。所以这个问题还是无法定位,或者是我哪里还有认识不到的地方。望指正。
举报

李波

2020-7-30 08:45:28
#1. 请首先确认音频的Codec,即DAC的时钟是不是与McASP输出端口的时钟来源于同一个源?
#2. 如果是,那么这个问题不是软件能解决的,这是硬件问题。因为音频是连续不断的,McASP按一个时钟在不断输出,DAC用另一个时钟在不断输换,之间不同源,产生向位差,累积起来产生错位,则产生短暂噪声。你也可以判断一下噪声的特点,是不是有规律的隔一会儿出现一下?
#3. 如果不是,再考虑软件方面的可能性。
                                                                         http://processors.wiki.ti.com/index.php/Main_Page
Think Over Before Asking.
http://www.catb.org/~esr/faqs/smart-questions.html#goal
举报

更多回帖

发帖
×
20
完善资料,
赚取积分