大家好,最近调试音频播放程序。主要是将蓝牙接收数据转发到Mcasp。
目前,采用八个缓存池装载数据每个缓存池有18K大小。由于工作时长以及时钟不同步问题,现在将缓存池数目增加到108个。
测试两个缓存池数目差异下的代码发现 :增加到108个缓存池后存在规律性的噪音。八个缓存池测试OK。
怀疑DDR2内存空间存在缓存池的重叠。特修改CMD文件将各个缓存池分配到相应的内存块中。测试发现依旧存在问题。
复查代码N多次,确认代码无问题。目前,无法定位问题出在哪,求各位大侠指点。
万分感谢!!!!!
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.
大家好,最近调试音频播放程序。主要是将蓝牙接收数据转发到Mcasp。
目前,采用八个缓存池装载数据每个缓存池有18K大小。由于工作时长以及时钟不同步问题,现在将缓存池数目增加到108个。
测试两个缓存池数目差异下的代码发现 :增加到108个缓存池后存在规律性的噪音。八个缓存池测试OK。
怀疑DDR2内存空间存在缓存池的重叠。特修改CMD文件将各个缓存池分配到相应的内存块中。测试发现依旧存在问题。
复查代码N多次,确认代码无问题。目前,无法定位问题出在哪,求各位大侠指点。
万分感谢!!!!!
你好,目前是无法通过匹配时钟解决问题的,所以只能考虑使用代码方面解决。“CODEC的DAC的工作时钟与McASP口的发送时钟不同源,会产生累积误差,从而造成固定间隔的噪音。”这个噪音是收发速度不一致而导致的,我现在采用的是外部音频数据输入到MCbsp接收,然后由EDMA发送至mcasp。我是这样考虑的是增大缓存池数量以及大小都可解决问题。现有两点状态:1、增大缓存池大小,影响的是噪音的持续时间。2、增大缓存区个数目前是只能增大到48个,再大就会有噪音。
还有一点比较头疼就是在缓存区个数不产生噪音的情况下,增大和减小缓存区大小并不会产生噪声。
EDMA出发次数引起的么?在我的认知里,这个是不可能的事情。所以这个问题还是无法定位,或者是我哪里还有认识不到的地方。望指正。
细节说明:由于接受到的音频数据与MCASP发送端的时钟不同源,所以需要数据缓存机制来解决速度差异。这也是增加缓存区的大小和个数的意义。
由于实际是在edma发送的,所以,每次发送的数据为一个缓存池。而由于速度的差异发送和接收数据总有相遇的一刻。这也就是缓存区的空满状态。缓存池的大小又决定了噪音的长短。需正确的添加空满判断标志。
为了尽可能的在一次空满的状态之前,延长使用时间而又不延长噪音的情况下。所以需要扩大缓存区个数。
在缓存区个数添加的时候就出现了上边提到的问题。
现在就卡到这里不知下步该怎么走。望指点啊
万分感谢