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.

C6748的mcbsp和mcasp总线的同步问题?

请问一下TI的工程师:

        我遇到了这样的一个问题,我的项目用到了mcbsp和mcasp两个总线,分别aspIn、aspOut、bspIn、bspOut、4个音频信号。4个信号都是通过EDMA方式进行数据的搬运。现在我发现4路信号的同步有些问题。我通过内部分频把总线的频率都定义到48KHz。然后设置edma是每48个(也就是1ms)搬运一次数据。按照我的设想应该是4个音频信号都是同步的,数据流不会有大的问题。但是经过一段时间的测试发现,ASP总线一直比BSP的总线快一点,而且asp、bsp内部的发送和接收的速率也有差别。大概每100帧就会差1帧。

        由于上面说的这种不同步现象会导致我后期算法处理起来非常麻烦,所以请问一下ti的工程师们,这个不同步可能是什么原因造成的。

  • 再补充一下这个问题的描述,我在edma中断里面有一个数据从dma到缓存buf的操作,不过这个搬运过程只有48个点的数据耗时很短,应该不影响整个时序。

  • yu tao3 说:
    现在我发现4路信号的同步有些问题。我通过内部分频把总线的频率都定义到48KHz

    都是做主?往外提供位时钟和帧同步?

    yu tao3 说:
    然后设置edma是每48个(也就是1ms)搬运一次数据。

    都用到了FIFO?是指FIFO阀值是48?

  • 唐工:

           没有用到fifo,我是48K采样,然后a_cnt设置的是48,也就是差不多1ms会有一组数据送过来。

  •        mcbsp总线是做主的,提供帧时钟和位时钟给一个小单片机(这个小单片机做usb audio的驱动)。我们用示波器量过时钟没有问题。在不卡顿的时候音质也没有问题录音播放都很流畅。

  • yu tao3 说:
    我是48K采样,然后a_cnt设置的是48,

    a_cnt=48? 不对吧。如果说是b_cnt还有可能。不用FIFO,这EDMA事件有点频繁啊。出问题时,是不是EDMA事件来不及造成的(有没有underrun, overflow事件),而不是同步问题。

    用示波器量MCBSP与MCASP的同步信号是对齐的吗?

  • 我查了emr寄存器是没有中断事件出错的记录的,我们把接收一组的时间改到960还是会出现卡顿。从这个队列寄存器看thrxd一直是0也没有出现。

    我们4个通道的计数器大概是这个分布
    mcasp tx  
    mcasp rx
    mcbsp tx
    mcbsp rx的计数器
    mcbsp的指针会慢慢落后到和asp的计数器差几千帧,
    唐工你提到的mcbsp和mcasp的同步信号问题,我的理解是即使不对齐但是一直保持一个或者几个相位也是没问题的吧,只要间隔一样那么就是一帧的时间长度是一样的。我这里一会再去测试。