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.

[参考译文] AM2432:SYNC 模式下的 HDSL 参数通道通信

Guru**** 2863230 points

Other Parts Discussed in Thread: SYSCONFIG, TMDS243EVM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1608917/am2432-hdsl-paramter-channel-communication-in-sync-mode

器件型号: AM2432
Thread 中讨论的其他器件: SysConfigTMDS243EVM

尊敬的专家:

目前、我正在将 HDSL 示例集成到我们的固件中。

我从可以正常工作的自由运行模式开始、但通过将配置更改为 SYNC 模式、我遇到了一些问题。 与结束编码器和位置传输的连接似乎正常、但参数通道/长消息通信不可靠。

为了避免其他固件组件的影响、我从电机控制 SDK 中使用 HDSL 示例从头开始重建问题。

我的测试设备软件:

  • CCS 20.4.
  • 电机控制 SDK 11.00.00.06
  • hDSL_diagnostic_single_channel_am243x-evm_r5fss0-0_freertos_ti-arm-clang
  • SysConfig 1.24.0

我的测试设备硬件:

  • TMDS243EVM
  • HDSL AM64xE1 收发器
  • EES37/EKM36

 

重新创建问题的步骤:

  • 从 SDK 导入示例
  • 选择通道 1、取消选择通道 0 和 3
    • ENDAT1_IN -> U6
    • ENDAT1_CLK -> T4
    • ENDAT1_OUT -> W3
    • ENDAT1_OUT_EN -> P4
  • 选择 SYNC 模式
  • PRU-ICSS 内核时钟为 300MHz
  • 未选择 BoosterPack
  • 选择 PRU_ICSSG0_PRU1

代码更改:

  • 为 HDSL_AM64xE1_Transceiver 添加了定义
  • HDSL_ENABLE_SYNC_SIGNAL
    • 将通道 0 的硬编码选项替换为通道 1
  • SYNC_CALCULATION
    • 将通道 0 的硬编码选项替换为通道 1
  • HDSL_DIAGNOSTIC_MAIN
    • 更换
      • HW_WR_REG32 (0x000F41D4、0x00050001);
    • 一方
      • HW_WR_REG32 (0x000F41D8、0x00050001);
    • 将 PRG0_PRU1_GPI10(而是 GPI9)配置为输入、以匹配来自 AM64xE1_reaster 的信号
  • 生成了

运行示例:

  • 将 ES 设置为 3(测试的同步信号频率的最小值)
  • 将周期设置为 18750 (<=> 16kHz)

测试:

通过选择菜单项 0 多次获取当前位置、以确认该位置可行。  

选择菜单项 9 以通过长消息测试参数通道。  在某些情况下、API 函数返回成功(无超时)、但未接收到有效数据。

与使用自由运行模式相比、每收到一条长消息都是正确的。

要获得可靠的参数信道通信、我需要考虑哪些因素?

 

感谢您的帮助和诚挚的问候

Lars  

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

    尊敬的 Lars:

    在为长消息运行 UART 命令 9 后、能否使用 UART 菜单中的选项 13 以实现 SYNC 模式共享存储器的 DDR 跟踪? 为此、您需要在调试模式下构建应用程序并选择 UART 选项 13。 此外、您能否将 SYNC 模式的波形与您的设置 (sync、tx、rx、tx_en、tx_clk) 共享? 接下来、我需要该信息来调试问题、因为我无法重现问题。

    此致、

    Rajul

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

    嗨、Rajul、

    感谢您的回答。

    我执行了以下步骤、得到了正确的帧跟踪。

    • TRACE_COUNT 设置300 代码中
    • 在缓冲区设置为 0xFF 之前、通过设置 start_copy = 1 在函数 direct_read_rid81_length8 中开始跟踪
    • 最后、我将跟踪打印到 UART 终端(为了获得更好的视图,我只打印与前一个不同的帧(相对于所选的值)

    以下跟踪适用于同步模式和菜单项 09(成功):

    以下跟踪适用于同步模式和失败的菜单项 09:

    以下迹线适用于空闲模式和菜单项 09(始终成功):

    来自 AM64x 收发器的用于 SYNC 模式的信号 HDSL_EN、HDSL_OUT、HDSL_IN:

    希望这些信息对您有所帮助。

    感谢您的帮助和诚挚的问候

    Lars

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

    Lars
    在您共享的第一个图像中、我看到 QM 值在下降、这是意料之外的。 当长消息无法成功运行时、您是否会在线路上看到通信中断和协议复位?

    此致

    Dhaval

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

    嘿、Dhaval、

    我多次检查了 HDSL+和 HDSL-信号。 我们不能看到任何意外的情况。

    请注意、图 1 显示即使 QM 中断、也能在同步模式下成功访问参数。

    在图 2 中还存在 QM 中断、但参数访问失败。

    总的来说、我想知道无论如何 QM 也会下降。 在自由运行模式下、相同的硬件设置甚至不会产生 QM 中断。

    此致

    Lars

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

    尊敬的 Lars:

    感谢您分享这些详细信息、我将在星期二回到您的身边、并提供适当的调试结果。

    此致、

    Rajul

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

    尊敬的 Lars:

    根据您分享的存储器跟踪、我发现 EVENT_L 值为 0x26(对于不工作情况)和 0x06(对于工作情况)。 我们来根据 HDSL 规范(AM243x 电机控制 SDK:TI HDSL 寄存器列表)了解这意味着什么。 EVENT_L 位 5 在不工作的情况下设置、根据规范、该位表示“显示此警告时、参数通道仍处于初始化状态、不能触发“短消息“或“长消息“。 这意味着我们需要在清除此警告后检查是否尝试进行长消息事务。 我对此有几个问题、

    1.您发现此问题的频率有多高? 以及您触发长消息命令的频率如何?
    2.您是否在同步模式下看到协议重置? 您 
    是否可以在内存浏览器中检查 NUM_RESET(地址=0x300027a9)值?

    此致、

    Rajul

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

    嗨、Rajul、  

    请参考您的第一个问题:

    所有的测试,直到现在,通过手动选择菜单条目。 因此、单个长消息事务之间的时间跨度为多秒。

    此外,我进行了测试,每五秒触发一次。 我开始 100 次交易。 23 成功,其余的失败。 在 100 个事务后、复位计数(第二个问题)为 78。 一个重置计数来自首次显示菜单之前的初始化。  

    为了获得更多信息、我从 online_status_D_high 和_low 中提取了所有与长消息相关的位。 与正在存储的事件寄存器相比、该位不应存储。 现在、我还会在每次事务后清除两个事件寄存器。  

    通过打印出的帧跟踪和状态位、我观察到以下三种不同的情况:

    1.成功访问、无 NUM_RESET 递增

    2.访问失败、链接丢失、为一个帧设置了 PRST、NUM_RESET++(RES_COUNT++)

    感谢您的帮助和诚挚的问候

    Lars

     

    3.访问失败、状态寄存器无指示、仅 NUM_RESET++(RES_COUNT++)

    参考您的第二个问题、请查看上图:我在每次单个事务/长消息前后将 NUM_RESET 打印为 RES_COUNT。

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

    尊敬的 Lars:

    我尝试重现使用相同设置时所遇到的问题、与 CH1 和 SDK 版本相关的代码更改相同、但我在试用 100 次的情况下没有看到与长消息 cmd (9) 相关的任何问题。 您能否确认哪个编码器具体显示了该问题? 我们已经测试了具有编码器 EDM35、EKS36、EKM36 的解决方案。 此外、我们还没有 使用我们的解决方案测试 EES37 编码器。 您是否可以与我们共享整个项目、以便在相同代码上对齐?

    此致、

    Rajul

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

    嗨、Rajul、

     

    我在这里发布的所有评估结果都是使用 EES37 获得的。
    我还使用 EKM36 运行测试、这导致了相同的行为。

     

    共享示例工程不是问题。 我把这个项目附加在这个职位上。 希望这能为您效劳、否则请让我知道我可以将其发送到/上传给您的位置。

    此致

    Lars

    e2e.ti.com/.../SDK_5F00_11_2D00_00_2D00_00_2D00_06_5F00_hdsl_5F00_diagnostic_5F00_single_5F00_channel_5F00_am243x_2D00_evm_5F00_r5fss0_2D00_0_5F00_freertos_5F00_ti_2D00_arm_2D00_clang.zip

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

    尊敬的 Lars:

    您能执行几个步骤来确保不出现采样问题吗?
    1.在 datalink.asm 文件的“datalink_abort:“标签处放置一个断点
    2.在 datalink_init.asm 文件的“datalink_abort2:“标签处放置一个断点
    3.无论您点击长 msg 命令,如果断点达到,请报告 R6 值(只是为了确保采样正确)

    在执行这些步骤后、您能否试用并共享 R6 值?

    此致、

    Rajul

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

    嗨、Rajul、

    执行了几次测试运行:R6 值始终为 0x20005。

    此致

    Lars

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

    Lars

    断点呢? 您是否看到固件达到 Rajul 上述任何断点?

    此外、在这种情况下、电缆长度是非常小还是接近于零? 在您的设置中、我们是否预计电缆延迟小于 1 HDSL 位? 根据值  0x20005、这意味着我们测量的是 2 个 HDSL 位延迟、这对于您的设置可能不正确。

    此致

    Dhaval

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

    是的。 固件在启动长消息事务时达到断点。 当内核在断点处停止时、读取 R6 的值。

    电缆长度约为 5m。

    根据延迟寄存器的说明和延迟寄存器上方屏幕截图中记录的值、延迟寄存器显示的电缆长度小于 10。 这对我来说似乎是正确的。

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

    尊敬的 Lars:

    感谢您提供详细的固件调试响应。 我已修改固件以解决您遇到的与长消息相关的问题。 对于 PRU1 通道 1 同步模式、请参阅以下固件二进制文件。 只需将其替换为文件夹“source\position_sense\HDSL\firmware\multichannel_CH1_SYNC_MODE"中“中的现有二进制文件即可。

    e2e.ti.com/.../hdsl_5F00_receiver_5F00_multichannel_5F00_sync_5F00_mode_5F00_pru1_5F00_bin.h
     

    如果您仍然面临一些问题、请告诉我。

    此致、
    Rajul

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

    嗨、Rajul、

    感谢您的回答、很抱歉我延迟了回复。

    借助您的固件、我获得了可靠的长消息答案、并且我的 100 条测试消息测试正在运行、无需任何协议重置。 因此该问题已解决。  

    您能解释一下固件中的问题吗? 这会在下一个 SDK 版本中修复吗? 在串行控制台上的调试跟踪中、我观察到故障固件和正确固件之间 RSSI 值的不同行为。 在正常工作的固件中、RSSI 值似乎冻结在 1。 故障固件冻结到 2。 然而,这似乎是真的不好的价值? 与此相关、我可能在 HDSL 驱动程序代码中发现了一个错误。

    这是来自 HDSL_drv.c 的 RSSI 值代码、与延迟寄存器的寄存器说明不匹配。

    谢谢、此致

    Lars

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

    尊敬的 Lars:

    感谢您测试修复程序并确认它有效。 该问题与 RX 线路的不良采样点有关、我们现在已经修复该问题、并将包含在本月即将发布的 MCSDK 2025 中。

    关于 RSSI 值、我们确定了延迟寄存器规格中的文件间隙。 正确的位分配如下:

    • 位 7:4 :RSSI
    • 位 3:0 :电缆延迟

    驱动程序代码正在读取正确的位、但文档中的这些位已反转。 我们将在即将发布的版本中更正此文档错误。

    此致、
    Rajul