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.

[参考译文] TMS320F28069:运行时在3个相移 ePWM 上的频率变化

Guru**** 2577385 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/946142/tms320f28069-frequency-change-during-runtime-on-3-phase-shifted-epwms

器件型号:TMS320F28069

您好!

我有一个解决方案、使用3个 ePWM 模块生成3个具有相同频率和相同占空比的 PWM 信号。 ePWM 模块配置为通过以下方式相互相移:

  • 相对于主同步、ePWM8没有相移
  • ePWM6具有相对于 ePWM8的8个时钟相移
  • ePWM4相对于 ePWM6具有16个时钟相移

ePWM8配置为具有高分辨率。

所有3个 ePWM 模块的其余配置是相同的。 唯一的区别是上述相位。

EPwmxRegs.TBPRD = 224U;
EPwmxRegs.CMPB = 112U;
EPwmxRegs.TBPHS.half.TBPHS =相位;

EPwmxRegs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
EPwmxRegs.TBCTL.bit.PHSEN = TB_ENABLE;
EPwmxRegs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwmxRegs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;
EPwmxRegs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
EPwmxRegs.TBCTL.bit.CLKDIV = TB_DIV1;

EPwmxRegs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwmxRegs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwmxRegs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;
EPwmxRegs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD;

EPwmxRegs.AQCTLB.bit.ZRO = AQ_SET;
EPwmxRegs.AQCTLB.bit.CBU = AQ_CLEAR;
EPwmxRegs.AQCTLB.bit.PRD = AQ_NO_ACTION;

在正常运行期间、一切都运行良好。 但是、我的目的是在运行时更改频率和占空比。 为此、我将使用当 ePWM4 TBCTR = 0时触发的 ISR。 在 ISR 内、我将更改所有 ePWM 模块的 TBPRD 和 CMPB 值。 在禁用相移的情况下、功能运行良好-我可以看到所有3个信号的频率都发生了变化。 但是、如果我启用相移、那么我会在 ePWM8上看到100%占空比、对于 ePWM4和 ePWM6、频率保持恒定、如初始配置所定义的那样、在~401kHz。

根据我从初始应答中的理解、更改频率应与启用相移时在周期内更改 TBPRD 值一样简单。
我还尝试了不同的 ISR 触发器、例如使用 ePWM6和 ePWM8时 TBCTR =0、TBCTR == PRD。

您有什么想法吗? 我们将不胜感激。

期待您的回复、并提前感谢您!

此致、
LEV

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

    LEV、

    我通常看到用户用一个大于其中一个 CMPx 事件的值来更新 TBPHS 寄存器。 请注意、CMPx 事件仅在精确的 TBCTR 匹配时发生。 如果您应用100的相移、并且您的 CMPx 事件应在90时发生、那么当您的 TBCTR 从0跳到100时、它将跳过90的 CMPx 事件。 这意味着事件不会发生、因为如前所述、这是一个完全匹配(TBCTR=CMPx)、它不大于(TBCTR=>CMPx)比较。 这通常仅在您更改相位后的第一个周期发生、如果您再次更改相位、则可能会再次发生。

    请注意、PWM 同步链不是高分辨率的、因此每次在非 HR PWM 和 HR 通道之间发送同步脉冲时、您可能会看到一些小抖动。 (HR 通道的精度要比同步路径高)

    请告诉我这是否是您的问题。


    此致、
    Cody  

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

    Cody、

    感谢您的回复。

    TBPHS 的值在每个 ePWM 的初始化期间只设置一次、并且在运行时之后不会改变。 初始化期间 TBPHS 使用以下值:

    EPwm4Regs.TBPHS.Half.TBPHS = 16U;
    EPwm6Regs.TBPHS.Half.TBPHS = 8U;
    EPwm8Regs.TBPHS.Half.TBPHS = 0U;

    CMPB 和 TBPRD 值在运行时在一个 ISR 内被改变。 CMPB 的值范围为109...116、TBPRD 218...232的值范围。 您可能会看到、我们的目的是在运行期间始终保持50%的占空比。

    基于这些信息、我担心问题出在其他方面、因为 TBPHS 值永远不会大于 CMPB 值。

    注意:解决方案中未使用 CMPA。

    此致、
    LEV

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

    我已经做了一些进一步的实验、可以提供更多的信息。

    如果我 为 所有 ePWM 配置 TBPHS.Half.TBPHHS = 0U 并保持 TBCTL.bit.PHSEN = TB_ENABLE、那么结果我看到所有3个信号都可用、但具有恒定频率(在初始化期间设置)。

    注意:如果使用上文我的帖子中所述的 TBPHS 值、ePWM8上的信号就会丢失。

    如果我为所有 ePWM 设置 TBPHS.Half.TBPHS = 0U、但禁用相移 TBCTL.bit.PHSEN = TB_DISABLE、那么我会看到所有3个频率按预期变化的信号。

    基于这一点、似乎启用相移对频率变化功能有某种影响。 希望这对您有所帮助。

    此致、
    LEV

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

    您是否可以暂时禁用 HR 增强功能、并检查它是否能解决您的问题? (如果是这种情况、我们可以在之后重新添加它们)

    此致、
    Cody  

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

    Cody、

    禁用 HR 增强功能后、该功能仍然无法正常工作。

    HR 的配置方式如下:

    EALLOW;

    EPwm8Regs.HRCNFG.EDGMODE = HR_FEP;
    EPwm8Regs.HRCNFG.CTLMODE = HR_CMP;
    EPwm8Regs.HRCNFG.HRLOAD = HR_CTR_ZERO _PRD;
    EPwm8Regs.HRCNFG.SELOUTB = 0U;
    EPwm8Regs.HRCNFG.AUTOCONV = 1U;
    EPwm8Regs.HRCNFG.SWAPAB = 1U;

    EPwm8Regs.HRPCTL.bit.HRPE = 0U;
    EPwm8Regs.HRPCTL.bit.TBPHSHRLOADE = 0U;

    EDIS;

    我现在尝试了以下组合:

    • 相移被禁用、HR 增强功能被启用-一切都按预期工作。 所有3个 PWM 信号都在频率不断变化的情况下工作。
    • 相移被启用、HR 增强功能被禁用- ePWM8A 和 ePWM6B 上无输出。 输出在 ePWM4B 上可用。 频率不变。
    • 启用相移、启用 HR 增强功能- ePWM8A 和 ePWM6B 上的输出可用、但在 ePWM4B 上缺失。 频率不变。

    注意:通常我们使用通道 B 上的输出。但是、对于 ePWM8、我们将输出交换为 A 以获得 HR 增强功能。

    ePWM8 CTR = 0时每发生3次触发一次中断。 不幸的是,我还尝试了其他组合,但没有成功。

    此致、
    LEV

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

    LEV、

    您是否在 PWM 配置中启用了其他功能? 可能是跳闸区域还是数字比较子模型?  

    您的代码中还有什么其他变化? 我们能否去掉它并获得一个简单的测试用例?

    您如何配置同步链?

    您能否提供 PWM 输出的图像?

    您说过您一直保持相移、但您同步 PWM 一次还是进行逐周期重新同步?  

    此致、
    Cody  

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

    Cody、

    首先、感谢您的支持!

    除了前面的文章中介绍的配置外、我还启用了 ePWM8上的中断、以便在 INTCTR = 0时每三个事件触发一次。 这是改变 PWM 频率和占空比的触发点。 但是、这些参数不会在每次中断中发生更改。 没有启用跳闸区域或数字比较子模型。

    这是一个大型系统的组成部分。 该组件用于提供频率和占空比不断变化的3相移 PWM 信号作为硬件组件的输入。 不包含其他逻辑。

    这些 EPWM 配置为监听 EPWMxSYNCI 输入信号。

    我现在没有设备来做包含所有3个信号的示波器图片、因为我需要修改硬件以便更好地访问。 如果真的有必要的话,我可以在下周做。

    是的、我的预期是具有恒定的相移。 考虑到这一点、我进行了一项更改、在频率开始变化之前禁用相移、因为所需的相移已经实现。 我想指出,这种解决办法非常有效。 如果我使相移保持启用状态、则它不会像之前描述的那样工作。

    您是否知道在启用相移时更改 TBPRD 值是否有任何限制?

    谢谢、此致、
    LEV

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

    LEV、

    我知道没有硬件要求、只要您不以错过或永远不会发生事件或操作的方式更改值、就不会对可变频率和实现逐周期相移进行限制。

    您是否在每个周期更新频率? 也许您会阻止同步信号达到它们的 TBPRD 值、从而防止事件发生。

    哦、这实际上给了我另一个想法、您的所有 PWM 是否都以相同的频率运行? 如果这不是可以的、但最慢的信号必须是主器件、否则、较慢的信号将始终在到达 TBPRD 事件之前由较快的信号重新同步。 通过删除逐周期同步并在代码开始时将其替换为一次性同步、也可以解决此问题、因此您的上一篇文章支持此理论。

    此致、
    Cody  

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

    Cody、

    感谢您的澄清。

    频率不会在每个周期更新。 有一个简单的功能、可确保频率每1秒更改一次。

    我的所有 PWM 都要在相同的频率和占空比下运行、但具有相移。 这意味着我同时更改所有3个 PWM 的频率、以确保满足相同的频率要求。

    此致、
    LEV

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

    Cody、

    我做了一些进一步的实验、发现当 PHSEN = TB_ENABLE 时、为更改 PWM 频率而写入 ISR 中的新 TBPRD 值不会生效(大概是从影子寄存器写入活动寄存器)。

    如果我设置 PHSEN = TB_DISABLE、使用新值修改 TBPRD、然后在同一 ISR 内设置 PHSEN = TB_ENABLE、我可以看到频率按预期变化。

    但是、信号会在一段时间内不同步、然后恢复。 这是定期发生的。

    希望这能进一步帮助我们。

    谢谢、此致、
    LEV

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

    LEV、

    您的 PWM 周期似乎不相等。 单独的 PWM 模块使用完全相同的时钟、如果它们在一个时间点同步、则它们将保持同步。 根本不会发生漂移、这必须是由其他因素造成的、重置 TBCTR、重新同步或不具有相同的 TBPRD 都是可能的。 如果变化非常突然、也许您在影子到活动加载事件发生之前、事件结束后更改了一个 PWM 的频率、然后更改了其他 PWM。 在这种情况下、您需要定义一个安全窗口、在该窗口中更新 PWM 周期、通常在 PWM 周期的中间位置是一个好时间。

    您是否启用了影子加载? 您为影子到活动加载配置了哪些事件?

    此致、
    Cody  

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

    Cody、

    PWM 在 PWM 开始时同步。 一旦 ePWM6 TBCTR 达到周期(= CMPB)、相移被禁用。 否则、频率变化根本不起作用。

    软件根本不会触摸 TBCTR、如上所述、同步被关闭。 因此、我还怀疑在运行期间的某个时刻、TBPRD 可能会变得不相等、正如您所提到的。 但是、PWM 的周期变化完全如您所述-在 PWM 周期的中间(ePWM8更加精确)。 此时、系统会触发中断(EPWM8_INT)、并且在 ISR 内、我会分别更改 TBPRD 和 CMPB 的值以获得新的频率和占空比。 不过、我仍然看到漂移。

    已为 TBPRD 和 CMPB 启用影子加载。 在技术参考手册中、我没有找到为 TBPRD 配置影子到活动加载事件的任何可能性、因此当 TBCTR = 0时、它使用故障1。 当 TBCTR = PRD (也尝试为0)时、会发生从影子到活动的 CMPB 加载。

    任何可能有所帮助的想法都值得赞赏。

    此致、
    LEV

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

    LEV、

    [引用 USER="Lev Avdejev]PWM 在 PWM 开始时同步。 一旦 ePWM6 TBCTR 达到周期(= CMPB)、相移被禁用。 否则、频率变化根本不起作用。[/quot]

    不应发生这种情况、这意味着 PWM 永远不会达到 TBPRD 影子加载点、或 TBCTR=0。 为了确认我的理论、您是否可以禁用 TBPRD 的影子加载? 这是否允许在启用相移时更新 TBPRD?

    这似乎表明后来的 PWM 的计数器跳过 TBCTR = 0、我不知道为什么、但我会期望我之前提到的理论之一。 话虽如此、我也许已经回顾了另一个反向中断。

    此致、
    Cody  

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

    Cody、

    感谢您的回答。 今天我没有时间检查您的建议、但我明天肯定会检查并告知您结果。

    此致、
    LEV

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

    这不是个问题、一旦您获得结果、请告诉我。

    此致、
    Cody  

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

    Cody、

    我通过设置 TBCTL.bit.PRDLD = TB_IMMEDIY 来禁用 TBPRD 的影子加载、因此信号现在以100%占空比运行所有3个 EPWM。 但是、软件将占空比配置为50%。

    在这里、我尝试了2个选项:

    1. 设置 CMPCTL.bit.SHDWBMODE = CC_IMMEATE 以立即加载 CMPB 值。
    2. 设置 CMPCTL.bit.SHDWBMODE = CC_SHADOW 以从 SHADOW 加载 CMPB 值。

    对于这两个选项、结果是相同的:所有3个 PWM 都以100%占空比运行。

    请注意、在 ISR 内、除了频率之外、我还通过修改 CMPB 值来更改占空比、以确保其始终为50%。

    设置 TBCTL.bit.PRDLD = TB_SHADOW 并保持相移也被激活、导致信号返回50% PWM 和2.5us 周期、但频率不会改变、尽管在 ISR 内修改了 TBPRD 寄存器。

    此致、
    LEV

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

    LEV、

    我的理解是、您将 PWM4用作主器件、将 PWM 6和8用作从器件、这是正确的吗?

    您的每个 PWM 对应的 TBCTL[PHSEN]是什么?

    每个 PWM 的 TBCTL[SYNCOSEL]值是多少?

    您是否使用寄存器查看器读回了 TBPRD 值? 有时可能会出现代码错误、阻止值更新。

    此致、
    Cody  

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

    Cody、

    ePWM 模块的配置方式为、其中 ePWM8相对于主同步没有相移、ePWM6相对于 ePWM8具有8个系统时钟的相移、而 ePWM4相对于 ePWM8具有16个系统时钟的相移。

    您是说在主控下、哪些 EPWM 是相移的并与哪些 EPWM 相关? 同步来自第一个 ePWM、而第一个 ePWM 又从外部组件获得。

    对于所有3个 ePWM 模块、TBCTL[PHSEN]设置为 TB_ENABLE (0x1)。

    对于所有3个 ePWM 模块、TBCTL[SYNCOSEL]设置为 TB_SYNC_IN (0x0)。

    不、我没有使用寄存器查看器读回 TBPRD 值。 它的运行方式是否与普通存储器读取器相同? 是否需要停止系统?

    此致、
    LEV

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

    好的、让我们评估您的同步链配置。

    1. 您的第一个 PWM 配置为从外部源接收 SYNC 信号。
      1. 该外部 SYNC 信号的发生频率是多少?
    2. 是否所有 PWM 都配置为将 ePWMxSYNCI 传递给 ePWMxSYNCO (TBCTL[SYNCOSEL]= TB_SYNC_IN)、对吗?
      1. 如果是、这意味着外部源是所有 PWM 的 SYNC 信号、对吧?
    3. PWM 的4、6和8都以401kHz 的频率运行、对吧?

    尝试读回 TBPRD 值、以确保它们被正确读取。 您可以在代码运行的情况下执行此操作、但窗口上的刷新率比控制循环慢得多、因此您可能会看到略旧的值、但它将接近。 如果您暂停代码、窗口将赶上最新的寄存器值、您将知道这是最新的。

    此致、
    Cody  

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

    Cody、

    以下是我对您的问题的反馈。

    [引用 user="Cody Watkins">您的第一个 PWM 配置为从外部源接收同步信号。

    1. 该外部 SYNC 信号的发生频率是多少?

    [/报价]

    答案: 外部 SYNC 信号以400kHz 频率出现。

    [引用 USER="Cody Watkins"]是否所有 PWM 都配置为将 ePWMxSYNCI 传递到 ePWMxSYNCO (TBCTL[SYNCOSEL]= TB_SYNC_IN),正确?

    1. 如果是、这意味着外部源是所有 PWM 的 SYNC 信号、对吧?

    [/报价]

    回答: 不、对于 ePWM3、一旦 ePWM2的 CTR 等于零、就会生成 SYNC 信号。 因此、对于 ePWM2 TBCTL[SYNCOSEL]= TB_CTR_ZERO。 但是、以下 ePWM3再次为 TBCTL[SYNCOSEL]= TB_SYNC_IN。 对于所有其余 ePWM 模块、TBCTL[SYNCOSEL]= TB_SYNC_IN。  

    [报价用户="Cody Watkins"] PWM 的4、6和8均以401kHz 的频率运行,正确吗?

    答案: 是的、但仅在初始配置之后。

    一般而言、我想 ePWM2配置是否会中断链、并且所有以下 ePWM 模块(ePWM3-ePWM8)实际上都已同步到 ePWM2同步输出?

    我更希望使用调试器将寄存器读数保持为真正的最后状态。 问题是、由于 PWM 信号的重要使用、停止代码可能会导致硬件损坏。 我将检查这方面的其他可能性。

    此致、
    LEV

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

    LEV、

    [引用 USER="Lev Avdejev"]一般来说,我想 ePWM2配置是否会中断链,并且所有后续 ePWM 模块(ePWM3-ePWM8)实际上都已同步到 ePWM2同步输出?

    完全正确。 ePWM2的频率是多少? 它是否有比 ePWM 4 6或8更快的机会?

    [引用 USER="Lev Avdejev">希望使用调试器将寄存器读数保持到真正的最后状态。 问题是、由于 PWM 信号的重要使用、停止代码可能会导致硬件损坏。 我将检查这方面的其他可能性。[/引述]

    我知道、无需停止代码。 只要寄存器不能快速更改值、这将是一个有用的调试步骤。 Go 在代码执行时读取 PWM 2、4、6和8的 TBPRD 值。 如果 PWM 2的值变得更小、它将解释您缺少事件的原因。

    此致、
    Cody  

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

    Cody、

    [引用 USER="Cody Watkins">这是完全正确的。 ePWM2的频率是多少? 是否有任何机会比 ePWM 4 6或8更快?[/引述]

    你绝对是对的。 ePWM2以恒定频率401.786kHz 运行、ePWM 4、6和8的频率范围从~390kHz 更改为~410kHz。 基于这一点、很明显、在运行期间的某个点、ePWM2比 ePWM 4、8和8更快。

    如果我 在经过2个周期后关闭 TBCTL (PHSEN)= TB_DISABLE、它会如何影响相移的丢失?
    请注意、如果未执行此操作、则频率变化根本不起作用。

    我进行了一个实验、在该实验中、我将频率变化范围更改为~401kHz...~410kHz、以避免 ePWM2以更高的频率运行。 但是、结果是相同的、存在漂移。

    我今天注意到一个新的事实。 漂移大小似乎在某种程度上取决于频率变化的频率。 我尝试每~500ms 更改一次频率、然后漂移几乎看不到。 我可以看到、一个 PWM 与其他 PWM 之间来回漂移一点。 在我将延迟降低到~500us 后、漂移变得非常大。

    此致、
    LEV

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

    LEV、

    [引用 USER="Lev Avdejev]2 个周期通过后、如果我关闭 TBCTL (PHSEN)= TB_DISABLE、它如何影响相移的丢失?
    请注意、如果未完成此操作、则频率更改根本不起作用。

    如果相位同步被禁用、且 PWM 频率不相同、它们将缓慢漂移。 当主器件比从器件快时、频率不会改变、因为您已将其配置为仅在 TBCTR = TBPRD 时发生、由于较快的主器件 PWM 已经发送了一个 SYNC 信号、因此从未达到该频率。

    [引用 USER="Lev Avdejev">]我做了一个实验、在该实验中、我将频率变化范围更改为~401kHz...~410kHz、以避免 ePWM2以更高的频率运行。 但是、结果是相同的、存在漂移。[/quot]

    现在、您的从器件周期始终长于主器件周期、那么您不需要再使用禁用 TBPHS 的代码。 如果 TBPHS 被加载并被启用、那么应该没有漂移、主 PWM 应该在每个周期与从器件重新同步。

    当您运行实验时、您是否仍然有禁用 TBPHS 的代码?

    最后、从器件是因为它们比主器件快、还是因为它们比主器件慢?

    此致、
    Cody  

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

    Cody、

    感谢您的讲解!

    [引用 user="Cody Watkins"]当您运行实验时,您是否仍有禁用 TBPHS 的代码?

    是的、禁用 TBPHS 仍然是代码的一部分。

    Cody Watkins 说:
    最后,从属设备发生漂移,因为它们比主设备快,或者因为它们比主设备慢?

    当频率变化间隔相对较大时、我看到它在一个方向漂移、而当它较慢时、则在另一个方向漂移。

    我是否正确理解从 PWM 在每个周期都与主 PWM 同步?

    明天我将进行一个实验、在这里我保持 TBCTL (TBPHS)= TB_ENABLE、但是确保从器件周期长于主器件周期。 获得结果后、我会将其发布在这里。

    此致、
    LEV

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

    LEV、

    [引用 user="lev Avdejev"]我是否正确理解从 PWM 在每个周期都同步到主 PWM?

    这取决于 PWM 的配置方式、它们可以同步一次、缓慢但周期性地或每个主 PWM 周期。 在您的系统中、我建议您在每个主 PWM 周期中进行同步。

    请告诉我您的实验是如何进行的!

    此致、
    Cody

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

    Cody、

    我进行了以下实验:

    1. 保持相移被启用;从器件频率低于主器件频率;从器件与 EPWMxSYNC 同步。
      结果:频率根本没有变化。
    2. 保持相移被启用、从器件频率低于主器件频率;从器件与每个主器件 PWM 周期同步。
      结果:频率根本没有变化。

    只要我设置 TBCTL (PHSEN)= TB_DISABLE、频率就会开始变化、但会看到漂移。

    您是否有任何其他想法可以尝试哪些方法? 谢谢!

    此致、
    LEV

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

    请在系统运行时读取 TBPRD 值、并查看它们是否正在正确更新。 我知道、如果您停止系统、就会有风险、因此让我们不要停止它。 只需使用寄存器查看器即可观察相关的 PWM 值。

    PHSEN 是否始终处于活动状态?

    TBPRD 是否正确?

    您是否曾在这些实验中看到过 TBCTR =周期 ISR 或标志发生?

    此致、
    Cody  

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

    Cody、

    感谢您的建议。

    将继续查看寄存器、并在我获得结果后立即回复。

    此致、
    LEV

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

    LEV、

    我期待着结果。

    此致、
    Cody  

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

    Cody、

    通常情况下、在不停止程序的情况下不能看到寄存器值。 我是否需要某种特殊设备和软件?

    到目前为止、我只能通过评估板作为调试器进行连接、以访问存储器或刷写 MCU。 解释它的外观有点困难、但您可能会意识到这一点。

    此致、
    LEV

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

    LEV、

    "Registers"窗格是您要使用的内容。 下面、我链接到了有关它的快速教程。 默认情况下、它包含在调试环境中、但如果您已将其关闭、则可以转到"View"->"Registers"重新打开它。  

    www.youtube.com/watch 

    如果要实时查看变量、可以使用"Expressions"窗格或"memory browser"。 如果您使用内存浏览器、请确保将其设置为刷新。

    此致、
    Cody

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

    Cody、

    感谢您的指导。

    不幸的是,由于其他优先事项和项目,我本周将没有时间去尝试。 我下周一定会回来、并为您提供结果。

    此致、
    LEV

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

    LEV、  

    我知道。 如果您了解更多信息、请回复!

    此致、
    Cody