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:如何在两个 eQEP 模块上同时锁存 QPOSCNT、使用 ePWM ADCSOCA 作为 AM64 上的选通

Guru**** 2430620 points
Other Parts Discussed in Thread: SYSCONFIG, AM6442

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1530960/am6442-how-to-latch-qposcnt-simultaneously-on-two-eqep-modules-using-epwm-adcsoca-as-strobe-on-am64

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

工具/软件:


您好、

我正在使用基于 AM64x 的系统、并希望使用 EPWM 生成的周期性信号同时锁存两个 eQEP 模块的位置计数器 (QPOSCNT)。

以下是我尝试实现的目标:

  • 使用 ePWM 生成 10Hz 脉冲。
  • 将来自 ePWM 的 ADCSOCA 用作内部触发器。
  • 将此 ADCSOCA 信号路由至 eQEP0 和 eQEP2 作为其选通输入。
  • 配置两个 eQEP 以在选通信号的上升沿锁存 QPOSCNT。

我认为以下 API 调用是相关的:

   eQEP-setStrobeSource (baseAddr、eQEP_SELECTION_OR_ADCSOCA);
   eQEP-setLatchMode (baseAddr、eQEP_LATCH_SELECTION_RISING);


我的问题:

  • 将同一 ePWM ADCSOCA 信号用作多个 eQEP 模块的选通源是否有效?
  • 在 AM64x 上执行此操作时、是否有任何限制或注意事项?
  • 您能否提供有关如何使用 SysConfig 配置此配置的指导或示例?
  • 我是否需要显式配置任何交叉开关或内部路由、或者是否自动处理此问题?


希望获得任何帮助或示例项目!

提前感谢。

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

    您好、Miyako、下面提供了一些答案/意见

    使用相同的 EPWM ADCSOCA 信号作为多个 eQEP 模块的选通源是否有效?

    是的、这是一个有效的选项。

    在 AM64x 上执行此操作时是否有任何限制或注意事项?

    没有具体限制。 但是、务必确保正确配置 ePWM 和 eQEP 模块以及将 ADCSOCA 信号正确路由至 eQEP 模块。

    您能否提供有关如何使用 Sysconfig 配置此配置的指导或示例?

    遗憾的是、您需要在 SysConfig 之外进行 EPWM 和 eQEP 的 SOCA 配置、因为我们当前未启用此功能

    我是否需要显式配置任何交叉开关或内部路由、还是自动处理此问题?

    通常、如果您选择 ePWM SOCA 作为 eQEP 模块的选通源、并且在配置 CTRLMMR_SOCA_SEL 以指向 EPWM0_ADCSOCA 后、我认为我们可以接受。 但是、如果需要调用任何特定的 API、我再仔细检查一下。

    谢谢您、

    Paula

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

    您好 Paula、

    非常感谢您的详细说明。

    我刚刚开始使用 AM6442、因此我仍然不熟悉如何正确配置器件。
    您是否碰巧有任何用于演示此设置的示例代码?

    此外、您能否指导我如何为此用例配置 EPWM0、ADCSOCA、EQEP0 和 EQEP2?
    分步说明或示例非常有用、因为我仍在学习如何使用此器件。

    非常感谢您对 API 使用的指导。

    此致、

    Miyako

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

    您好、Miyako、请允许我呆几天、因为我需要查看文档并咨询同事。   

    谢谢您、

    Paula

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

    您好 Paula、  

    感谢您的关注。 我理解这可能需要一些时间,我真的感谢你的努力。

    如果您能分享整个过程中发现的任何内容、即使只是部分内容、我也不胜感激。  由于我不太熟悉这款 AM64、因此我需要一些时间才能完全理解事物。

    此致

    Miyako  

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

    您好 Paula、  

    我只是想跟进一下、从收到消息说要等待几天就已经过去了大约 9 天、所以我想知道是否有任何更新。
    如果您有机会告诉我、我非常感谢您的参与。

    再次感谢!

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

    您好、宫子、抱歉耽误您的时间、明天我会回来联系您

    谢谢您、

    Paula

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

    您好、Miyako、让我逐一介绍您的要求。

    1) 生成 10Hz ePWM 信号。

    为此、我建议您使用 MCU+SDK 中的示例作为起点。  AM243x MCU+ SDK:EPWM 占空比

    有一个原因是我们目前选择的除垢器不是低频的正确/最佳选择。 我们的开发人员正在努力解决这一问题、这个问题将在未来的 MCU+SDK 版本中得到修复。

    目前仅供参考: [EXT_SITMPUSW-81] MCU+ SDK:ePWM_tbTimebaseClkCfg 未选择最佳预分频器组合 — 软件问题报告 (SIR) 

    一种解决方案是使用 maximus hspClkDiv 和 lspClkDiv 值来确保 TBPRD 不会溢出 16 位、如下面的 E2E:ePWM-AM243X:低频下 MCU-PLUS-SDK 不准确?中所述 -基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛

    另一种解决方案是按照客户在此处发布的内容获得理想值:  AM6422:MCU+ SDK:EPWM:ePWM_tbTimebaseClkCfg 不选择最佳预分频器组合 — 处理器论坛-处理器 — TI E2E 支持论坛

    我稍后会就其他问题发表资料。

    谢谢您、

    Paula

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

    2)  将 ePWM 的 ADCSOCA 用作内部触发器

    我们的 MCU+SDK 中没有用于配置 SOCA 的 API、但主要是关于在下面设置寄存器的想法


    EPWM_ETSEL[SOCAEN]= 1 以启用 SOCA 输出
    EPWM_ETSEL[SOCASEL] 2h、可启用与周期(PRD_eq 事件)相等的事件时基计数器
    EPWM_ETPS[SOCAPRD]= 1h:在 SOCACNT = 1(第 1 个事件)时生成脉冲


    下面是我们 TRM 的几个屏幕截图、并提供了一些附加信息。

    AM64x/AM243x 技术参考手册(修订版 H)

    此外、作为参考、下面的 E2E 中有一个由客户创建的用于 SOCA 配置的示例 API: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1489966/am620-q1-how-to-implement-m4f-control-epwm-soca-pulse-output-function-on-am620/5777323#5777323 

    谢谢您、

    Paula

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

    关于:

    3) 将此 ADCSOCA 信号路由至 eQEP0 和 eQEP2 作为其选通输入。

    4) 配置两个 eQEP 以在选通信号的上升沿锁存 QPOSCNT。

    您可以使用 MCU+SDK 中的 eQEP 示例作为 AM64x MCU+ SDK 的起点:eQEP 捕捉

    您指出的 API 应该适用于您的用例

    eQEP-setStrobeSource (baseAddr、eQEP_SELECTION_OR_ADCSOCA);
    eQEP-setLatchMode (baseAddr、eQEP_LATCH_SELECTION_RISING);

    其他信息 TRM: AM64x/AM243x 技术参考手册(修订版 H)

    谢谢您、

    Paula

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

    感谢您发送编修。

    我知道电流标量选择可能不是 10Hz 等低频的最优选择。 我尚未对其进行测试、但我正在考虑使用稍高的频率(例如大约 60Hz)、以了解它是否能够在当前 SDK 下更可靠地工作。

    *是否有已知的最低频率阈值、超过该阈值、ADCSOCA 触发器和 eQEP 选通锁存器才能可靠工作?
    *是否有任何建议的权变措施或手动分频器设置可以改善较低频率下的行为?
    *使用不同的 ePWM 模块或时钟源是否有所帮助?

    感谢您提供任何指导或建议。 再次感谢您的支持!

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

    尊敬的 Miyako:  

    *是否有已知的最小频率阈值、超过该阈值、ADCSOCA 触发器和 eQEP 选通锁存器才能可靠工作?

    我不知道在这方面进行了任何测试、因此不确定

    *是否有任何建议的权变措施或手动缩放设置可以改善较低频率下的行为?

    您可以尝试使用最大  hspClkDiv 和 lspClkDiv 值、查看它是否适合您

    此外、一位客户发布了他的解决方案、以便在您想查看的情况下找到最佳分隔器:

    AM6422:MCU+ SDK:ePWM:ePWM_tbTimebaseClkCfg 不选择最佳预分频器组合 — 处理器论坛-处理器 — TI E2E 支持论坛

    *使用不同的 ePWM 模块或时钟源会有帮助吗?

    更改 ePWM 应该没有什么帮助。 关于更改源时钟我看到这个 API  SOC_moduleSetClockFrequency () 但是,我需要确认是否可以使用函数来更改 EPWM 的时钟模块

    AM64x MCU+ SDK:针对 SOC 特定功能的 API -->  SOC_MODULESetClockFrequency ()

    谢谢您、

    Paula

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

    您好 Paula、感谢您的持续支持。

    通过 SOCA 将 ePWM 信号连接到 eQEP 选通输入时、不可以为选通信号分配任何物理引脚(如下图所示)吗

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

    您好 Paula、  

    再次感谢您之前的答复。 我有关于 AM6442 上的 EPWM→SOCA→eQEP 布线的后续问题。

    我已将 EPWM 配置为生成 SOCA 脉冲、并且由于设置了 EPWM_ETFLG.bit2、我相信 SOCA 脉冲已正确生成。

    但是、该系统仍无法按预期运行。 我怀疑问题可能出在路由或 ADC 配置上。

    您能否澄清以下几点?

    1.如果我不需要使用 ADC 转换结果,是否仍有必要配置 ADC 模块(例如,预分频器,模式,启用)作为触发路径?

    2.是否需要配置 CTRLMMR_ADC0_CTRL.TRIG_SEL 或任何其他 CTRLMMR 设置? 如果是、您能否说明如何正确配置它们?


    此外、我还有一个相关的问题:

    3、在我的用例中、我正在使用来自 EPWM 的 SOCA 信号同时在 eQEP0 和 eQEP2 上锁存 QPOSCNT。
    根据此设置、两个锁存器的同步情况如何?
    我是否可以假设几乎同时进行捕获(在一个时钟周期或多个时钟周期内?)、或者它们之间是否有任何可测量的延迟?  

    非常感谢您提供任何说明或示例代码。

    此致、

    Miyako  

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

    您好 Paula、  

    我已成功将系统配置为从 ePWM 模块输出 SOC 信号、并将其连接到两个 eQEP 模块的选通输入。  

    目前、我想验证两个 eQEP 模块的锁存时序是否真正同步。 但是、我不确定如何直接确认。 作为一种权变措施、我会比较每个 eQEP 触发的中断服务例程 (ISR) 的时间。 虽然这让我大致知道锁存是同步的、但不够精确。

    如果有办法直接验证实际的锁存时序而不是依赖 ISR 时序、我非常希望有任何建议或推荐的方法。

    我很抱歉再问一次。 我之前发布了几个问题。 我仍在努力、因此任何指导都将非常有帮助。 感谢您的时间和支持。  

    此致

    Miyako  

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

    您好、Miyako、抱歉我错过了您之前的帖子、很高兴您 成功地配置了系统以从 ePWM 模块输出 SOC 信号、并将其连接到两个 eQEP 模块的选通输入。

    现在、关于如何验证 EQEP 之间的锁存同步、一种想法可能是使用连接到两个 eQEP 的相同编码器、然后 为两个 eQEP 捕捉 EQEP_QPOSSLAT。 这将帮助您计算它们之间的任何差异。 理想情况下、EQEP_QPOSSLAT  应该相同或具有~μ V 相同的偏移。

    另外、您可能希望以恒定、相对较高的分辨率使用编码器、以确保 QPOSCNT 值持续且快速地变化(这应有助于获得更多不同的计数)。

    希望这对您有所帮助。

    Paula

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

    非常感谢您对我们的帮助。


    顺便说一句、关于 eQEP 模块的性能—如果两个 eQEP 的 A/B/选通输入完全相同、那么假定锁存将以完全相同的时序发生是否正确?

    换句话说、两个 位置计数值 (QPOSLAT) 之间的差异是否在一个 eQEP 时钟周期内?

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

    宫古,我与一些专家确认,但这是我的理解。

    谢谢您、

    Paula