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.

[参考译文] TMS320F28388D:使用 MSGRAM 将 CM 与 CPU1进行通信

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1159270/tms320f28388d-communication-cm-to-cpu1-using-msgram

器件型号:TMS320F28388D
主题中讨论的其他器件:TMDXIDDK379DC2000WARE

您好!

我尝试使用 MSGRAM 将数据从 CPU1传输到 CM、并将数据从 CM 传输到 CPU1。 我的基本项目是 C2000 Ware MotorControl SDK 中的 tmdxiddk379d。

我想在不使用 IPC 函数或 IPC 中断的情况下传输结构数据。 问题是、例如 CPU1结构位于位置0x39208、我 在 CM 中找到0x20080410的变量、但预期是这样

0x20080208。 如果我更改 CPU1中的地址、我始终可以找到位于我预期地址的两倍的结构。 问题是什么? CPU1和 CM 如何组织 MSGRAM、二者都是用字组织的?

提前感谢您!

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

    您好、Marcus、
    C28x 存储器和外设是16位可寻址的、而 ARM 内核是8位可寻址的、因此您会看到差异。
    您还可以在 C28x 和 CM 的存储器映射中看到这一点、因为大小 分别以16位字和8位字节的倍数给出。
    IPC 通信的 driverlib 函数负责处理此问题。

    此致、
    Andy

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

    Markus、

    AndyP 回答正确。

    此致、

    曼诺伊

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

    好的、非常感谢您的回答。 我本来期待的是这样的、但现在我确信这就是问题所在。

    今天、我再次检查了 IPC_sendCommand/IPC_sendResponse 并了解了差异。 但我仍然不明白 C2000Ware_MotorControl_SDK_4_00_00_00\solutions\tmdxiddk379d\f2838x 中的示例是如何处理数据 的、因为没有使用这些 IPC 函数。 您能解释一下这里有什么区别吗?

    谢谢!

    Markus

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

    Marcus、

    据我所见、在上述项目中、使用了 driverlib 中的 IPC 函数。
     addrCorrEnable 参数和 IPC_ADDR_OFFSET_Corr 宏对地址执行魔术技巧。

    此致、
    Andy

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

    感谢你的帮助。  您的帮助解决了我的问题。