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:我可以在线更改 ePWM 上/下计数方向吗?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1158359/tms320f28379d-can-i-change-epwm-up-down-counting-direction-online

器件型号:TMS320F28379D
主题中讨论的其他器件:TMDSDOCK28379D

是否可以每半个基周期将 ePWM 计数方向从上数下数改为下数?

我想实施 AZSPWM 方法。 为了获得 PWM 信号、使用了以下算法:如果基准相位电压的斜率为正、则将调制波形与 Vtri 进行比较、如果基准相位电压的斜率为负、则将调制波形与-Vtri 进行比较

在适用于 ePWM 模块 的 MATLAB Simulink 帮助文件中、我可以设置"相位同步后的计数方向"、前提是我选择"将计数器设置为通过输入端口指定的相位值"、从而在模块上创建相位输入端口 PHS。

此外、在帮助文件中、它显示:

相位同步后的计数方向—相位同步后的计数器方向
同步后倒计数(默认)|同步后递增计数

同步后、将计时器配置为递增或递减计数。 此参数对应于时基控制寄存器(TBCTL)的 PHSDIR 域。
依赖关系

当计数模式为向上/向下计数并且同步操作设置为通过对话框或输入端口指定的相位值时、将显示此参数。

PHS 看起来像是逻辑输入? 是这样吗? 对于  AZSPWM 算法、想法是根据 PWM 基准斜率为每个 ePWM 生成一个逻辑信号(斜率)、例如 TRUE =上升斜率、使用上升-下降(Vtri)和 FALSE =下降斜率、使用下降(-Vtri)。

图1:fsw = 5 * f0、图2:fsw = 4 * f0


编辑:方向改变可在计数波形的任何位置发生;它全部取决于何时检测到斜率改变。

到目前为止、在我的 ePWM 模块中、"同步化操作"设置为"可"

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

    您好!

    我们将对此进行研究、并将在明天再次与您讨论。

    谢谢、此致、

    桑托什

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

    您好!

    [引用 userid="270650" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1158359/tms320f28379d-can-i-change-epwm-up-down-counting-direction-online "]到目前为止,在我的 ePWM 块中,“同步化操作”设置为“可”

    在这种情况下、计数器方向变化将不适用。

    我不熟悉 Simulink 模型、可能需要将问题发布到 MathWorks 论坛以获得帮助。

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

    您好、Santosh、

    感谢你的答复。

    深入阅读后、 ePWM 参考指南 图12和13显示了与我所寻找的内容非常相似的内容:  EPWMxSYNCI 脉冲上的斜坡方向发生变化。  我可以在 每次斜率变化时馈送 EPWMxSYNCI 脉冲。  TBPHS (值)似乎也必须设置为 TBPRD (值)的一半。

    方向改变前的最后一个斜坡值(Vtri (end))+方向改变后的第一个斜坡值(-Vtri (0)))必须等于 TBPRD (value)。 我在初始帖子中展示了不同开关频率的两个示例。

    是否有任何其他技术可以实现该算法?

    在运行转换器之前、是否 有任何引脚可用于查看 ePWM 斜坡信号并测试设置? 我使用 TMDSDOCK28379D 进行开发。

    该参考指南适用于 TMS320x2834x。 不适用于 ePWx2837x (F28379D)。

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

    没有机会去看它。 我明天会回来。

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

    您好 Santosh、您是否有机会查看此内容? 您是否可能知道 EPWM 模块的设置是什么才能实现 AZSPWM 脉冲模式?

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

    尊敬的 Mike:

    很抱歉,我没收到这个。 我将查看它、并在今天晚些时候返回给您。

    谢谢、此致、

    桑托什

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

    您好 Santosh、您是否有任何有关如何获取 AZSPWM 或 NSPWM 方法切换模式的更新?

    此致。

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

    尊敬的 Mike:

    我将在星期一再接回来。 我需要咨询 ePWM 专家。

    谢谢、此致、

    桑托什

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

    尊敬的 Mike:

    如果你想改变计数器计数的方向、那么你可以通过 TBCTL 寄存器的 PHSDIR 位来实现。 不过、您必须启用同步、并且可能执行软件同步脉冲、以便在检测到方向需要更改时、可以将 PHSDIR 设置为正确设置、然后强制进行软件同步。  

    [引用 userid="270650" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1158359/tms320f28379d-can-i-change-epwm-up-down-counting-direction-online/4356940 #4356940"]在运行转换器之前 、是否有任何引脚可以看到 ePWM 斜坡信号并测试设置? 我使用 TMDSDOCK28379D 进行开发。[/QUERP]

    一种简单的方法是监控 CCS 表达式窗口中的 TBCTR 值。 您可以看到时基计数器的变化。  

    我将在其他人中循环、他们可能会建议另一种方法。  

    此致、

    Marlyn

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

    您好、 Marlyn、

    非常感谢您的回复。

    我在 ePWM 参考指南 图12和13中查看了 PHSDIR 信号和示例、这似乎是解决方案。 但是、在仔细观察时、我注意到 当斜坡变化信号出现时、斜坡开始从预定义的 TBPHS (值)开始计数。

    正如我所理解的、AZSPWM 和 NSPWM 算法说它应该反转斜坡、即在方向改变之前从最后一个计数器值开始递增(或递减)计数。 并保持相同的 TPWM。 我在 下面的图12上添加了标记(红色)以尝试说明 这一点。 这是否可以实现?  

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

    尊敬的 Mike:  

    是的、这仍然是可能的。 当你想改变方向时、你可以读取 TBCTR 值、将该值写入 TBPHS、然后执行软件同步。 您可能需要将 TBPHS 值增加一个或两个计数、以计入执行写入 TBPHS 和软件同步的时间。  

    此致、

    Marlyn

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

    您好、Marlyn、

    再次感谢您的回复。 我想我对如何实现算法有一个大致的了解、并在斜坡方向变化时添加+1。

    这可以在 MATLAB Simulink 中使用适用于 F28379D 的 C2000 ePWM 块来完成吗? 我使用 MATLAB Simulink 编写应用程序代码。

    查看 ePWM 块"相位同步后的计数方向"参数、它看起来是硬编码的、但在 AZSPWM 算法中、斜坡在斜率变化时交替变化、即同步事件、如图所示。 可以在线更改 PHSDIR 吗?

    此外、还有一个"启用计数器捕获"选项。 我假设这是为了获取 TBCTR 的当前值? 您是否知道在 Simulink ePWM 块设置中该选项在哪里? 在显示该参数之前、我是否必须启用任何其他参数?

    此致

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

    尊敬的 Mike:

    有关 MathWorks Simulink 帮助、请通过以下链接查看 MathWorks 常见问题解答:

    如果您还有其他问题、获取 MathWorks 产品支持的最佳方法是 联系 MathWorks 现场技术支持。

    您还可以搜索答案或在 MATLAB Answers C2000论坛上发布问题。 此外 、在文档 和 示例中提供了有关 MathWorks 支持 C2000的信息

    我将在这里结束该主题、因为软件在 MathWorks 团队的论坛上得到了支持。

    谢谢、此致、

    桑托什

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

    您好、Santosh、

    感谢您的建议。 我在 Simulink 中找不到任何有关修改现有 C2000块的帖子、因此我在 MATLAB Answers C2000论坛上发布了一个问题。 我将其放在这里作为参考。

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

    当然是 Mike!!

    我们没有支持 Simulink 问题的资源、因此 我们依靠 MathWorks 工程师的专业知识。  

    请告诉我们您的问题何时得到解决。

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

    您好、Marlyn、

    按照 这个线程的步骤、我能够读取 TBCTR 值、但是信号分辨率在很大程度上取决于任务的采样时间。 因此、对于较高的开关频率、三角信号以较大的离散步进方式发生变化。 如果我尝试增加采样时间、我会遇到溢出问题。

    对于较高的开关频率、PWM 脉冲宽度不对应于基准和三角交叉点。 我假设对于 PWM 脉冲计算、TBCTR 信号更"详细"。 这是在哪里完成的、是否可以将算法代码添加到该"隐藏"更快的处理器任务中?

    此致

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

    Mike、

    我不确定 Marlyn 是否有机会查看它。 今天稍后我将与 Marlyn 同步。 请在周一之前回复。

    谢谢、此致、

    桑托什

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

    尊敬的 Mike:

    [引用 userid="270650" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1158359/tms320f28379d-can-i-change-epwm-up-down-counting-direction-online/4403681 #440361"]对于更高的开关频率、PWM 脉冲宽度不对应于基准和三角交叉点。 我假设对于 PWM 脉冲计算、TBCTR 信号更"详细"。 这是在哪里完成的、是否可以将算法代码添加到该"隐藏"更快的处理器任务中?

    很抱歉、我没有收到您的问题。 您是否在谈论 更改 ISR 中的 PWM 配置? 请您详细说明您的问题吗?  

    此致、

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

    您好、Chen、

    很抱歉、我现在清楚了。 在左侧的图中、我记录的是开关频率为800Hz 的 TBCTR。 可以看出、脉冲宽度对应于基准和三角(开关)信号的交点。 在右侧的图中、开关频率为8、000Hz。 在这种情况下、脉冲宽度与 DAC 上显示的基准和三角交点不匹配(DAC 的采样时间与任务的采样时间相同)。

    我知道这与任务的采样时间有关、如果我要将任务的采样时间增加10倍、我将得到与战斗中相同的数字、即脉宽将对应于基准信号和三角信号的交叉点。 但是、如果我增加任务的采样时间、我会遇到过运行问题。

    要实现 此线程中建议的算法、我需要使用高采样时间任务。 通过比较800Hz 和8000 Hz 的 PWM 脉冲、我得出的结论是、PWM 信号是在其他一些非常快速的任务上在其他地方计算的。

    是否可以实现更改该较快任务上的加减计数器的算法? 在我使用的任务上、采样时间太短、无法使算法正常工作。

    此致。

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

    尊敬的 Mike:

    对于您提到的算法、您能否在正弦波的方向发生变化时创建一个 ISR。 在 ISR 内部、您可以使用软件触发 SYNC 信号来更改 TBCTR 值和方向。  

    此致、

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

    您好、Chen、

    感谢您的建议。

    我可以使用 软件中断块 触发软件中的硬件中断、然后将 硬件中断块设置 为相同的 CPU 和外设中断扩展(PIE)编号。

    我可以将 CPU 和 PIE 的任意组合用于软件中断、例如[1]吗? 下表显示了这个组合与来自 ADCA1模块(即硬件)的事件相对应。 由于我已经在使用该 ADCA1输入、因此可能会产生错误触发。 是否有任何(备用或非活动) CPU 和 PIE 组合可在不受硬件触发器干扰的情况下使用、即对应信号永远不会变为高电平、因此我可以使用软件触发器覆盖该信号?

    此致

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

    您好!

    不确定您的正弦波频率是否会改变、如果不改变、您可以使用 ePWM (与正弦波相同的频率)来触发中断。 如果您未设置 ISR、则 ISR 不会进行嵌套。  

    此致、

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

    您好、Chen、

    我已尝试按照建议实施该逻辑。 当检测到斜率变化时、记录计数器值(ePMW 的 TBCTR)、如果斜率在上升、则没有相位偏移和 TBPHS = TBCTR 的变化、并且如果斜率下降、TBPHS = TBPRD - TBCTR (180°漂移)。

      e2e.ti.com/.../CounterShift_5F00_R2018a_5F00_v000.zip

    我注意到、精度取决于我的应用采样时间。 在某些情况下、计数器斜率变化(CH4)对应于斜率变化数字信号(Ch1)、而在其他情况下、它会移动几个周期。

    即使在某些情况下、段也不会移动180度:

    这是否可以在一些更快的 ePWM 任务上实现? 我还可以尝试其他方法吗?

    此示例针对800Hz 的开关频率完成。 μs 50 μ s 任务的采样时间、这将为每个开关频率周期(计数器)提供25个点。 如果我转至任何更高的频率、例如8kHz、应用在每个开关频率周期(计数器)内只读取2.5个点、这对于当前采样时间的算法来说太小、无法正常工作。

    此致