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.

[参考译文] TM4C1294KCPDT:复位或 POR 后 PWM A/B 输出不重叠

Guru**** 2475160 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/686203/tm4c1294kcpdt-pwm-a-b-outputs-are-not-overlapping-after-reset-or-por

器件型号:TM4C1294KCPDT

 复位或 POR 后 、PWMENABLE REG-1 门控输出 (250us)的前几个周期会在栅极驱动器输出中产生空洞。 PWM 发生器配置为递减计数同步模式、具有本地发生器死区更新和全局同步更新。  A/B 驱动器输出中的空隙在高达250us 的时间内保持一致、然后 PWM 发生器看起来是部分自校正的。  

复   位或 POR 事件后、重叠无效会自动校正、 PWMENABLE 会在切换死区发生器的情况下生成输出。 尝试打开/关闭死区或使用  虚拟数据预加载 PWMENABLE 并将输出到空间不会更正  POR 之后的奇怪重叠空洞。 这表明  、无论  在配置发生器后调用 REG-2多少次、都会有 PWMSYNC REG-2时基调用不同步 GEN A/B 占空比。    复位或 POR 后、3个发生器的输出似乎没有完全同步!

为确保 PWM0发生器的前几个占空比变化 保持 A/B 重叠信号的同步、需要采取哪些措施才能确保应用程序首次使用 PWMENABLE REG1?

据认为,丢失脉冲是发电机的一个阶段问题,它与发电机直接有关,但不是原因。

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

    我不确定要建议什么变通办法。

    您能否提供 LaunchPad 的示例代码、以便我查看示波器信号以观察 POR 后信号变得不同步的行为、然后查看可以在软件中执行哪些操作来解决该问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ralph、

    下面是示波器捕获、可能会提示  EK-TM4C123G 通过 LM 闪存或 MCU 复位引脚将硬件复位到接地后发生了什么错误。 已尝试软件中已知的所有内容以诱骗 PWM 发生器将相移捆绑到正确对齐。 请注意、第二次捕获时的 PWM 频率为50kHz、但缩小后的实际频率为40kHz。  会在其他 PWM 频率下执行相同的未对齐相移。 较低的捕获是在第一个 PWM 运行周期之后、其中发生相移占空比的正确 GEN A/B 中心对齐。 请注意、相移会导致顶部捕获波形中丢失脉冲。 移位问题与 产生的每次复位顶部捕捉一致。

    严重怀疑您能否在 未连接栅极驱动器的情况下看到或捕获不正确的重叠相移。 两个栅极驱动器协同工作可生成以下信号。  在单个触发器上设置示波器以捕获第一个250us、之后相位重叠变得很难看。

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

    发现问题与捕获中的 PWM 没有直接关系。 相反、GPTM1 PWMENABLE 的触发器从静态定义的变量0值加载了一个0周期。 应用程序会递增上述变量、并且在函数结束后永远不会将其返回到零。 PWM0相移在该期间非常快、很难判断脉冲相对于复位后捕获的准确缺失情况。
     
    在函数将控制权返回给 CPU 后、是否认为静态变量应恢复其定义的值? 还会看到一些静态变量、这些变量不是直接#defined VariableName = 0;在 CCS 调试中获得巨大的值。 静态变量是否应该自动假设为零值?

    根据与静态定义变量相关的 Microsoft VS 注释、它们在定义时假设值为零、在中断期间保留值。

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

    只有两天时间才能算出这个奇数相位是一个值在复位前不返回0的结果。  在 函数从调用堆栈中释放后、CPU 应该会返回到0、或者那个易失性变量将返回到0。

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

    换句话说、每次启动周期250us 时、都将生成顶部捕获、而不是生成仅在值递增后产生的第二次捕获。