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.

[参考译文] AM2434:AM2434 MCAN 问题

Guru**** 2398695 points
Other Parts Discussed in Thread: AM2434, SYSCONFIG, LP-AM243

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1179731/am2434-am2434-mcan-issue

器件型号:AM2434
Thread 中讨论的其他器件: SysConfigLP-AM243

你(们)好

我们将 MCAN 用作数据发送和接收、从而在 AM2434上实现 CANopen 协议。  

但我们遇到了问题:

当 从 器件获得同步对象0x80和 RxPDO1 0x202、RxPDO2 0x302、RxPDO3 0x402从主器件,发送时、从器件应通过发送 TxPDO1 0x182、TxPDO2 0x282 nad TxPDO3 0x382进行回复、

系统运行一段时间后、 从站无法发送 TxPDO1、TxPDO2、TxPDO3、但获取 MCAN 错误代码7。

接收和发送消息框配置如下:

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

    您好!

    附加的是一个 MCAN 测试项目。  您能帮助调试并找到问题的位置

    e2e.ti.com/.../s800d_2D00_MCAN_4B6DD58B_.zip

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

    您好!

    很高兴听到您能够在 AM243x 上通过 MCAN IP 实现 CANopen 协议、但很遗憾听到您正在遇到此问题。 我们在下面提供了一些后续问题、以帮助您找到解决方案。

    1. 您能否提供示例代码和相关的 SysConfig 文件、以便我们也可以在我们的末尾对此进行测试?
    2. 在外设(从机)无法响应主机(主机)之前、系统执行多长时间?
    3. MCAN 错误代码7是什么意思?

    感谢您提供这些文件!

    我们将查看提供的代码、看看我们是否可以在我们的一侧复制代码。

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

    您好、Fleenor、

    主机可以与从机通信、但在数百帧数据后停止、CAN 通信在 MCAN_PSR 寄存器中以7停止。

    您能否测试提供的代码? 应表示该误差。 谢谢!

    此致、

    Dean

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

    尊敬的 Dean:

    我正在努力获取 AM243x EVM、以便测试提供的代码。 您当前的实施方案是使用 TMDS243GPEVM 还是 LP-AM243?

    我将介绍下面的 PSR 寄存器以供参考。

    据此、值7表示自上次 CPU 读取 PSR 寄存器以来未检测到 CAN 总线事件。

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

    您好!

    我需要的核心问题是、在与 CANopen 协议栈进行数千次通信后、程序一直等待信号量发送。 您看到的 MCAN 错误代码是7或3。

    CANopen 协议堆栈正常运行一小段时间。 如下图所示:

    CANopen 协议栈运行很长时间、程序一直等待发送完成的信标。 如下图所示:

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

    您好、Fleenor、

    我们在  TMDS243GPEVM 中测试了代码、发生了相同的错误。

    此致、

    Dean

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

    嗨、Dean、

    感谢您在 GPEVM 上查看此信息。 用于捕获 CAN 总线上通信的软件工具是什么?

    我已购买 AM243xLP、并将尝试在今天向我们介绍该问题。

    此致、

    Zackary Fleenor

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

    嗨、Dean、

    我在尝试执行您的示例代码时遇到问题。

    是否可以使用 适用于 AM243x 的最新 MCU+SDK (版本08.04..00.17)重试?

    最新的 MCU+SDK 链接:

    MCU-PLUS-SDK-AM243X 软件开发套件(SDK)|德州仪器 TI.com

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

    我为 AM243x 使用 MCU+SDK (版本08.03。 00.18)。 您可以使用此版本进行编译。

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

    我无法访问此版本的 SDK。

    我们建议始终使用最新的 SW/SDK 版本。 这 使我们能够更好地协助调试过程、同时为未来的开发/发布阶段提供软件可追溯性/相关性跟踪。

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

    您好、Fleenor、

    我们可以在一侧构建和测试附加代码。 可以再试一次吗? 或者、我们可以设置会议进行讨论。  

    此致、

    Dean

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

    嗨、Dean、

    我们仍然请求使用最新的 MCU+SDK 进行 AM243x 测试(版本08.05.00.24)。 这是可行的吗?

    锁定 mcu_plus_sdk_am243x_08_05_00_24-windows-x64-installer.exe — 107106 K (TI.com)

    如果问题仍然存在、我们可以设置与合适专家的会议以进行额外调试。

    此致、

    Zackary Fleenor

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

    您好、Fleenor、

    我们使用最新的 SDK 在 TMDS243GPEVM 电路板上进行测试、并发生相同的错误。

    附加的是一个 MCAN 测试项目。

    此致、

    e2e.ti.com/.../AM2434-MCAN-Test.zip

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

    您好、 

    我检查 了附加的项目。

    [引用 userid="528154" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1179731/am2434-am2434-mcan-issue/4461746 #4461746"]AM2434 MCAN Test.zip[/quot]

    以下是我的观察结果-

    1、 如果接收到 CANID 0x80、则间隔为1ms (主机每1ms 发送1个数据包)、此问题是可重现的。

    2.  在接收到1个数据包后,am243x 将发送32个数据包,这需要200us 发送1个数据包,需要7.7ms 发送32个数据包。

    根本原因分析 -

    am243x 接收到的 Rx-ID 小于 am243x 发送的 Tx-ID。 由于同步问题、MSG 会同时接收和传输。 根据 CAN 协议、较小的 pktID 优先于总线、因此 CAN-Tx 由于 Rx 优先于总线而停止。 Rx 成功后、Tx 无法恢复、因为数据包最初未发送、并且会卡在 Semaphore_pend 上。

    推荐的解决方案-

    1. 修复系统中的同步问题。 确保在接收数据时不发送消息。 如果收到 pktt、要重新发送数据包、请从第一个包开始。

    2. 如果在软件中很难做到这一点、则使用    MCAN_CCCR 中的禁用自动重发送。  要在软件中执行相同操作、请在  App_mcanConfig 中添加以下代码。

    启用此功能后、如果发送失败、数据包将再次重新传输、这符合您的用例、但在传输过程中可能会看到一些数据包丢失。

    此致、
    Aakash

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

    您好!

    我们在共享的应用程序中发现了一个问题、导致我们认为存在数据包丢失。

    我们已将 AM2434 MCAN Test.zip 的应用修复 为 https://tidrive.ext.ti.com/u/jkttMLvLbTGcS209/266cfaaf-f39c-4d43-9c57-6579e9af4ac1?l 、并进行了同样的测试。

    1.对100、000个数据包进行了同样的测试(在5ms 周期发送)-通过

    /resized-image/__size/640x480/__key/communityserver-discussions-components-files/908/5ms.png

    2.对100、000个数据包进行了相同的测试(在1ms 周期发送)- 通过

    /resized-image/__size/640x480/__key/communityserver-discussions-components-files/908/8540.1ms.png

    这也测试了100、000次调用时1ms 和10ms 的 ISR 速度(甚至不丢弃单个数据包)。

    作为纠正措施、我们还将在 SDK 中的 CAN 示例中启用自动重传。

    此致、
    Aakash

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

    好,谢谢 Aakash! 很抱歉、tidrive 链接 无效、您能否更新它? 谢谢! 我们可以再次进行测试。

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

    您好!

    pf 更新的链接- https://tidrive.ext.ti.com/u/4E40v9XONLzyTjSy/266cfaaf-f39c-4d43-9c57-6579e9af4ac1?l。 链接将于 2023年2月10日到期。

    请告诉我这是否适合您。

    此致、
    Aakash