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.

用edma通过mcbsp发送数据,FIFO中的数据不搬移到DXR了,MCBSP一直在送同一个数据

用EDMA的pingpong通过MCBSP往外打数据,帧同步和位同步都是用外部时钟,在没有使用FIFO的时候会遇到MCBSP一直在发送DXR里面同个数据,通过查看SPCR寄存器看到出现了XTEMPTY的情况,但是FIFO里面还有50个words.

以为是EDMA control忙不过来,打开了发送FIFO,测试发现还是会现在发送欠载的情况,MCBSP一直在发送同一个数据,但是FIFO里面还有几十个数据呢,SPCR寄存器里面只有发送欠载这个情况,结果就是FIFO不给MCBSP的发送寄存器送数据了;

一开始判断是EDMA忙不过来,后来在TONY的指导下把FIFO开起来了,然后把CC的两个EVENT QUEUE都用起来了,还是一样的情况,个人认为不是EDMA这边出问题,因为FIFO里面还有很多数据,而且也没有产生EDMA的错误中断;

但是MCBSP里面没有XCERR的错误,也没有发送过载的错误,只有一个发送欠载,文档里面说当出现发送欠载的情况时,只要EDMA CONTROL给DXR送数据就好了,但是MCBSP BFIFO里面的几十个数据不往DXR送了;

请问这种情况该往哪个方向查?

  • bingliang chen 说:
    用EDMA的pingpong通过MCBSP往外�数据,帧同步和位同步都是用外部时钟,在没有使用FIFO的时候会遇到MCBSP一直在发送DXR里面同个数据,通过查看SPCR寄存器看到出现了XTEMPTY的情况,但是FIFO里面还有50个words.

    不是还没有用FIFO吗?为什么FIFO里还有50个Words?

    bingliang chen 说:
    以为是EDMA control忙不过来,打开了发送FIFO,测试发现还是会现在发送欠载的情况,MCBSP一直在发送同一个数据,但是FIFO里面还有几十个数据呢,SPCR寄存器里面只有发送欠载这个情况,结果就是FIFO不给MCBSP的发送寄存器送数据了;

    Buffer是放在DDR吗?系统中还有什么大数据任务?

    #1. 尝试通过寄存器MSTPRI0/1/2调整EDMA的优先级。

    #2. 修改DDR寄存器PBBPR的值。

  • buffer放在L2cache里面,系统跑在DDR里面,有大任务,语音的压缩解压缩,信道编解码。修改MSTPRI是不是为了修改EDMA_TC的优先级嘛?这个改过了,也把不同的channel分配到不同的TC块,没有起到效果。DDR的寄存器到时候修改看看,现在公司已经放假了,等年后再帮我指导一下。