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 的 TMS320F28377SPTPT 问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/958657/tms320f28377s-tms320f28377sptpt-problem-with-pwm

器件型号:TMS320F28377S

您好!

我们遇到了微控制器 TMS320F28377S 中的 PWM 问题。 逆变器中的微控制器控制 IGBT 模块、对于两个生产系列、此产品没有任何问题。 但在第三个系列中、逆变器开始发出一些奇怪的声音。 经过一些调查、我发现微控制器会生成错误的 PWM。 PWM 看起来像是 PWM 寄存器内部的比较器、在一个周期内忽略条件、并在下一个周期内关闭输出。

这种问题在恒定占空比(例如50%)下也会出现、因此不是一些数字问题。 在初始化后、仅设置一次占空比并用于主循环。 影响的只有一个因素是从 CMPA 到 CMPB 的开关计数器比较。  下面是初始化。对于 SWaP Boost = 1、正常、但对于 SWaP Boost = 0。

空 boostPwmConfig (空)

EALLOW;
CpuSysRegs.PCLKCR2.bit.EPWM7 = 0x01;
EPwm7Regs.TBPRD = TBPRD_16kHz;
EPwm7Regs.CMPA.bit.CMPA = 0;
EPwm7Regs.CMPB.BIT.CMPB = 0;//比较 B = 500 TBCLK 计数
EPwm7Regs.TBPHS.ALL = 0;//将相位寄存器设置为零
EPwm7Regs.TBCTR = 0;//清除 TB 计数器
EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称
//EPwm7Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
EPwm7Regs.TBCTL.bit.PHSEN = TB_ENABLE;//启用相位加载
EPwm7Regs.TBCTL.bit.PHSDIR = TB_UP;
EPwm7Regs.TBCTL.bit.PRDLD = TB_SHADOW;
EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
EPwm7Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLKOUT
EPwm7Regs.TBCTL.bit.CLKDIV = TB_DIV1;
ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0;//
EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
EPwm7Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm7Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
EPwm7Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;
EPwm7Regs.TZFRC.bit.OST = 1;
#ifdef swap_boost

EPwm7Regs.AQCTLA.bit.CBU = AQ_SET;
EPwm7Regs.AQCTLA.bit.CBD = AQ_CLEAR;
EPwm7Regs.AQCTLB.bit.CAU = AQ_SET;
EPwm7Regs.AQCTLB.bit.CAD = AQ_CLEAR;
EPwm7Regs.DBCTL.bit.OUTSWAP=交换;
其他
EPwm7Regs.AQCTLA.bit.CAU = AQ_SET;
EPwm7Regs.AQCTLA.bit.CAD = AQ_CLEAR;
EPwm7Regs.AQCTLB.bit.CBU = AQ_SET;
EPwm7Regs.AQCTLB.bit.CBD = AQ_CLEAR;
EPwm7Regs.DBCTL.bit.OUTSWAP=NO_SWAP;
#endif
GpioCtrlRegs.GPAMUX1.bit.GPIO12=1;
GpioCtrlRegs.GPADIR.bit.GPIO12=1;
GpioCtrlRegs.GPAMUX1.bit.GPIO13=1;
GpioCtrlRegs.GPADIR.bit.GPIO13 = 1;

我还检查了所有板载电源、都可以。

这种现象仅发生在生产编号为4C-96AZKNW G44C-96C2GKW G4的微控制器中。 在从散射系列中为另一个微控制器重新供电后、未出现此问题。 每个微控制器的一个 PWM 中都存在问题、但不同的器件会出现不同的 PWM 输出问题、例如、一个器件上的 PWM7A 和 PWM7B、另一个器件上的 PWM6A 和 PWM6B。

导致此行为的原因可能是什么? 微控制器中存在缺陷? 焊接工艺过热? 可能有些初始化错误?

也许我还可以检查更多内容吗?

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

    澄清一下、

    这适用于您:

    EPwm7Regs.AQCTLA.bit.CBU = AQ_SET;
    EPwm7Regs.AQCTLA.bit.CBD = AQ_CLEAR;
    EPwm7Regs.AQCTLB.bit.CAU = AQ_SET;
    EPwm7Regs.AQCTLB.bit.CAD = AQW7Regs.AQSW1.AQSW1.bit.ADC1; EPwm7REG1.AQSW1.AQSWLAG.REG1.AQ1AQSWLAG.REG1.bit
    

    但是、以下代码不起作用:

    EPwm7Regs.AQCTLA.bit.CAU = AQ_SET;
    EPwm7Regs.AQCTLA.bit.CAD = AQ_CLEAR;
    EPwm7Regs.AQCTLB.bit.CBU = AQ_SET;
    EPwm7Regs.AQCTLB.bit.CBD = AQW7Regs.AQSW1.AQSWLAG.0
    ;EPwm7REG.DBT.OREG0.AP 

    NIMA

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

    感谢您的回答! 我为程序员提供了指导、所以他会检查这个。

    我还在下面上传了波形。

    图例:绿色 PWM7A、蓝色 PWM7B、紫色输出电压、黄色输出电流

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

    谢谢、我们将等待您的反馈!

    NIMA

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

    好的、我从程序员那里得到了答案、我也检查了两次。

    原始寄存器声明如下所示:

    EALLOW;
       CpuSysRegs.PCLKCR2.bit.EPWM7 = 0x01;

       EPwm7Regs.TBPRD = TBPRD_16kHz;
       EPwm7Regs.CMPA.bit.CMPA = 0;
       EPwm7Regs.CMPB.BIT.CMPB = 0;//比较 B = 500 TBCLK 计数
       EPwm7Regs.TBPHS.ALL = 0;//将相位寄存器设置为零
       EPwm7Regs.TBCTR = 0;//清除 TB 计数器
       EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//对称

       //EPwm7Regs.TBCTL.bit.PHSEN = TB_DISABLE;//相位加载被禁用
       EPwm7Regs.TBCTL.bit.PHSEN = TB_ENABLE;//启用相位加载
       EPwm7Regs.TBCTL.bit.PHSDIR = TB_UP;

       EPwm7Regs.TBCTL.bit.PRDLD = TB_SHADOW;
       EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;
       EPwm7Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;// TBCLK = SYSCLKOUT
       EPwm7Regs.TBCTL.bit.CLKDIV = TB_DIV1;
       ClkCfgRegs.PERCLKDIVSEL.BIT.EPWMCLKDIV = 0;//
       EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
       EPwm7Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
       EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;// CTR 上的负载=零
       EPwm7Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;// CTR 上的负载=零
       EPwm7Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;
       EPwm7Regs.AQCTLA.bit.CAU = AQ_SET;
       EPwm7Regs.AQCTLA.bit.CAD = AQ_CLEAR;
       EPwm7Regs.AQCTLB.bit.CBU = AQ_SET;
       EPwm7Regs.AQCTLB.bit.CBD = AQ_CLEAR;

       GpioCtrlRegs.GPAMUX1.bit.GPIO12=1;
       GpioCtrlRegs.GPADIR.bit.GPIO12=1;

       GpioCtrlRegs.GPAMUX1.bit.GPIO13=1;
       GpioCtrlRegs.GPADIR.bit.GPIO13 = 1;

    此设置对于我们的两个系列产品来说非常完美。 在第三个系列中、使用相同的组件、相同的电路板布局布线、但使用不同的微控制器生产编号、所述的问题已经开始。 因此、在检查之后、程序员发现、略有不同的声明问题消失了。 下面的代码可帮助您指定遇到 PWM7问题的器件、在本例中、它会有所帮助。

    EPwm7Regs.AQCTLA.bit.CBU = AQ_SET;
    EPwm7Regs.AQCTLA.bit.CBD = AQ_CLEAR;
    EPwm7Regs.AQCTLB.bit.CAU = AQ_SET;
    EPwm7Regs.AQCTLB.bit.CAD = AQ_CLEAR;
    EPwm7Regs.DBCTL.bit.OUTSWAP=交换;

    遗憾的是、这不能解决问题、因为在散射器件上、它可能是散射 PWM 问题、例如 PWM7或 PWM8等 我们不知道为什么具有相同程序代码的微控制器行为不正确、而以前情况良好。

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

    您的配置看起来正确、不应导致任何问题。 您能否确保设置其余的 AQ 事件?

    0 ->无操作(或 相应操作)
    PRD -> 无操作(或相应的操作)
    AQCTLA 和 AQCTLB 的 CAU/CAD/CBD/CAD -> 无操作(或相应操作)

    我希望所有调整数咨委会的事件都能明确地反映他们的非法行为。  

    这是一个奇怪的问题、我无法重现、因此我们必须在他们的板上进行确定。

    NIMA

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

    我已向您发送了完整的初始化。 除了占空比外、在整个代码中不再设置 PWM7寄存器。
    也许问题是寄存器的默认设置以及与之相关的可能危险?

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

    这些设置没有问题。 让我们执行一些操作。 您能否将故障场景代码作为压缩的 CCS 项目发送? 生成错误的项目的完整代码。 我可以在我的多个板上尝试它。 如果我无法重新创建问题、那么我们需要一个客户电路板。

    那么、我们是否可以压缩一个示例 CCS 项目、以便我可以首先在电路板上对其进行测试、并查看是否存在除 EPWM 设置之外的其他任何可能导致此问题的因素?

    NIMA

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

    问题可能出在 GPIO 设置中、可能是电路板上出现了意外情况。 但是、下一步是让我拥有完整的 CCS 项目、以便我可以尝试。

    NIMA

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

    Piotr、

    在哪里可以为我打包完整代码?

    NIMA

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

    是的、当然、我可以向您发送完整的项目。 遗憾的是、代码是机密的、因此我会将该软件包放在公司的下拉框中。 是否可以在此处发送私人消息?

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

    是的、请通过 E2E 向我发送友谊请求、我可以与您分享我的电子邮件。 但我主要是问 GPIO/ePWM 初始化示例项目、它重现了您的问题。 不是您的机密代码。

    NIMA

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

    Piotr、

    我尚未收到 E2E 上的友谊请求、因此我可以向您发送我的电子邮件。

    NIMA

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

    Piotr?