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.

[参考译文] TMS320F28377D:McBSP 处于多通道模式

Guru**** 2027820 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1448237/tms320f28377d-mcbsp-in-multichannel-mode

器件型号:TMS320F28377D

工具与软件:

你(们)好

我在多通道模式下使用 McBSP 以连接两个 F28377D 电路板。 到目前为止、我使用了16个通道(16位字)、没有任何同步问题或数据移位开关任何板。 数据传输由两个 DMA 通道管理、一个用于接收、另一个用于发送。

现在我需要使用32个通道 、使用(X/R) CERA END (X/R) CERB、但在这种情况下、可以打开/关闭主板(生成帧同步和时钟的主板)、从器件接收到的数据可以移动16个位置、这由电流块指示器进行确认。

可以纠正此行为吗?

此致 Luca

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Luca

    很抱歉、我目前正在出差、没有任何硬件来尝试重现此问题。

    我想从您的帖子中可以看出、DMA 不是行为中的一个因素、您能否确认更改数据顺序的 DMA 没有问题、如果您通读 CPU、情况仍然不正确?

    此致!

    Matthew

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthew

    我不知道 DMA 是否有一些问题。 我的感觉是、这个问题是由使用32通道有两个块所必需的因素引起的、并且这个问题取决于主器件停止传输时块是否处于活动状态。 主站发送传输数据包、其中第一个字(通道0)为0xAAAA、最后一个字 (通道31)为0x5555。 打开/关闭主器件、从器件可以正确接收它或移位。 移位时、我可以在通道16中看到0xAAAA、在通道15中看到0x5555、这与块被交换的情况类似。 事实上在 DMA 事务结束中断中读取当前 Rx 块、我会在没有发生移位时找到0、否则找到1。 继续打开/关闭主器件有可能获取正确或错误的数据。

    此致

    Luca.

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthew

    但是、如果我尝试通过 CPU 读取、我如何知道实际的信道编号?

    此致

    Luca.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Luca

    如果在传输过程中循环供电、接收器将等待您遇到的下一个时钟/消息。  我认为接收器恢复的唯一方法是 主器件发送一条起始消息、指示连接是在上电时建立的第一个通信。  我们需要在接收器侧查找这条特殊消息、这将让我们知道丢弃已终止消息的另一半。

    我无法在硬件中让接收器检测到主设备已离线、因此希望上述想法适用于您的系统。

    此致!

    Matthew   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Matthew

    感谢您的建议、我将尝试此解决方案、或者如果不是32字 x 16位、我可以使用16字 x 32位。 对于只有16个字的帧、我没有看到这个问题。

    此致

    Luca.