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.

[参考译文] TMS320F28386D:CAN 与 CM 内核通信问题

Guru**** 2455560 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1496252/tms320f28386d-can-communication-problems-with-cm-core

部件号:TMS320F28386D

工具/软件:

您好、

我正在尝试使用内核 CM 处理 DCAN_A。我使用 CPU1测试 CAN 硬件、它运行正常。

我将示例 can_config_C28x 用于 CPU01、can_ex1_polling 用于 CM。

我将 CAN GPIO 更改为 GPIO62和 GPIO63:

结果是、使用环回外部测试模式时可以正常工作。

但是、当我删除测试模式时、它可以接收消息;但为了进行传输、它无法传输最后一个错误、这里注册了:

发送消息之前:

发送消息后:

最后一个错误是 ACK 错误、但我可以将此 DCAN_A 与 CPU01配合使用。 所以我认为不是硬件问题。

我正在通过 PCAN 发送和接收消息。 CM 发送后的状态为错误被动。

有什么想法吗?

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

    尊敬的 Antonio:

    DCAN 模块可以分配给 CPU1/2或 CM、如果分配给内核、则只有该内核可以配置 CAN 模块。  这是通过  从 CPU1调用的 API sysctl_allocateSharedPeripheral()完成的。   您能否确保在 CM 配置 DCAN_A 之前首先执行此 API?

    此致、

    Joseph

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

    感谢您的答复 Joseph。

    是的。 我将使用这两个示例:CPU01中的 can_config_C28x 和 cpu02中的 can_ex1_polling。 那么我只做了 CAN_RX 和 CAN_TX GPIO。

    我确认在 CM 启动之前从 CPU1调用 sysctl_allocateSharedPeripheral()。

    此外、我可以接收到发送到 CM 的消息、因此配置必须正常。 问题在于发送消息中的 ACK。

    此致!

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

    尊敬的 Antonio:

    感谢您的澄清。  当 F28386D 发送数据时、PCAN 是否能够接收数据?  如果 PCAN 能够、 您将需要禁用仅监听模式、以便 PCAN 可以在接收后发回 ACK 位。  我假设您还将 GPIO62/63连接到收发器。

    谢谢。

    Joseph

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

    您好、Joseph

    是、收发器连接到 GPIO62和 GPIO63。 当 F28386D 发送时、PCAN 未收到任何数据。  

    当禁用仅监听模式时、PCAN 会检测总线中的无源错误。  

    启用仅监听模式时、PCAN 总线正常、但未接收到消息。

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

    尊敬的 Antonio:

    您能否告诉我您在 CPU1上运行的 CAN 示例测试用例、其中您能够证明可以在 GPIO62作为 RX、GPIO63作为 TX 的情况下接收和发送消息?  只需首先尝试确定在 CM 上运行示例 can_ex1_polling 时 RX、TX 和 CAN 总线没有问题。 顺便说一下、您是使用定制 F28386D 电路板还是使用 controlCARD?  只是想看看 GPIO63如何连接到您的硬件上。

    谢谢、

    Joseph

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

    您好、Joseph:

    我在 CPU1上运行自己的应用程序,可以正常工作(我还检查了 CPU2 ,它也可以正常工作)。 我尝试将 CAN 通信移至 CM 内核、但 CAN 传输消息失败。 然后、我尝试使用 C2000 (CM 上的 can_ex1_Polling 和 CPU1上的 can_config_C28x)示例、但同样失败(我在 CAN_config_C28x 示例中只将 GPIO 更改为62和63)。 这个带有外部环回仿真的示例可以正常工作。

    我将使用自定义硬件、GPIO62和 GPIO 63连接到收发器

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

    尊敬的 Antonio:

    您能否检查 CM 时钟是否已在125MHz 下配置并运行?  如果要运行示例、则应在 Device_init ()函数中设置此参数。

    此致、

    Joseph