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.

[参考译文] TMS320F28P659DK-Q1:在周期模式中使用 HRPWM 时的抖动

Guru**** 2731945 points

Other Parts Discussed in Thread: TMDSCNCD28P65X, TMS320F280049C, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1367413/tms320f28p659dk-q1-jitter-using-hrpwm-in-period-mode

器件型号:TMS320F28P659DK-Q1
主题中讨论的其他器件:TMDSCNCD28P65XTMS320F280049CC2000WARE

工具与软件:

您好!

我正在尝试示例 HRPWM_ex3_prdupdown_fo、该示例与我们正在研究的项目(我们正在使用 HRPWM 来对 LLC 进行变频控制)类似。


我修改了此示例、以在调试中更改"count"变量的小数部分。 另一个不同之处在于、对开发板(TMDSCNCD28P65X controlCARD)进行了修改、以选择20MHz 作为时钟源。
运行该示例的情况如下:
对于变量"periodFineCustom"的某些值(对于某些 TBPRDHR 值)、我在 PWM 上看到了抖动。 我附上了一个示波器屏幕(EPWM1A:黄色、EPWM1B:粉色)和一个相应调试视图的屏幕(还可以在其中看到代码修改)。

说实话、我还看了这篇文章:"TMS320F280049C:使用 HRPWM 周期控制时抖动"、我尝试了项目中所述的建议、但抖动仍然存在。 然后我尝试了上面所述的示例、并再次出现抖动。

您认为根本原因是什么?

提前感谢您、
Simone

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

    您好、Simone、

    在示波器上看起来不像抖动。 看起来像是两个重叠或以连续模式运行的波形。

    您是否通过停止示波器图来查看此示波器范围、或者它是否仍在运行?

    这是因为有两个不同的波形、并且不同的波形上升和下降

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

    Prarthan、您好!
    感谢您的答复、示波器上的图形正在运行。
    该波实际上在两个不同的时间是相同的、如果我停止采集、我可以从示波器上连接其他屏幕。

    我截取了信号为高电平时的两个近周期的屏幕截图。 在第一个周期中、您可以看到大约251ns 的持续时间、而下一个周期具有较高的持续时间:

    如果您不停止采集、您可以看到以下图像、在其中您可以看到不同的持续时间(7ns、似乎是周期的持续时间):

    似乎整个期间更大(与前一个相比,在同一迹线我的意思):

    最棒的酒廊

    Simone

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

    Simone

    波形实际上在两个不同的时间是相同的

    我不太明白您在这里的问题。  
    请一次性捕获两个相同波形的周期、并使用光标显示两次之间的差异。

    [报价 userid="608011" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1367413/tms320f28p659dk-q1-jitter-using-hrpwm-in-period-mode/5224967 #5224967"]我截取了两个近周期的屏幕截图(此时信号为高电平)。 在第一个周期中、您可以看到大约251ns 的持续时间、而下一个周期具有较高的持续时间:
      [报价]

    上面显示的两个屏幕截图之间有什么区别?  

    谢谢

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

    您好!

    我一次性捕获了同一波形的两个周期、您可以在此处找到时间差:

    由于信号处于高电平的时间较长、因此该周期会更长:

    当我说波形在两个不同的时间是相同的时、我的意思是方波是由 EPWM1外设生成、配置寄存器的值不会改变、但正如您在屏幕截图中看到的、我发现有时周期会发生变化。 所以在屏幕截图中、第一个周期的持续时间为500ns、第二个周期的持续时间为508ns。 主要区别在于、在第二个周期中、方波在较长的时间内处于高电平。

    谢谢!

    Simone

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

    您好、Simone、

    根据理解、配置将保持不变、但示波器上测得的输出(周期、占空比)会发生变化。

    是否确定周期和比较值从未更改? 原始示例会更改 for 循环中的占空比和周期

    此外、 如果应用已启用高分辨率周期控制(HRPCTL[HRPE]=1)、则占空比不得降至限制范围内;否则、ePWM 输出上可能存在未定义的行为。 请确保遵守最小和最大占空比限制

    谢谢

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

    您好!

    是的、我确认了您的建议。
    为了进行检查、我尝试 按如下所示修改了示例的 main、但问题仍然存在。 您可以尝试执行它以重现问题。

    float32_t periodFineCustom;
    float32_t count;
    uint32_t compCount;
    void main(void)
    {
        uint16_t i = 0;
    
        //
        // Initialize device clock and peripherals
        //
        Device_init();
    
        //
        // Disable pin locks and enable internal pull ups.
        //
        Device_initGPIO();
    
        //
        // Initialize PIE and clear PIE registers. Disables CPU interrupts.
        //
        Interrupt_initModule();
    
        //
        // Initialize the PIE vector table with pointers to the shell Interrupt
        // Service Routines (ISR).
        //
        Interrupt_initVectorTable();
    
        //
        // Calling SFO() updates the HRMSTEP register with calibrated MEP_ScaleFactor.
        // HRMSTEP must be populated with a scale factor value prior to enabling
        // high resolution period control.
        //
        while(status == SFO_INCOMPLETE)
        {
            status = SFO();
            if(status == SFO_ERROR)
            {
                error();   // SFO function returns 2 if an error occurs & # of MEP
            }              // steps/coarse step exceeds maximum of 255.
        }
    
    
    
        //
        // Disable sync(Freeze clock to PWM as well)
        //
        SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);
    
        //
        // Initialize EPWM GPIOs and change XBAR inputs from using GPIO0
        //
        Board_init();
    
        //
        // Enable sync and clock to PWM
        //
        SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);
    
        //
        // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
        //
        EINT;
        ERTM;
    
        EALLOW;
        HWREGH(myEPWM1_BASE + HRPWM_O_HRPCTL) |= 0x1;
        EDIS;
    
        periodFineCustom = 0.1f;
        count = 20.0f;
    
        compCount = (uint32_t)((count * 256.0f) + (float32_t)(periodFineCustom * 256.0f)); // Equal to 0x00001419
        HRPWM_setTimeBasePeriod(myEPWM1_BASE, compCount);
        HRPWM_setCounterCompareValue(myEPWM1_BASE, HRPWM_COUNTER_COMPARE_A, (compCount >> 1u)); // Equal to 0x000A0C00
    
    
        for(;;);
    }

    谢谢!

    Simone

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

    您好、Simone、

    我将在 本周结束时尝试同样的做法,并让你知道。
    谢谢!

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

    您好!

    很抱歉、您有任何关于此主题的新闻吗?

    谢谢!

    Simone

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

    您好、Simone、

    我还没有机会尝试一下。 我将在本周试用并返回给您。

    谢谢

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

    您好!

    很好、非常感谢。

    Simone

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

    您好、Simone、
    抱歉、我还没有尝试过您的示例

    同时、您可以尝试下载此库- e2e.ti.com/.../SFO_5F00_v8_5F00_fpu_5F00_lib_5F00_build_5F00_c28_5F00_driverlib_5F00_eabi.lib
    尝试使用针对 SFO 更新的库再次运行示例。

    谢谢

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

    您好!

    我刚刚尝试了新的库、它解决了问题。 最新版本的 C2000 Ware 中是否包含该软件? (目前、我们在项目中使用5.00.00.00)。

    非常感谢您的帮助

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

    您好、Simone、

    是的、我们将在下一个 c2000ware 版本中发布此修复程序、该版本将很快在月底发布。
    我建议始终使用最新的 c2000ware、因为我们始终在连续发布版本中更新和提供修复

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

    您好!

    还可以、明白了。

    非常感谢、祝您愉快