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:Channel2 在带负载共享的 PRU Slice0 上不工作

Guru**** 2465890 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1550178/lp-am243-endat-channel2-not-working-on-pru-slice0-with-loadshare

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

工具/软件:

尊敬的专家:

我们相信我们遇到了 EnDat PRU 固件中的一个错误、非常感谢您在调试它时提供的帮助。

在我们的硬件设计中、我们将两个 EnDat 编码器连接到 ICSSG0-PRU0 片的通道 0 和 2。 由于编码器具有不同的分辨率、因此我们需要使用负载共享模式。

在调查过程中、我们确认此配置在 LaunchPad 的 PRU1 切片上正常工作。 但是、在 PRU0 片上、只有通道 0 按预期运行。 当通道 2 激活时、两个通道都会停止完全工作。

在 LP-AM243 上重现错误的简单示例、无需编码器

  • 无需任何外部 BoosterPack 即可使用 LaunchPad
  • 电机控制 SDK 版本:09.02.00.11
  • 通过 DIP 开关 SW6 将 LaunchPad 设置为双电机驱动模式
  • 使用 endat_diagnostic 示例、在 SysConfig 中、可以选择所需的通道和 PRU 片 0/1
  • 如果使用 PRU 切片 0、在将预定义的符号 SLICE1 切换到 SLICE0 后、重新编译 endat PRU 固件 CCS 工程、然后通过 makefile 重新编译电机控制 SDK 库
  • 要检测 endat 固件是否至少尝试启动通信、可以监控相应通道的 CLK 引脚。 即使没有编码器、也有一个通信周期可见
    • Slice1
      • 通道 0:PRG0_PRU1_GPO0
      • 通道 2:PRG0_PRU1_GPO6
    • Slice0
      • 通道 0:PRG0_PRU0_GPO0
      • 通道 2:PRG0_PRU0_GPO6

如何使用 PRU 层 1 进行测量

在片 1 上、通道 0 和通道 2 的任意组合都在负载共享模式下工作:(仅左侧通道 0 启用,右侧两个通道启用)

使用 PRU 片进行测量 0:

在片 0 上、通道 0 独立工作(左图)。 添加通道 2 后、不再起作用(右图)。 通道 2 独立器件也不起作用。

  

有趣的是、如果停用负载共享模式、两个通道都在片 0 上工作。 然而、这对我们来说不是解决方案、因为我们使用两种不同的编码器:

我们希望此信息足以让您重现此问题。 如果没有、请随时询问更多详细信息。

非常感谢您的支持、因为此问题目前正在延迟我们硬件的调试。

此致、Stefan

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

    您好、 

    是否使用 PRU0 固件二进制文件进行负载共享? SDK 中可用的默认二进制文件为 PRU1 构建。

    位置:motor_control_sdk\source\position_sense\endat\firmware\multi_channel_load_share

    此致、

    Achala Ram

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

    是的、我这样做是过时的:  

    • 如果使用 PRU 切片 0、在将预定义的符号 SLICE1 切换到 SLICE0 后、重新编译 endat PRU 固件 CCS 工程、然后通过 makefile 重新编译电机控制 SDK 库
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stefan

    如果您可以、您能与我们共享更新后的 syscfg 文件吗?

    此致

    Dhaval

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

    当然,这是你的错。

    这是示例中的原始 SysConfig 配置、使用 PRU1 上的通道 0 和 2:

    e2e.ti.com/.../default_5F00_slice1.txt

    这是一个文件、我切换到了 PRU 片 0。 通道 0 和 2 仍处于启用状态、其不再工作、如上所述:
    e2e.ti.com/.../slice0.txt

    也许您可以检查是否可以在 LaunchPad 上重现我的测量结果。

    此致
    Stefan

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

    您好、Stefan:

    endat_diagnostic(在 endat_pruss_init 函数中)中有一个错误。 它为 TXPRU0 配置了错误的表条目。

    您可以按照下图所示的相同方式修复此问题。

    此外、如果您使用的是 ICSSG1、请更新以下给出的值:

    ICSSG0:

    • SLICE0→0x250
    • SLICE1→0x258

    ICSSG1:

    • SLICE0→0xA50
    • SLICE1→0xA58

    此致、

    Achala Ram  

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

    你好 Achala ,这是工作!
    感谢您的快速调查!

    此致、Stefan