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.

[参考译文] TMS320F28379D:在峰值电流模式控制中也缺少跳闸事件

Guru**** 2595805 points
Other Parts Discussed in Thread: TMS320F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1074161/tms320f28379d-also-missing-trip-events-in-peak-current-mode-control

部件号:TMS320F28379D

上一个线程的标题为“TMS320F28379D:峰值电流控制模式下错过的 CMpss 事件”
线程中问题的解决方法不明确。 峰值控制器使我获得了大约30个无界电流脉冲。 这一问题相对较少。 它大约每2小时发生一次,同时对整个系统应用瞬变。
TI 有一份文档“SPRZ422I”。 在本文档第36页上,它涉及到这个问题,但我们无法理解它作为解决方案所提供的内容。

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

    您好,

    您能否提供您所遇到问题的更多详细信息?

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

    比较器设置为峰值电流模式控制。 有时电流会远远超过比较器设置,而不会终止占空比。 结果,我们的能源输送量太大。

    我真的希望能够安排一个会议。 这是一个迫切的问题,需要专家援助。

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

    除了我之前的评论外- SPRZ422I 文档 提供了针对 COMPHSTS 和 PWMSYNC 之间比赛条件的3种变通办法。 目前尚不清楚如何在代码中实现这些变通办法中的任何一种。 我们需要一些帮助来了解如何实现这些变通办法。

    请注意,我们需要一种通过会议进行交互式工作的途径。 我们确实有一个非常紧迫的问题需要解决。

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

    您好,维托,

    我看了你提到的文档。 勘误表中的问题 是闩锁在预期时间点未被清除。 但是,您的案例似乎在达到 CMPSS 阈值时不会发生比较事件。 因此,我不太确定这是否 是根本原因。  

    您还提到,这个问题非常罕见,但只在嘈杂的环境中发生?

    在瞬态期间(问题发生时),您是否能够提供关键 PWM 的波形和反馈电流信号?

    您是否可以通过配置 PWM 和 CMSRSS 来绘制一张图片? CMPSS 是否也已重置?

    是否使用了消隐?  

    此致,

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

    绿色轨迹是馈入 CMPIN1P 的信号。 这是我们的主要潮流。 刻度为1V = 40A。 您可以看到电压在 DACREF (即 VDDA)上运行良好。 我们对 VDDA 应用3.3V。 我们不设置 SELREF。 默认值为0,因此 DACREF 应该是 VDDA。

    我们正在使用 TI 宏来执行数学——该宏称为“CNTL_2P2Z_CLA_C”。该宏要求用户为数学的最大输出输入值。

    在我们的代码中,它被输入为“coeff1.Max =.8;”

    我们将其乘以(216–1)并将其加载到 RAMPMAXREFS 中。

    根据 SPRUHX5G 第1649页的图12-5,该值除以24,然后传输到 DACHVALA。

    然后,根据 SPRUHX5G 第1647页的图12-3,该值作为电压传输到 DACOUTH。 该电压的值应遵循方程式12-4,方程式结果为2.64V。 我想,这种情况恰好是3.3中的0.8,这并不是巧合。

    无论如何,无论您使用哪种数学,DACOUTH 都不可能大于3.3V。 正如您所看到的,CMPIN1P 的水平远远高于这一水平。

     

    为供参考,蓝线是次输出电压。

     

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

    修正...

    我在其中写道“我们将其乘以(216 –1)并将其加载到 RAMPMAXREFS 中。

     应该... “我们将最大值为0.8的宏输出乘以 (216 –1),然后将其加载到 RAMPMAXREFS 中”

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

    请查看今天之前的两份回复。

    我具有以下 CMPSSS 和 PWM 配置设置。 您还要求重置 CMPSS。 我不知道你的意思是什么。

    CPMSS 配置…

    (从文件 Peripheral_CNF)

    Cmpss1Regs.COMPCTL.bit.COMPDACE =1;       //本地通电比较器

    Cmpss1Regs.COMPCTL.bit.CTRIPHSEL =3;      //3数字滤波器的锁定输出驱动器 CTRIPH//2数字输出

    Cmpss1Regs.COMPCTL.bit.COMPHINV =0;       //比较器输出通过

    Cmpss1Regs.COMPCTL.bit.ASYNCHEN = 0;                //要重置锁存的 PWMSYNC 路径已启用

    Cmpss1Regs.COMPDACCTL.bit.DACSOURCE =1;   // DACsrc;// 0 - DACHVALA 从 DACHVALS 更新;// 1 -内部斜坡

    Cmpss1Regs.COMPDACCTL.bit.RAMPSOURCE = 11; //RAMPsrc;// 0 - PMW1;1- PWM2 ...依此类推

    Cmpss1Regs.RAMPDECVALS =40;

    EPwm12Regs.HRPCTL.Bit.PWMSYNCSEL = 1;      //在 CTR 生成 PWM 同步= ZRO 以同步内部斜坡

    Cmpss1Regs.CTRIPHFILCTL.bit.FILINIT = 1;

    Cmpss1Regs.CTRIPHFILCTL.bit.thrh = 3;

    Cmpss1Regs.CTRIPHFILCTL.bit.SAMPWIN = 5;

    Cmpss1Regs.COMPSTSCLR.bit.HSYNCCLREN = 1;           // PWMSYNC 将重置锁扣

      

    注意:Cmpss1Regs.COMPCTL.bit.COMPHSOURCE 未在代码 Default (默认值)中设置,因此正在使用斜坡发生器和 DAC。

           Cmpss1Regs.COMPCTL.bit.CTRIPOUTSEL 未在代码中设置。 默认值为0。

           Cmpss1Regs.COMPDACCTL.bit.SELREF 未在代码中设置。 默认值为0

          Cmpss1Regs.COMPDACCTL.bit。 RAMPLOADSEL 未在代码中设置。 默认值为0

          Cmpss1Regs.COMPDACCTL.bit.SWLOADSEL 未在代码中设置。 默认值为0

          Cmpss1Regs.COMPDACCTL.bit.FREESOFT 未在代码中设置。 默认值为0

          Cmpss1Regs.COMPHYSCTL.bit.COMPHYS 未在代码中设置。 默认值为0

     

     

    PWM 配置

     

    EPwm1Regs.TBPRD = 300;

    CpuSysRegs.PCLKCR0.bit.HRPWM = 1;

    EPwm1Regs.TBCTL.bit.PRDLD = 0;                //设置阴影负载

    EPwm1Regs.TBPHS.ALL = 0;

    EPwm1Regs.TBCTR = 0;

    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_updown;

    EPwm1Regs.TBCTL.bit.PHSEN = 1;// TB_disable;

    EPwm1Regs.TBCTL.bit.SYNCOSEL =1;           //用于同步 ePWM(2-7)“下流”

    EPwm1Regs.TBCTL.Bit.HSPPCLKDIV = TB_DIV1;

    EPwm1Regs.TBCTL.Bit.CLKDIV = TB_DIV1;

     

          //计数器比较子模块寄存器

    EPwm1Regs.CMPCTL.Bit.SHDWAMODE = 0;//CC_Immediate;

    EPwm1Regs.CMPCTL.Bit.SHDWBMODE = 0;//CC_Immediate;

          //操作限定符子模块寄存器

    EPwm1Regs.AQCTLA.Bit.ZRO = AQ_SET;

    EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;

     

          //死区控制寄存器

    EPwm1Regs.DBCTL.bit.out 模式= DB_FUL_ENABLE;

    EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;                  //活动可用性

     

    EPwm1Regs.DBRED.All = PS_DT;//PS_DT_R1;//40,20;                               //初始值

    EPwm1Regs.DBFED.all = PS_DT;//PS_DT_F1;//40,20;                               //初始值

     

    EPwm12Regs.TBPRD = 299;  //

    EPwm12正则 TBPHS.Bit.tbPHS =5;

    EPwm12Regs.TBCTR = 0;

    EPwm12Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;

    EPwm12Regs.TBCTL.bit.PHSEN = TB_ENABLE;

    EPwm12Regs.TBCTL.bit.PHSDIR = TB_UP;

    EPwm12注册器.tbctl.bit.hspcLKDIV = TB_DIV1;

    EPwm12注册器.tbctl.bit.CLKDIV = TB_DIV1;

    EPwm12Regs.TBCTL.bit.SYNCOSEL = 1;//TB_SYNC_In;     //同步“流过”模式

     

          //计数器比较子模块寄存器

    EPwm12注册码.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;

    EPwm12注册码.CMPCTL.Bit.SHDWAMODE = 0;//CC_Immediate;

     

          =========================================================================

      //根据比较器1输出定义事件(DCAEVT1)

    EPwm12Regs.DCTRIPSEL.Bit.DCAHCOMPSEL = 3;// DCAH = Trip4比较器1输出

    EPwm12Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI;            // DCAEVT1 = DCAH HIGH (将作为活动状态)

    EPwm12注册器.DCACTL.Bit.EVT2SRCSEL = DC_EVT_FLT;          // DCAEVT1 = DC_EVT_FLT (已过滤)

    EPwm12Regs.DCACTL.Bit.EVT2FRCSYNCSEL = DC_EVT_Async;    //采用异步路径

          //启用 DCAEVT1作为单触发源

    EPwm12Regs.TZSEL.Bit.DCAEVT2 = 1;                       // CBC /启用单次触发

          //基于同一触发事件的同步机制的以下代码- COMPxOUT

    EPwm12Regs.DCACTL.Bit.EVT1SYNCE =1;                //已启用同步

     

          // ADC SOC 生成

          =========================================================================

          //PWM 外部同步配置

     

    InputXbarRegs.INPUT5SELECT =17;        //将源中的 PWM 同步设置为 GPIO17

    InputXbarRegs.INPUT12SELECT =17;       //将 eCAP6源设置为 GPIO17

    GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 0;       // GPIO17 = GPIO

    GpioCtrlRegs.GPADIR.bit.GPIO17 = 0;       // GPIO17 =输入

    GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0;       //启用内部上拉

      

    EPwm12Regs.HRPCTL.Bit.PWMSYNCSEL = 1;      //在 CTR 生成 PWM 同步= ZRO 以同步内部斜坡

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

    您好,维托,

    很抱歉耽误你的回答。  

    我没有看到 PWM 波形和反馈信号。 所以我认为 PWM 没有响应,对吗? (仅供确认)

    如果您能告诉我 PWM 的外观,这将非常有帮助。 它是否已关闭并快速重新打开? 或者在这段时间里它总是打开的。

    你在第一次答复中的计算对我来说是有意义的。 但这并不能解释当2.64设置为最大参考值时 PWM 为何不响应

    我将看看您发布的代码。

    此致,

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

    我没有捕获 PWM 信号。 全负荷循环时的高电流表明 PWM 信号正在完全倾斜。 请花些时间查看我在星期五已经提供的信息。 如果您认为设置正确,请告诉我。

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

    您好,维托,

    您可以查看下面的主题

    https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/967421/tms320f280049-pcmc-for-psfb-topology-abnormal-ctripouth-signal

    此外,您还可以尝试在 CMPSs 中使用数字滤波器和滞后功能,以查看是否可以消除此问题。

    此致,

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

    感谢你的回复。

    我们的目的是使用同步模式和数字滤波器,正如您要求我复习的线程所暗示的那样。 我希望您可以查看我之前发送的比较器和 PWM 设置,看看您是否同意它们是合适的。 TI 确实要求我提供这些信息。 我假设 TI 的某人会考虑他们所要求的。

    如果 TI 没有资源来审查这一问题,我会理解,但请让我了解您的计划。

    或者,如果 TI 不能花时间审查他们所要求的信息,我希望 TI 能提供一个能够更具交互作用的第三方联系人。

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

    峰值 CMC 的外围配置相当复杂,最佳策略是按块验证。

    在这种情况下,您是否曾尝试观察比较器的原始输出? 您可以通过输出 XBAR 将比较器的输出(CTRIPOUTH/L)输出到 GPIO 引脚。 但请记住,CTRIPOUTH/L 信号不一定与 CTRIPH/L 信号相同(这些信号可以通过 PWM XBAR 路由到 ePWM)。 确保使用相同的 mux 设置设置 CTRIPH/L 和 CTRIPOUTH/L。