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.

[参考译文] LP-AM243:EnDat 重新启动/重新连接偶尔失败

Guru**** 2964870 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1648242/lp-am243-endat-restart-reconnect-fails-sporadically

器件型号: LP-AM243
主题: SysConfig 中讨论的其他器件

 
尊敬的专家:
 
我有与原始文章中所述相同的应用要求:系统应支持一个或两个连接的 EnDat 编码器、并且应该只能检测和使用实际存在编码器的通道。
 
我正在尝试解决原始文章中建议的问题:使用不同的编码器配置重新启动完整的 EnDat 固件。
我目前正在调查停止和重新启动 EnDat 诊断示例后的重新连接行为。
 
我的测试是:
 
1.启动 EnDat 诊断示例。
2.成功初始化和检测编码器。
3.停止所有 PRU。
4.再次运行相同的 EnDat 初始化序列。
 
第一次初始化运行可靠。 但是、第二次初始化仅在大约 50%的尝试中成功。
 
我使用示波器检查了原始 EnDat 信号。 在失败的情况下、我要么看到根本没有 PRU 输出信号、要么 EnDat 时钟在 endat_out_en 上以短脉冲启动、然后 PRU 似乎卡住。
 
是否有用于停止、复位、重新加载和重新启动 EnDat PRU 固件以确保重新连接可靠的建议序列?
 
我还尝试手动清除我可以看到正在使用的所有内存
- PRU RAM
-在 endat 驱动程序内的静态 endat priv 结构
-端部接收缓冲区放置在本地 TCM 中
-清除了 PRU 状态寄存器中的 COUNTER_ENABLE 标志,该标志似乎不会被 ICSSG_resetCore () 重新设置
-在第一次和第二次 startCore 调用之前,我甚至做了一个完整的 ICSSG 内存转储,我看不到任何有意义的差异
 
也许您可以提供更多见解或尝试重新创建示例?
 
我认为、对于可靠的 EnDat 主器件、它至关重要的是能够从连接错误中恢复、在这种情况下、这种情况似乎需要完全重新启动 PRU 固件。 因此、我认为应该添加这一项、作为已测试的功能。
 
此致、
Stefan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有用于停止、重置、重新加载和重新启动 EnDat PRU 固件的建议序列、以便重新连接是可靠的?

    我会检查一下、然后返回给您。

    BR、

    Achala Ram

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

    您好、Stefan:

    您使用的是哪个电机控制 SDK 版本?

    [引述 userid=“648235“ url=“~/support/processors-group/processors/f/processors-forum/1648242/lp-am243-endat-restart-reconnect-fails-sporadically
    1.启动 EnDat 诊断示例。
    2.成功初始化和检测编码器。
    3.停止所有 PRU。
    4.再次运行相同的 EnDat 初始化序列。
    [/报价]

    您是否能够测试步骤 2? 您是否能够成功检测到已连接/已断开的信道?

    在执行步骤 4 之前、您还需要更新 EnDat 配置参数、例如通道掩码和主内核、这些参数根据 SysConfig 中的选定通道进行配置。

    BR、

    Achala Ram

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

    尊敬的 Achala:

    我使用的是 电机控制 SDK 2025_00_06。

    我要使用的确切示例是 am243 Launchpad + BoosterPack 上的“endat_diagnostic_multi_channel_load_share_am243x-lp_r5fss0-0_freertos_ti-arm-lang“。

    目前、我还没有涉及编码器检测/通道配置更新部分。

    我只是尝试在相同的编码器配置下重新启动 EnDat 连接过程:通道 0 和通道 2 已启用。

    我尝试了对示例进行最简单的修改:复制并粘贴 endat_diagnostic.c 中的完整初始化步骤 2 和 3

    但是、第二次初始化失败。 查看示波器上的编码器信号、PRU 没有在第二个初始化过程中发送任何信号。

    我已将修改后的 endat_diagnostic.c 以及串行终端日志附在其中。 它显示第一次成功初始化和第二次失败初始化:
    e2e.ti.com/.../modified_5F00_endat_5F00_diagnostic.zip

    我还尝试了仅复制 3。 第步(加载 PRU 固件)、但这也不起作用。

    此致、

    Stefan

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

    e2e.ti.com/.../7506.endat_5F00_diagnostic.c

     e2e.ti.com/.../endat_5F00_api.he2e.ti.com/.../endat_5F00_drv.c

    您好、Stefan:

    请查找附加的文件。 通过这些更改、我能够在初始化阶段检测到通道故障、并继续运行连接(部分)通道。

    这些更改包括:

    1. 在初始化步骤中使用更新后的通道掩码逐个启用 PRU 内核。
    2. 所有内核的初始化完成后、它会更新 attrs 连接通道的参数和通道掩码。 对于 attrs  通道掩码和启用的通道等参数、我已在 EnDAT 驱动程序中添加了一个名为 endat_update_channel_mask的新功能。

    您将需要使用这些更改来更新驱动程序文件、并重新构建库以构建修改后的 EnDAT 加载共享示例。

    此致、
    Achala Ram

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

    尊敬的 Achala:

    非常感谢您深入探讨这个问题。

    我应用了您的更改、并在通道 0 和 2 上连接了两个编码器的 LaunchPad 上对其进行了测试。

    但是、我看到了与第一次测试类似的问题:在大约 50%的测试中仅检测到通道 2 上的第二个编码器。

    虽然我没有更改硬件设置的任何内容、但每次重新启动时、我都会看到以下两种情况之一:

    1.成功检测到两个编码器: logfile_success.txt

    2.只检测到第一个编码器,应用程序只继续使用一个编码器:logfile_fail.txt

    您能否在您的设置中确认这种不一致的行为?

    此致、
    Stefan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但是、我看到的问题与我的第一次测试类似:通道 2 上的第二个编码器仅在大约 50%的所有测试中检测到。

    您好、Stefan:

    我能否详细了解这一点? 50%测试用例的场景是:当两个编码器都已连接或一个已断开连接时? 此外、它是否无法继续运行所连接的信道或无法正确检测故障信道?

    BR、

    Achala Ram

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

    尊敬的 Achala:

    在测试场景中、我将两个编码器连接到通道 0 和 2。

    可以在我的中看到预期的行为 logfile_success.txt:两个编码器都被检测到并且工作正常。

    在零星故障情况下 (logfile_fail.txt)、只能成功检测到第一个编码器。 第二个编码器 endat_wait_initialization() 读数超时。 由于您的修改、该示例随后仅在通道 0 上继续运行第一个编码器。

    请注意、这似乎不是硬件问题。 使用原始示例时、每次与两个编码器的连接都能可靠地工作。

    这也与我之前使用相同硬件设置并连接两个编码器进行的测试相匹配。 我首先像标准示例一样初始化两个编码器、然后尝试重新启动完整的连接过程。 重新启动也偶尔失败。

    似乎在 PRU 上的任何 EnDat 固件启动后、后续启动可能偶尔出现故障。

    此致、
    Stefan

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

    您好、Stefan:

    导致此问题的固件端出现问题。 我将很快修复并与您分享更新的固件。

    BR、

    Achala Ram

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

    尊敬的 Achala:

    这是一个好消息,谢谢你的努力!

    Br、Stefan

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

    您好、Stefan:

    使用随附的更新固件、让我们了解您的测试结果和反馈。

    注意:在构建应用程序之前构建所有固件工程。

    SDK 版本:电机控制 2025  

    BR、

    Achala Ram

    e2e.ti.com/.../8156.endat_5F00_main.asm

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

    尊敬的 Achala:

    很抱歉回复延迟;我在度假。

    我会尽快进行测试、并告知您测试结果。

    Br、Stefan

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

    尊敬的 Achala:

    我测试了更新的固件、一切都正常运行!

    我能够成功地验证这两种方法:
    a) 您建议的通过顺序初始化检测活动通道的解决方案
    b) 重新启动和重新初始化整个 PRU 片的原始方法

    此修复是否会集成在下一个 SDK 版本中?

    Br、Stefan

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

    谢谢 Stefan!

    [引述 userid=“648235“ url=“~/support/processors-group/processors/f/processors-forum/1648242/lp-am243-endat-restart-reconnect-fails-sporadically/6398035

    此修复是否会集成在下一个 SDK 版本中?

    [/报价]

    是的、它将集成在下一个版本中!