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.

[参考译文] TMS320F280049:在 ePWM 模块之间同时写入 TBPRD 和 CMPx 寄存器

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/745273/tms320f280049-simultaneous-writes-to-tbprd-and-cmpx-registers-between-epwm-modules

器件型号:TMS320F280049

尊敬的专家:

          当我配置    "ePWM 2模块"中寄存器"EPWMXLINK "中"TBPRDLINK"和"CMPALINK"以及"CMPALINK"的位区域 以链接到 EPWM2时。 我发现它不起作用。 代码如下所示。

/******** /
/*ePWM 模块2配置到 LLC PRI 2驱动程序*/
/******** /

EPwm2Regs.EPWMXLINK.BIT.TBPRDLINK = 0;
EPwm2Regs.EPWMXLINK.BIT.CMPALINK = 0;
EPwm2Regs.EPWMXLINK.BIT.CMPBLINK = 0;

EPwm2Regs.GLDCTL=0xMOLD.TMPREG=1
;EPwCMDL.TCLK.BIT
EPwm2Regs.GLDCTL.bit.GLDPRD=0x00;
EPwm2Regs.GLDCTL.bit.GLDMODE=0x03;

EPwm2Regs.GLDCFG.bit.TBPRD_TBPRDHR=1;
EPwm2Regs.GLDCFG.bit.DBRED=1;EPw2REDLDREGLDREGHR=1
;EPwLDFLDREDP.DBRDE.DBRF.BLDREGHR=1
EPwm2Regs.GLDCFG.bit.DBCTL=1;
EPwm2Regs.GLDCFG.bit.CMPAHR=1;
EPwm2Regs.GLDCFG.bit.CMPB_CMPBHR=1;
EPwm2Regs.GLDCFG.bit.CMPC=1;EPwm2Regs.CMP=1
;EPwLDCMPB.CMP=1;EPwMCLG.CMP=1

EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW; /*设置影子加载*/
EPwm2Regs.TBCTL2.bit.PRDLDSYNC= 01; /*?TBCTR=0 SYNC OCCURS 如果需要大延迟,必须为负载添加同步点*/
EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; /*? 递增计数模式*/
EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; /*启用相位加载*/
EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN; /*同步输出选择:TB_SYNC_IN */
EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; /* TBCLK = EPWMCLK /(HSPCLKDIV x CLKDIV)*
EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1; /* = 100MHz /(1*1)= 100MHz */
EPwm2Regs.TBCTL.bit.PHSDIR=0;

EPwm2Regs.TBPRD = LLC_PWM_PER_DFT;/* PWM 频率= 60kHz */
EPwm2Regs.CMPA.bit.CMPA = LLC_PWM_Duty_DFT;//将 PWM 占空比设置为50%*/
EPwm2Regs.CMPB.bit.CMPB = LLC_PWM_Duty_DFT;//0;

EPwm2Regs.TBPHS.bit.TBPHS = 00; /*设置为从器件、PHASE = 0 */
EPwm2Regs.TBCTR = 0; /*时基计数器=0 */

EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // CTR=PRD 上的加载*/
EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO; // CTR=PRD 上的加载*/
EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE; /*阴影模式。 用作双缓冲器。 *
EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; /*阴影模式。 用作双缓冲器。 *
EPwm2Regs.CMPCTL.bit.LOADASINC=1;/**/
EPwm2Regs.CMPCTL.bit.LOADBSYNC=1;

//EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; /*将 PWM2A 设置为零*/
//EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; /*在事件 A 上清除 PWM2A、向上计数*/
// EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; /*将 PWM2B 设置为零*/
// EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR; /*清除事件 B 上的 PWM2B,向上计数*/

EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; /*将 PWM1A 设置为零*/
EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR; /*在事件 A 上清除 PWM1A、向上计数*//EPwm2Regs.AQCTLA.bit.PRD
=AQ_CLEAR;
//EPwm2Regs.AQCTLA.bit.CAD =AQ_SET;

EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; /*将 PWM1B 设置为零*/
// EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR; /*清除事件 B 上的 PWM1B、向上计数*//EPwm2Regs.AQCTLB.bit.PRD
=AQ_SET;
EPwm2Regs.AQCTLB.bit.CAD =AQ_CLEAR;

EPwm2Regs.AQSFRC.bit.RLDSF = 3; /*软件强制事件出现时,立即加载*/

EPwm2Regs.DBCTL.bit.IN_MODE = DBA_RED_DBB_FED; /* EPWMxA 是两种延迟的来源*/
EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE; /*启用死区模块*/
EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; /*高电平有效互补(AHC)*//
EPwm2Regs.DBCTL.bit.OUTSWAP = 3; /*交换输出 AQA-EPWMB*/
EPwm2Regs.DBCTL.bit.SHDWDBREDMODE = 1; /*启用 DB*/的影子模式
EPwm2Regs.DBCTL.bit.LOADREMODE = 1; /*在 prd*/上加载阴影
EPwm2Regs.DBCTL.bit.SHDWDBFEDMODE = 1; /*启用 DB*/的影子模式
EPwm2Regs.DBCTL.bit.LOADFEDMODE = 1; /*在 prd*/上加载阴影

EPwm2Regs.DBRED.bit.DBRED = LLC_INIT_DEADBAND;//最初为30 TBCLK */
EPwm2Regs.DBFED.bit.DBFED = LLC_INIT_DEADBAND;//最初馈送= 30 TBCLK */

EPwm2Regs.AQCSFRC.bit.CSFA = 00; /*禁用 EPWM2B 输出*/
EPwm2Regs.AQCSFRC.bit.CSFB =00; /*禁用 EPWM2A 输出*/ 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    已为您的帖子指派了一位专家、并将解答您的问题。

    在论坛上发布代码时、请使用标记的代码格式工具 按钮。 此工具可通过单击回复菜单右下角的"插入代码、附加文件等"链接找到。 代码格式器工具允许轻松读取代码、并可帮助您更快地在论坛上获得支持。 我修改了您之前的帖子、以反映该工具的使用情况。

    此致、
    标记
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在上面的代码中、您将配置 EPWM2模块以使用 EPWM1模块的 TBPRD、CMPA 和 CMPB 中的值。 将其视为具有主寄存器的 EPWM1、如果写入该寄存器、将更改 EPWM2s 寄存器。

    您正在尝试实现什么目标?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的用户:

    我刚刚编写了一些代码来链接两个 ePWM 模块、并使它们生成相同的输出。 请遵循以下代码并根据需要进行修改。

    e2e.ti.com/.../2770270

    NIMA