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.

[参考译文] TMS320F28379D:在 C2000上仿真 QEP 信号

Guru**** 2557640 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1276191/tms320f28379d-emulating-a-qep-signal-on-c2000

器件型号:TMS320F28379D

我想使用28379D 精确地仿真 QEP 传感器 ABZ (或 ABI)差动输出、并希望该信号从外部反馈到 QEP 调节电路、最终返回到 MCU。 我希望能够在运行时更改输出频率、并且希望指数(Z、从现在开始)与每次旋转时精确对齐一次。 我认为使用三个 ePWM 模块(共6个信号)最简单、但我乐于提供建议。

为了生成 A 和 B、我将它们配置为 UpDown 计数器、链接 TBPRD 和 CMPA 值、然后向 B 添加 TBPRD/2相位延迟。每当需要更改输出频率时、都会更新 TBPRD、CMPA 和 TBPHS (B)。

当 QEP 的 PPR 很大时、我发现最大的挑战是正确调整指数(目前、我正在使用512、但我希望有一个灵活的解决方案)。  下面是我修整的一些东西、以及我遇到的一些挑战:

QEP 位置中断(janky McJankyPants)

  1. 配置 PWM 模块的 Z、使其与 A 完全相同、并确保影子加载 AQS。
  2. 通过 AQ 将 Z 的输出设置为禁用。
  3. 配置 QEP 位置比较中断、以便在 PPR-1 PWM 周期触发。
  4. 在中断中、使用 AQS 启用 Z 的输出并将位置比较设置为0、以便在下一个周期立即触发。
  5. 在下一个中断中、执行2。

此处的挑战:

  1. 添加新的中断和 QEP 配置、它们不会包含在实验控制代码中(即使在单独的内核上也是如此)。
  2. 中断频率可在低 PPR 和/或高频输出下较高。

大草原的女王(大草原的女王)

  1. 配置 PWM 模块以使 Z 的时钟分频器为 PPR -(假设 A 和 B 的分频器都为1)。  如果 PPR=512、ClkDiv=128、HSPCLK=4。
  2. 将 Z 配置为向上(或向下)计数器并设置 AQ、以便其在结束时(与 A 对齐时)开启。

此处的挑战:

  1. 此解决方案仅适用于可使用时钟分频器创建的某些 PPR。
  2. 在某些条件下不可能将 Z 与 A 对齐、因为 Z 的最小分辨率是 PPR 比 A 差。

对我来说,两个人都吸了,有什么建议吗?

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

    您好、Wil:

    [quote userid="88556" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1276191/tms320f28379d-emulating-a-qep-signal-on-c2000

    当 QEP 的 PPR 很大时、我发现最大的挑战是正确调整指数(目前、我正在使用512、但我希望有一个灵活的解决方案)。  下面是我修整的一些东西、以及我遇到的一些挑战:

    [/报价]

    您对 PPR 有哪些限制? 最小值/最大值? 您是否尝试过同步 PWM 模块? 仿真多少个编码器? 如果您只尝试仿真1个编码器、那么使用2个 ePWM 模块似乎可以起作用、因为您有 ePWM1A/B 和 ePWM2A。 ePWM1A 可用作您的索引选通、ePWM1B 可用作您的 eQEPA 信号。 ePWM2A 可用作您的 QEPB 信号。  

    使用 ePWM1A 作为索引和使用 ePWM1B 作为 QEPA 的原因是、它们应正确对齐、因为它们位于同一个 ePWM 模块内并使用相同的 CLK。  

    此致!

    马瑞安

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

    我的 PPR 是512、我希望最高达到2048。 我要仿真一个编码器、但希望信号是差分对、以便与硬件输入相匹配。

    所有 PWM 模块都已同步、这不是问题。 问题是与其他脉冲对索引脉冲进行合理的"门控"(请参阅 SPRUHM8中的图17-3)。

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

    您好、Wil:

    我正在与另一位主题专家讨论这一问题、看看我们是否可以提供您提供的建议之外的其他建议。 我将在明天一天结束前作出答复。

    此致!

    马瑞安

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

    您好、Will、  

    您能否说明一下、当您说希望信号是差分对时的意思? 正交信号通常为单端信号。 由于它们是数字开关且不是快速开关的、因此通常不太容易受到共模噪声的影响。  

    是否改为意味着您要确保它们偏移为90度?

    此致、

    彼得

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

    Peter、

    根据我的经验、电机轴 QEP 传感器以差分对形式发送信号的情况并不少见。 如果感兴趣、下面是其中一个示例。

    说了这句话,我不认为差别是一个问题。 正如我在《操作手册》中所述、我的 A 和 B 工作正常(差异或不差异)、该部分是直接的。 浇口 Z 是我认为十分棘手的部件。

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

    您好、Wil:

    您是否正在 或计划在设备上使用任何 CLB?  

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

    您好、Will、

    根据我的经验,电机转轴 QEP 传感器以差分对发送信号的情况并不少见。 以下是其中一个示例(如果感兴趣)。

    感谢您发送该链接。 我们的 EQEP 仅支持单端 QEP 信号、因此这是一篇有趣的文章、在电缆长度非常长的应用中似乎尤其重要。

    现在继续我们的查询、我与 Ryan 讨论了这个问题、我们想的实现方案是在 C2000器件上使用可配置逻辑块(CLB) IP。 该 CLB 具有到 ePWM 的连接、因此我们认为一种解决方案是通过 CLB 传递 QEP_P 信号、并让 CLB 计算传入信号的数量。 CLB 有一个内部计数器、您可以配置该计数器来计数到特定的数字、然后在接收到该计数值后将定义长度的脉冲输出到 GPIO 引脚上。 可以对进入 CLB 的输入进行滤波、以实现上升沿和下降沿检测、以便 CLB 外设准确地计算从 ePWM 模块接收到的脉冲数。

    此致、

    彼得

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

    他们目前还没有使用、我愿意尝试一下。

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

    Peter、

    很抱歉不清楚,我已经处理了 diff ->单端转换。 整个系统在具有差分 QEP 输入的物理单元中工作。 这个请求是为了创建这些大型系统的仿真器、以便我可以在办公桌前更好地进行调试/开发。

    CLB 解决方案看起来非常巧妙! 出于某种原因、我认为 CLB 计数器最多只能计数16个。

    总结:

    1. 将 QEP_P (或单端 QEP_A)信号路由到 CLB 输入。
    2. 配置 CLB 以使用边沿计数功能(带滤波功能)来正确地对 Z 信号计时。
    3. 输出 QEPZ_P、并具有适当长度的 GPIO 脉冲。

    除了使用 GPIO 脉冲创建 Z 信号、我是否能够使用 CLB 计数器逻辑在配置为 Z 的 PWM 模块上触发一次性?  这样就可以简单地处理微分部件(TBPRD 和 CMP 的 EPWMLINK)。

    再次感谢。 彼得和瑞恩!

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

    您好、Wil:

    对于 PWM 的一次性跳闸区域配置、您意味着在 PWM 上使用一次性跳闸区域配置吗?   

    此致!

    马瑞安

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

    您好、Will、

    CLB 解决方案似乎真的很聪明! 出于某种原因,我认为 CLB 计数器最多只能计数16个。

    是的、我们实际上在 CLB 中拥有三个独立的32位计数器、因此即使使用单个计数器、您也能够支持最高分辨率的编码 器(我尚未听说过10亿个编码器)

    我不是使用 GPIO 脉冲创建 Z 信号,而是能够使用 CLB 计数器逻辑在配置为 Z 的 PWM 模块上触发一次吗?  [/报价]

    我不相信这是我们 PWM 的一项功能、但您应该能够使用另一个独立的计数器来控制 CLB 生成的该索引脉冲的导通时间。 提供了一个 CPU-CLB FIFO 接口、您可以使用该接口将数据发送到 CLB 计数器、因此您可以在更新 QEP 信号频率时动态更新此导通时间

    此致、

    彼得

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

    "我想,我不会骗你的。"  我将尝试以下彼得的建议。

    谢谢。

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

    非常棒。  我很高兴尝试这款产品。

    谢谢!

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

    您好、Wil:

    听起来不错、如果有任何进一步的问题出现、请随意在新问题中发布新问题。

    我将继续、关闭该主题。

    此致!

    马瑞安