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.

[参考译文] AM6442:loadshare 中的 Endat cmd

Guru**** 2695575 points

Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1576552/am6442-endat-cmd-in-loadshare

器件型号: AM6442
主题: SysConfig 中讨论的其他器件

工具/软件:

尊敬的专家

我们已在 CH0 和 CH1 上以负载共享模式实现 2XEndat。

我们需要在周期性模式下以不同的命令运行 CH0 和 CH1

CH0 — 命令= 9

CH1 — 命令=1  

我注意到 endat_drv.c 中的 endat_command_build 会将所有通道设置为同一命令。

对 Endat IP 是否有任何限制可阻止他们运行不同的命令?

谢谢你

Alan I

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

    您好 Alan、

    对 EnDat 驱动程序或 IP 没有这样的限制。 在当前 SDK 示例中、周期模式配置为命令 1。 任何 EnDat 命令都可以配置为周期性模式。 只需确保 endat_command_process 和使用正确的命令编号和参数 endat_recvd_process

    每个命令所需的参数可在中找到 endat_handle_user()

    对于命令 9、需要在 endat_proce_periodic_fcommand 函数中进行这些更改。

    更新两个 API 的参数:

    1. endat_command_process

      • 将命令 ID 设置为 9。
      •  cmd_supplement->address 使用 MRS 代码进行配置。
      • 将这两个参数传递给 API。
    2. endat_recvd_process

      • 调用此 API 时请使用正确的命令 ID (9)。

                

    BR、

    Achala Ram

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

    嗨、Achala

    感谢您的答复

    可以用 cmd=9 运行 CH0、并使 CH1 并行运行 cmd=1。  

    谢谢你

    Alan I

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

    您好 Alan、

    目前、驱动程序和应用程序不支持此功能、但将在将来的版本中添加此功能。 但是、您可以修改驱动程序和应用程序、以便对每个通道使用不同的命令。 固件没有任何限制、两个通道在负载共享模式下独立运行。

    主要是、您需要更改:

    • endat_command_build 构建两个不同的命令。
    • 调用时 endat_recvd_process、对每个通道使用不同的参数 (cmd)。

    BR、
    Achala Ram

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

    尊敬的 Achala:

    感谢您确认 IP 核心兼容性

    我修改了 endat_drv.c 以按通道进行处理
    int32_t endat_command_build_v2 (struct endat_priv *priv、int32_t cmd、int32_t ch、
    结构 cmd_preement *cmd_prement)
    void endat_command_send_v2(结构 endat_priv *priv、int32_t ch)

    我仍然遇到 MIX 命令问题、CH0:cmd = 9 和 CH1:cmd = 1、

    -CH0:CMD9 运行正常、 CH1:CMD1 卡住

    Alan I

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

    嗨、Achala

    我正在使用 Endat Diagnostic、

    当 CH0 和 CH1 都处于周期性连续模式时、默认 CMD=1 正常工作(菜单 200)

     在 CH0 和 CH1 上 使用 MOTOR_CONTROL_SDK_am243x_11_00_00_06 更改为周期性连续模式(菜单 200)上的 CMD=9

    我可以看到、只有 CH0 正在运行、而 CH1 在~4 ISR 后卡住

    您是否能够在 周期性连续模式下运行 CMD=9(菜单 200)

    修改了 endat_diagnostis.c 以使用 CMD=9

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

    设置

    输入 IEP 复位周期计数(必须大于 EnDat 周期时间(包括超时周期) 、以 IEP 周期为单位):1,000,000

    输入 IEP 触发时间(必须小于或等于 IEP 复位周期、以 IEP 周期为单位)通道 0: 10.

     输入 IEP 触发时间(必须小于或等于 IEP 复位周期、以 IEP 周期为单位)通道 1:10.

    谢谢你

    Alan I

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

    您好 Alan、

    我正在审核您的更改。 同时、您是否还可以共享驱动程序文件?

    此外、您能否暂停 R5 内核并检查它卡住的位置? 同时检查内存浏览器中的 IEP 寄存器并验证是否为两个通道设置了相应的 IEP 比较事件?

    您可以在此处找到有关如何检查 IEP 寄存器的指南和定期模式调试指南。

    https://software-dl.ti.com/processor-industrial-sw/esd/motor_control_sdk/am243x/11_00_00_06/docs/api_guide_am243x/EXAMPLES_POSITION_SENSE.html#autotoc_md100

    BR、

    Achala Ram

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

    您好、Archala

    对于 Endat Diagnostic,我没有更改驱动程序文件,我使用的是 SDK 中的驱动程序文件唯一的更改是 endat_diagnostic.c 我只更改了 pos_cmd=9 ,  

    endat_proce_periodic_mcommand set
    CMD_EXTRE.ADDRESS = 0x0042
    使 CH0 和 CH1 都执行 cmd 9。
    从我看到的情况来看、RTU_PRU 内核正在运行、PRU 内核卡住、位于 M_WAIT_FOR_ENABLED_通道处
    2477 M_WAIT_FOR_ENABLED_channels
    LOOP_WAIT_FOR_ENABLE_CHANNELS81美元$:
    000d4c:2400002E LDI R14.b1、0
    000d50:9195180E LBCO &R14.b0、C24,149、1
    000D54:9101184E LBCO &R14.B2、C24、1、1
    000d58:104E0E0E 和 R14.b0、R14.b0、R14.b2
    000d5c:120E2E2E 或 R14.B1、R14.B1、R14.b0
    000d60:9196180E LBCO &R14.b0、C24,150、1
    000D64:9105184E LBCO &R14.B2、C24、5、1
    000d68:104E0E0E 和 R14.b0、R14.b0、R14.b2
    000d6c:120E2E2E 或 R14.b1、R14.b1、R14.b0
    000d70:9197180E LBCO &R14.b0、C24,151、1
    000D74:9109184E LBCO &R14.B2、C24、9、1
    000d78:104E0E0E 和 R14.b0、R14.b0、R14.b2
    000d7c:120E2E2E 或 R14.b1、R14.b1、R14.b0
    000d80:6F002EF3 QBNE LOOP_WAIT_FOR_ENABLED_COUNTER81美元$、R14.b1、0
    我将使用提供的指南重新运行调试
    谢谢你
    Alan I
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Achala

    当在 CH0 和 CH1 上运行 CMD=9 时、CH1 Endat G0_PRU_1 似乎卡在下一行

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

    您好 Alan、

    您可以使用此更新后的文件吗? 我修复了一些遗失码。

    文件:  e2e.ti.com/.../3808.endat_5F00_diagnostic.c

    更改主要用于打印功能。 由于这是用于 EnDat 2.2、因此您还需要为接收到的数据更新打印函数。

    我已经测试了 ch0 和 ch2 的这些更改、因为我有适用于 ch0 和 ch2 的硬件、但您可以检查 ch1 和 ch0 的这些更改并告诉我反馈。

    注意:
    该函数 endat_print_position_loop 可能需要进一步修改才能打印命令 9 的所有数据、因为它当前仅针对命令 1 和命令 8 实现。
    您可以参阅 endat_recvd_print  endat_print_position_loop 针对命令 9 进行修改。

    BR、

    Achala Ram

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

    您好、Achala

    感谢您更新 3808.endat_diganostic.c

    使用更新文件、这些是周期性连续模式下的结果

    负载 共享模式。  单通道 CH0:命令 9 运行正常  

    负载共享模式: 单通道   ch1:cmd 9 运行正常

    OUT 硬件、仅 支持 CH0 和 CH1、(我们的硬件不支持 CH2)  

    负载共享模式:双通道:CH0 和 CH1:命令= 8 、两个通道都运行正常

    我们可以看到两个通道的中断计数都正确计数

    负载共享模式:双通道:CH0 和 CH1:命令= 9。 CH0 正在运行。 CH1 仍卡住

    CH0 中断正确计数

    CH1 中断计数卡在 1

    告诉我们您的想法

    谢谢你

    Alan I

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

    Alan、

    您能否检查两个通道的信号 (TX、RX 和 CLK)? 理想情况下、Ch0 被中断、第二个没有被中断。 不应发生这种情况、因为两个通道应在执行命令后同步。 如果一个通道的固件卡住、第二个通道也会卡住、因为它会等待另一个通道完成。 准备好硬件设置后、我将同时检查 Ch0 和 Ch1。

    BR、

    Achala Ram

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

    嗨、Achala

    如上所示、CH0 和 CH1 在负载共享模式下、周期性连续、在 CMD=8 时均运行正常。  相同的 sysconfig 设置为 cmd=9、  

    问题似乎仅限于 cmd=9  

    我下周将尝试对两个频道进行跟踪。

    谢谢你

    Alan I

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

    您好、Archala

    您是否设法 在设置时在 CH0 和 CH2 上运行 CMD=9 周期性连续命令。 如果你这样做,我可以把更多的重点放在硬件调试.

    谢谢

    Alan I

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

    是、我已使用 i shared 文件检查 CH0 和 CH2、对于 cmd 9、我没有观察到 CH0 和 CH2 在负载共享模式下存在任何问题。

    我运行了“endat_diagnostic_multi_channel_load_share_am243x-lp_r5fss0_0"示“示例。

    完成设置后、我将在本周检查 CH0 和 CH1

    BR、

    Achala.  

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

    嗨、Achala。 CH0 和 CH1 设置的任何更新?

    谢谢  

    Alan I

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

    Alan

    我们尚未使用 CH1 进行测试。

    您能否分享 以下有关您的设置中出现的问题的详细信息?

    1.工作案例和非工作案例的逻辑示波器捕获

    2.有关 PRU 固件在非工作情况下卡滞的详细信息

    3.来自 IEP 基地址的地址 0x0-0x110 的 IEP 寄存器转储

    此致

    Dhaval

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

    您好 Dhaval

    1 — 我不能在双通道设置中进行示波器跟踪

    我使用中断计数器 (gPruEnDatIrqCnt0 和 gPruEnDatIrqCnt1) 从 到 Enday_periodic_ Trigger 来确定通道函数。

    使用  achala 提供的更新 3808.endat_diagnostic.c、这些是我的结果

    1) 通道 1 中断计数器卡在 1、而我们可以看到通道 0 中断计数器正在递增计数  

    gPruEnDatIrqCnT1 无符号整型 1 0x700A47A4
    gPruEnDatIrqCnt0 unsigned int 1130 0x700A47A0

    2) 在 通道 1 上、PRU 固件卡在该位置

    3 — 运行 cmd 9 时、通道 1 卡住时、连接从 ICSSG0_IEP0_0x3002E000 转储  

     e2e.ti.com/.../ICSSG0_5F00_IEP0_5F00_0x3002E000._5F00_cmd9_5F00_1.dat

     当运行命令 1(使用 oignal endat_diagnostic.c)时、当 ch0 和通道 1 正常工作时、附加的 3B 是从 ICSSG0_IEP0_0x3002E000 转储的  

     e2e.ti.com/.../ICSSG0_5F00_IEP0_5F00_0x3002E000_5F00_cm1.dat

    如果您需要更多数据、请告诉我、我们期待您的跑步结果。  

    谢谢你

    Alan I

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

    Alan

    感谢您分享这些详细信息。 我们将回顾。

    [quote userid=“235837" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1576552/am6442-endat-cmd-in-loadshare/6111289

    2) 在 通道 1 上、PRU 固件卡在该位置

    [/报价]

    在这种情况下、您是否也可以打开“Disassembly"视“视图并共享该视图的屏幕截图?

    此致

    Dhaval

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

    您好 Dhaval

    附件为“Disassembly View(拆卸视图)“

    如果您想访问我们的开发系统、请在线调试此问题、敬请告知

    谢谢你

    Alan I

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

    您好 Alan、

    您是否能够在没有周期性模式的情况下运行 CMD 9? 是否可以从终端同时对两个通道执行 3–4 次 CMD?  

    此致、

    Achala ram  

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

    嗨、Achala

    在 CH0 和 CH1 非周期性模式上运行 CMD=9 的结果如下所示

    |
    |通道 0
    |
    |
    |位置:248.016464233398、革命:210、CRC/f2:0/1、f1:Success
    |
    | WRN:0 RM:1 忙碌:0 I4-I0:2.
    |
    |附加信息 1:0x420121、CRC:成功
    |
    |
    |
    |通道 1
    |
    |
    |位置:51.262302398682、革命:358、CRC/f2:0/1、f1:Success
    |
    | WRN:0 RM:1 忙碌:0 I4-I0:2.
    |
    |附加信息 1:0x420009、CRC:成功

    |输入值:9.
    |输入 MRS 代码(十六进制值):0x42
    |
    |
    |通道 0
    |
    |
    |位置:346.339172363281、革命:210、CRC/f2:0/1、f1:Success
    |
    | WRN:0 RM:1 忙碌:0 I4-I0:2.
    |
    |其他信息 1:0x4201ad、CRC:成功
    |
    |
    |
    |通道 1
    |
    |
    |位置:147.402557373047、革命:358、CRC/f2:0/1、f1:Success
    |
    | WRN:0 RM:1 忙碌:0 I4-I0:2.
    |
    |附加信息 1:0x420092、CRC:成功

    输入值:9
    |输入 MRS 代码(十六进制值):0x42
    |
    |
    |通道 0
    |
    |
    |位置:84.419425964355、革命:211、CRC/f2:0/1、f1:Success
    |
    | WRN:0 RM:1 忙碌:0 I4-I0:2.
    |
    |附加信息 1:0x420039、CRC:成功
    |
    |
    |
    |通道 1
    |
    |
    |位置: 242.612976074219,革命: 358, CRC/f2: 0/1, f1 : Success
    |
    | WRN:0 RM:1 忙碌:0 I4-I0:2.
    |
    |其他信息 1:0x42011a, CRC:Success

    似乎 CMD=9 在非周期性模式下正常、此时通道 0 和 1 似乎都能够返回位置。 我们在位置读取之间旋转~90-100 度

    Alan I

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

    您好 Alan、

    我观察到、当在负载共享模式下一起运行通道 0 和通道 1 时、CMD9 在周期模式下存在相同的问题。 当运行单个通道或在负载共享模式下同时使用通道 0 和通道 2 时、不会发生该问题。

    具体而言、对于通道 1、两次成功传输后、时钟在 TX 完成后停止、导致固件在等待开始位时卡住。

    这看起来像是固件问题。 让我们进行调试并确定根本原因。 我将返回给您以更新。

    谢谢、
    Achala Ram

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

    嗨、Achala

    感谢您关注此问题。 希望我们能尽快解决这个问题

    谢谢你

    Alan I

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

    嗨、Achala

    我们可以对此问题进行一些更新吗? 分辨率的估计时间线

    谢谢

    Alan I

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

    您好 Alan、

    我正在调试问题、并识别了一个错误。 它仍在进行、同时您可以添加此修复程序。  

    需要修改 endat_drv.c 中的第 806 行

    endat_pruss_xchg->cmd[2].word1 =(priv->pos_rx_bits_22_cmd[2]+ info *
    ENDAT_additional_info_RX_bits)|
    (ENDAT_TX_6BITS << 8)|((ENDAT_CMDTYP_POSITION | ENDAT_CMDTYP_ENDAT22)<<
    16)|(1 << 24);

    进行更改后、请重新编译驱动程序。

    谢谢
    Arnav

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

    您好、Arnav

    当运行 cmd ==9 和 CH0 & CH1 时、上述建议的修复方法不能解决问题

    CH1 的中断计数器仍卡住

    谢谢你

    Alan I

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

    Archala.  

    我们是否对此问题有任何更新

    谢谢

    Alan I

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

    Alan

    很抱歉耽误了回复。 我们的团队一直在积极调查这一问题、但我们尚未找到解决方案。

    作为临时权变措施、您是否能够使用 UART 选项 107 而不是选项 200?


    此致

    Dhaval

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

    您好 Dhaval

    备选案文 107 没有提供所需的准确性。

    我必须定期连续运行 Endat IP

    谢谢

    Alan I

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

    你好 Dhaval ,希望你在这个问题上取得良好的进展

    谢谢

    Alan I

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

    Alan

    我们有一些线索。 它似乎在低 EnDat 时钟频率(例如 100kHz)工作。 我们正在研究为什么在较高频率下会发生故障。 我们会让您尽快更新并分享 bug 修复。

    此致

    Dhaval