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.

[参考译文] TMS320F28377S:PWM 输出上的尖峰

Guru**** 2482225 points
Other Parts Discussed in Thread: TXB0106

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/625620/tms320f28377s-spikes-on-pwm-outputs

器件型号:TMS320F28377S
Thread 中讨论的其他器件:TXB0106

你(们)好

我们将使用0.5-1MHz 四相 H 桥、涉及死区和高分辨率。 看起来 DB 发生器严重损坏。 在某些情况下、在某些 PWM 输出上、我会看到强而脂肪 >2V 的尖峰。  请参阅随附的 oscillogram 和可编译代码。 独立 LaunchPad 板、无其他连接。 在从上至下的 oscillogram 上:

GPIO12 (Launchpad 引脚39、PWM7B)

GPIO13 (Launchpad 引脚40、PWM7A)

GPIO14 (Launchpad 引脚37、PWM8B)

GPIO14 (Launchpad 引脚38、PWM8A)

我的代码有什么问题? 如何可靠地修复它?

谢谢

Edward

更好的接地、但有两个通道。 尖峰脉冲宽度约为10ns:

e2e.ti.com/.../pwm_2D00_spike.c

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

    你(们)好

    我是否问过一些愚蠢的事情? 我观察到的情况是否正常? 每个人都知道 ePWM 已损坏、但我没有看到一些勘误表?

    谢谢

    Edward

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

    爱德华

    尖峰看起来与您的其他通道上的开关相关。  尝试单独对每个通道进行检测、以查看尖峰是否消失。   执行此操作时、一次只应连接一个探头。

    如果单个探头的尖峰消失、则仅是示波器设置中探头之间的噪声耦合。  如果尖峰仍然存在、您应该在电路板上寻找串扰源。

    Tommy

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

    嗨、Tommy、

    示波器/探头和通道串扰问题值得尝试。 哦、如果只是这样。

    请参见、使用单探头、放大为20ns/div。 它不仅仅是尖峰、振幅降至约2V 的良好脉冲。

    更多观察结果。

    1.“尖峰”不会立即出现,而是一段时间后出现。 我在 CCS 调试器 CPU Reset-Restart-Resume 中重复此操作。 有时 、"尖峰"会更快出现(打开)、有时会在单击"恢复"后出现。 从几乎立即到15秒或更长。 我写了这几个字、 现在始终 是1  秒或更短到3秒。 那是什么? 内部是否有一些未记录的超级计时器? 它是否与温度相关?

    2.在执行显示此问题的最小代码(在 第一条消息中附加)之前,在使用4个阶段时,我注意到运行时占空比从0变为100%,峰值在大约70%时打开。 从该点降低占空比后、尖峰  在大约30%处消失。 这种迟滞是如何实现的? 是否有一些未记录的计时器?

    我在高于500kHz 的 PWM 频率下看到这种影响。 也许它甚至可以咬到500。 我如何才能知道我在500kHz 时是安全的、无需经过多年的测试?

    谢谢、

    此致、

    Edward

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

    我看到类似的东西。 我将在这里向 ePWM 专家咨询已知问题。

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

    谢谢!

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

    我仍在尝试获取有关此问题的更多信息、但看起来 EPWM8上不存在该行为。 您是否能够使用另一个 PWM 而不是 EPWM7?

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

    其他 PWM 上也存在该行为。 这取决于许多因素、如果对 DB 和其他黑盒中的内容不了解、就很难理解这些因素。 使用4相位并改变占空比、2V-20ns 脉冲迟早会出现在所有通道(7、8、2、6)中、从而增加或降低占空比。
    如果不同的模块实例的工作方式不同、情况就会更糟。 我还没有注意到500kHz 时的这个问题、也许500kHz 是安全的、但是对问题的根源一无所知是非常令人沮丧的。
    我看到的另一个奇怪的问题是、初始4相设置为500kHz。 初始化后、0%占空比、低侧开关应被设定为打开、而高侧开关应关闭。 出于某种奇怪的原因、我需要将 DBRED 和 DBFED 字段写入非零(我正在使用1)、然后只将它们设置为适当的值。 否则、低侧开关可能会保持关闭状态、直到我大幅增加占空比或再更改一次 DBFED。 我在文档中看不到这方面的解释。 如果有一些非常严格和正确的初始化序列、我可能会违反这些序列、那么它在文档中的位置是什么? 嗯。

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

    尊敬的 Edward:

    如果我将您的原始代码放入 CCS 并运行它、除了由于快速的未加载边沿而在 ePWM 之间进行一些次要耦合之外、我没有看到任何其他东西(请参阅下面的内容)。

    这包括我是否在可能值的范围内更改占空比。  

    该代码是否始终会给您带来干扰?

    注:以下捕获是在代码中添加的 InitSysCtrl()调用。  除了 CPU 由于 PLL 被锁定而正在全速运行之外、这似乎没有什么影响。

    注意:我不使用 Launchpad、而是使用 TI 内部特性评估板。

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

    您好 Devin、

    感谢您尝试将其复制到特征评定板上。

    使用 InitSysCtrl()调用它是相同的。 我稍后将向同事借用另一个 Launchpad、并检查其上是否相同。

    您可以使用修改后的代码扫描占空比吗? 请参见随附的。 我禁用了跳闸区域、因此 PWM 继续点击调试器中的暂停。

    向下扫描:

    向下扫描峰值时、显示为大约82%、而消失的峰值大约为62%。

    在峰值打开时在调试器中单击暂停并将直流变量设置为1.0、峰值持续到直流大约为0.83。 然后尖峰消失、直到~0.82、并再次出现在~0.62水平。

    换言之、一旦出现、跳转至100%占空比并点击运行、100..83%的尖峰开启、83..82%的折扣、82..62%的尖峰再次开启。

    此外、如果在尖峰开启时停止 CPU、并且现在将 dc-0.6更改为尖峰、则尖峰会从0.6继续到0.35。

    向上扫描:

    扫描尖峰在 ePWM7上以大约72%的速率出现、在大约84%的占空比下消失。

    在尖峰打开时扫描并单击暂停、然后将直流设置为0中的任何值。 0.3间隔、情况与连续运行相同:0..72%峰值关闭、72..84%打开、84..100%关闭。

    在尖峰开启时单击暂停、将直流电压设置为0.4尖峰电压为40..63%、然后为72..84%。

    您是否知道会导致此类行为的原因? 我没有连接到 Launchpad、只连接示波器和 USB 电缆。

    LaunchPad CPU 案例标记如下:

    TMS320

    F28377SPZPT

    YFC-66A496W

    G4

    此致、

    Edward

    P.S. 论坛编辑器出现问题。 单击" RTF "按钮、将不恰当地更改行空间。 很抱歉、如果读不是很清楚、我不知道如何编辑和修复它。

    e2e.ti.com/.../5850.pwm_2D00_spike.c

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

    另一个 LaunchPad 实例的行为相同。

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

    您好、Edward。

    在我的末尾、新代码升压或降压时仍然看起来不错;未观察到干扰。

    我无法轻松访问单核 Launchpad、因此无法立即在该硬件上试用、但问题似乎与硬件相关、而不是与 EPWM IP 或软件本身相关。

    从您对 Tommy 的第一次响应来看、即使其他通道上的示波器探头断开连接、毛刺似乎仍然会发生、因此这会排除通过示波器探头进行耦合的可能性。  如果您为所有未发生干扰的通道禁用 GPIO 输出(将多路复用器设置设置为0)、会怎么样? 如果这会导致干扰消失、那么您知道耦合正在电路板上的某个位置发生。  

    您还可以尝试向 GPIO 输出添加一些额外的电容、以使边沿变得不太清晰。   

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

    感谢您的试用。 但是、您是否在您的板级芯片上使用不同的 maskset?

    移除 ePWM8 GPIO 初始化(已验证 ePWM8上无脉冲)后、我仍然会在 ePWM7上看到尖峰。
    我甚至删除了整个 ePWM8初始化、打开/关闭电路板电源以确保 ePWM8关闭。 仍然会在 ePWM7上出现尖峰。

    无论如何、它无法进行耦合。 耦合无法解释为什么向上扫描和向下扫描页边距不匹配! 我还有一些计时器、可能需要计数到结束、1MHz 周期可能会比较短。 或类似的东西。 当然、它无法解释2V 振幅。

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

    我的芯片是相同的、但封装不同(我有176引脚 QFP、而 F2837xS launchpad 使用100-p QFP)。

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

    尊敬的 Edward:

    您能否进一步简化仅用于调试的 ePWM 代码? 让我们来了解一下基础知识、只需使用时基子模块和操作限定符即可。

    请告诉我们结果。

    此致、

    Kris

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

    您好、Kris、

    我还需要死区。 请参阅简化代码、添加了一些注释。 仍然是一样的。

    e2e.ti.com/.../0456.pwm_2D00_spike.c

    我 注意到了一些新的东西。 连接了代码(跳闸区域默认为禁用状态、FREE_SOFT 默认在下一次计时器递增时停止)、有时当我单击调试器中的暂停按钮时、我会看到高侧引脚(蓝色) 低电平和低侧引脚(黄色)高电平。 有时、由于占空比大于50%、高侧引脚为高电平、低侧引脚保持~2V 振幅和~3.4MHz 频率的脉冲。 请参阅以下内容:

    运行:

    正常关断状态:

    异常导通状态:

    此致、

    Edward

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

    爱德华

    感谢您提供更多信息。 只需验证-您是否可以关闭死区以进行调试、或者您连接的系统需要关闭死区才能将其关闭?

    您的 EPWMCLK 的频率是多少(进入 ePWM 模块的时钟、而不是 TBCLK 本身)? 您似乎已将其定义为100MHz、只需验证它是否与时钟设置实际相同。

    如果以100MHz 运行、则10ns 与1个 EPWMCLK 周期相关。 您能否进一步降低 TBCLK 以查看脉冲宽度是否发生变化?


    此致、
    Kris

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

    我需要四相、所有四个具有 HRPWM 和死区的互补 PWM 输出。 在 Launchpad 上的100引脚封装中、只有四个具有 HWPWM 的 EPWM 连接输出、因此我别无选择、只能使用 ePWM2、ePWM6、ePWM7和 ePWM8。 我第一次注意到杂散脉冲在4个通道上运行。 重现这种奇怪现象并不重要、我必须先向上移动占空比、然后再向下移动、对一些 ePWM 寄存器进行调优以再次查看。 然后我尝试将代码减至最小值、我删除了两个 EPWM HRPWM。 我认为、我的第一条消息中的代码需要启用 ePWM8才能在 ePWM7上看到尖峰。 但现在只启用 ePWM7就足够了。 正如我之前所说的、在四相模式下运行时、我至少在3个 ePWM 上看到了寄生脉冲。

    正如您在我的代码中看到的、DB 单元设置为生成互补输出。 如果我禁用 DB、当然我不会看到杂散脉冲。 但是、他们怎么知道、也许会再次启用 HRPWM 呢?
    几分钟前、我在调试器中尝试重置目标、运行并将 DBCTRL.POLSEL 从2 (高电平有效、互补)更改为1 (低电平有效)。 尖峰正在消失、但将 CMPA 降至~50%以下、尖峰再次出现。
    现在、它发生了变化。 我在 DBCTRL.POLSEL 中单击调试器、它显示的不是10、而是我的代码设置的10、而是00。 如果我单击不同的 DBCTL 字段(调试器可能重新读取 DBCTRL)、那么我会看到连续的~3.4MHz 序列、仅出现伪波脉冲、如我上一帖子的第3个示波图中所示。 那是什么? 你认为我应该继续浪费时间观察这种奇怪现象吗?

    是的、EPWMCLK 为100MHz。 从调试器中更改 TBCTL.CLKDIV 和 HSPCLKDIV 会改变 PWM 占空比和周期、但不会改变寄生脉冲的形式。
    我还尝试将调试器 ClkCfgRegs.PERCLKDIVSEL.EPWMCLKDIV 从默认值1更改为0,这意味着超出规格 EPWMCLK 频率,但寄生脉冲的形式也没有改变,只有正常脉冲的周期和持续时间…

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

    尊敬的 Edward:

    我能够从我的建筑物中的某个人那里获得一个 LaunchPad 并尝试该代码。 我无法像扫描占空比一样重现代码问题。

    但是、我注意到我看到的频率与您发布的图像不同。 您的 EPWM 周期似乎为1000ns。 当我加载代码并运行代码时、我看到我的 EPWM 周期为2000ns。 如果我将 EPWMCLKDIV 更改为 SYSCLK/1并以200MHz (非法值)的频率运行 ePWM、那么我的 ePWM 为1000ns、之后我还会看到输出上的尖峰。

    您能否再次检查 EPWMCLKDIV 是否设置为 SYSCLK / 2 (EPWMCLKDIV = 1)? 这似乎是最可能的问题。 确保在启用 ePWM 计时之前将其设置为该值。 如果正确、那么让我们仔细检查您的系统时钟频率、并通过在 Launchpad 引脚12上提供 XCLKOUT 来验证它是否符合您的预期。

    此致、
    Kris

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

    好消息是我复制了这个问题。 这似乎是与 GPIO13上的高频信号相关的电路板设计中的一个错误。 当我将 TBPRD 和 CMPA 值更改为您的值/2以匹配 PWM 频率和占空比时、我重现了 ePWM 的问题。

    为了证明这不是 ePWM、我在高频下切换了 GPIO 并再现了问题。 以下是我的 main() while 循环:

    while (1)

    if (GpioDataRegs.GPADAT.bit.GPIO13)

    GpioDataRegs.GPATOGGLE.bit.GPIO13=1;
    asm (" RPT #30 || NOP");
    }否则

    GpioDataRegs.GPATOGGLE.bit.GPIO13=1;
    asm (" RPT #10 || NOP");




    我将进一步调查导致电路板问题的原因。 我可以在另一个板上运行相同的代码、但看不到任何问题。

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

    爱德华

    我们已确定电路板上的问题。 此问题是由器件 U2器件 txb0106引起的。 这种双向电平转换器的输出始终处于启用状态、会导致 GPIO13发生中断。  请参阅我从 launchpad 原理图和下面的 txb0106数据表中获取的代码段。

    以下是重现问题时 EQEP1I 和 GPIO13的波形(抱歉、手机示波器图片显示、当您需要 USB 驱动器时、似乎从未有 USB 驱动器):

    您可以看到 GPIO13上的杂散尖峰与 EQEP1I 信号的下降相关。 作为临时测试、我们能够使用跳线将 EQEP1I 接地、并解决了 GPIO13上的尖峰问题。 我们不建议永久这样做。 如果您不需要电平转换器、则可以移除 R2 (图表上用黄色圆圈标出)并将双向电平转换器的输出使能端(OE)接地。 这将使引脚处于高阻态、并应防止出现此问题。

    此致、

    Kris

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

    PWM 频率的相关内容。 是的、我已验证 ClkCfgRegs.PERCLKDIVSEL.EPWMCLKDIV 为1。 在运行一些不同的代码后、它可能会有所不同。 点击调试器中的 CPU 复位按钮可将 EPWMCLKDIV 恢复为01、因为它应该处于上电复位状态。

    嗯、感谢您指向 U2缓冲器。 我的缺点是,我以为它是输出到输出连接器的,没有看到 TXB0106的功能。 我想、5V 侧的 RC 是造成它损坏的原因。 是的、我在 GPIO10、GPIO11和 GPIO13上看到了杂散脉冲、这三个都用于原型板上的四相 PWM。

    非常感谢,我将删除 R2。

    此致、
    Edward