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.

C6455的MCBSP1+EDMA3传输问题

 我在做C6455芯片的MCBSP1的EDMA3传输,(传输位宽为8bit,同步模式A,在DLB模式下测试)遇到了一些问题:

      1、每次完成EDMA传输,产生中断之后,我又要重新对MCBSP1的寄存器进行初始化,才能进行下一次传输,而不是只配置EDMA寄存器就可以(选择的STATIC_DIS);

       2、每次完成传输,我发现接收总是多接收一个字节(第一个字节固定是0x00),因此我的接收长度比发送长度多一个字节才能接收完整;

       3、当我把MCBSP1的时钟分频设置成0(1分频)的时候,我发现接收的数据是不完整的,会出现一个字节重复接收两次,有的字节却丢失了(我需要166MHZ的时钟才能满足传输需求);

      这几个问题有人能给我提供帮助吗?非常感谢。

  • Z T 说:
    (我需要166MHZ的时钟才能满足传输需求)

    McBSP哪能达到这么高的时钟速度啊。

  • 我当时看的手册,cpu固定6分频到sysclk3,是166MHz,然后在mcbsp的SRGR'寄存器的CLKGDV写0,不就是可以配置到时钟166MHz吗?

  • 一个是配置,一个是电气特性能否达到。

    比如说CPU的频率你配置到10GHz也是可以配置的啊, 但是实际不能在这么高频率运行。所以你要配置CLKGDV使CLK的频率在100MHz以内(即cycle time >=10ns)

  •  问题解决了。我发现这个很有意思。ESR寄存器和MCBSP的使能寄存器(SPCR),只需要开一个,我开启通道使能之后,再配置了ESR寄存器,就总是第一个字节多收的。

  • ESR是event set register,这是用来手动触发,一般用做调试,或者内存到内存传输时用的。如果是用外设的事件触发,不应该设这个寄存器啊。