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:TMS320F28377S PWM 影子模式配置

Guru**** 2468610 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1046727/tms320f28377s-tms320f28377s-pwm-shadow-mode-configuration

器件型号:TMS320F28377S

尊敬的 TI 工程师,

我   对  AQSFRC.RLDSF=0x11有一些疑问。   配置 如下 。

   此 配置的目标 似乎  使用 影子 模式。  但是 EPwm1Regs.AQSFRC.bit.RLDSF = 3 使得  影子 模式 不 起作用。

,    ?如何实现此配置

期待    您的发展方向。

	EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
	EPwm1Regs.TBCTL.bit.CLKDIV = 0;					//TBCLK = EPWMCLK
	EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;	// Symmetrical mode
	EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;			// Master module,not load timebase from TBPHS
	EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;			// load TBPRD from its shadow ,when TBCTR is 0
	EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;		//TBCTR = 0x0000, EPWMxSYNCO Synchronization Output
	EPwm1Regs.TBPRD = 6410;							// 200M / 6410.2 / 2 = 15.6KHz
	EPwm1Regs.TBPHS.bit.TBPHS = 0;						// Set Phase register to zero
	EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;		//CMPA Register Operating shadow Mode
	EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;		//CMPB Register Operating shadow Mode
	EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;	//CMPA load from shadow , on CTR=PRD
	EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD; 	//CMPB load from shadow,  on CTR=PRD
	// duty = CMPA /TBPRD
	EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;			//when the counter rising equals the active CMPA,force EPWMxA output low.
	EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;		//when the counter falling equals the active CMPA ,force EPWMxA output high.

	//EPwm1Regs.DBCTL.bit.MODE = DB_FULL_ENABLE;	// enable Dead-band module
	EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;			//EPWMxA In is the source for both falling-edge and rising-edge delay.
//	EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;	//both rising and falling edge of EPWM1A have dead band.
	EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;		// EPWMxB is inverter of EPWMxA
	
	EPwm1Regs.DBFED.all = 300;						// falling delay 2.5us
	EPwm1Regs.DBRED.all = 300;						// rising delay 2.5us

	EPwm1Regs.ETSEL.bit.INTSEL = 1;  				// EPWMx_INT interrupt active when TBCTR = 0x0000, under overflow ,INV interrupt
	EPwm1Regs.ETSEL.bit.INTEN = 1;   				// enable interrupt
	EPwm1Regs.ETPS.bit.INTPRD = 1;   				// Generate INT on first event 

	EPwm1Regs.TZSEL.bit.CBC1 = TZ_ENABLE;			// Enable TZ1 as a CBC trip source for this ePWM module,OVC
	EPwm1Regs.TZSEL.bit.OSHT2 = TZ_ENABLE;			// Enable TZ2 as a One-shot trip source for this ePWM module,BUSOV
	EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;			// Force EPWMxA to a low state
	EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO;			// Force EPWMxB to a low state
	EPwm1Regs.AQSFRC.bit.RLDCSF = 3;

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

    您好!

    我无法清楚地了解您的要求是什么。 为了清除这些内容、AQSFRC 用于软件强制事件、在这些事件中、可以在 AQSFRC 和 AQCSFRC 寄存器中配置的所需实例中将 EPWM 拉高或拉低。

    如果您尝试为 ePWM 运行正常操作、则需要使用 AQCTL 寄存器配置影子模式。

    谢谢、

    Aditya

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

    尊敬的  Aditya,

    感谢   您的回复。   代码     不是由我自己编写的。 因此、我不知道为什么 应该 像 这样配置。    在我的平均值中、,AQSFRC.RLDSF=0x11 似乎  禁用  了影子 模式。  但在     项目中可能需要,影子模式。

    ,   ?如何实现 AQSFRC.RLDSF=0x11

    期待    您的发展方向。

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

    您好、Coke、

    在影子模式下、我相信您希望在正常 PWM 操作下使用影子模式。 为此、您可以配置 CMPCTL 寄存器位。

    您共享的代码已具有影子模式配置。 您不需要执行任何额外的操作。

    	EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;		//CMPA Register Operating shadow Mode
    	EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;		//CMPB Register Operating shadow Mode
    	EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;	//CMPA load from shadow , on CTR=PRD
    	EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD; 	//CMPB load from shadow,  on CTR=PRD

    谢谢、

    Aditya

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

    尊敬的  Aditya,

     我知道   上面的配置  是正常的。  但 我   不知道     当 AQSFRC.RLDSF=0x11   未被禁止时会产生什么影响。  

    期待    您的发展方向。

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

    AQSFRC[RLDSF]寄存器配置用于软件强制操作影子模式。 当您启用软件强制影子加载时、您可以将 PWM 设置为以特定方式工作、即使用寄存器 AQCSFRC 位将 PWM 拉低、拉高或切换至每个软件强制事件。 这是一个比正常运行具有更高优先级的条件、用于特定事件运行。

    希望这对您有所帮助。

    谢谢、

    Aditya

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

    尊敬的  Aditya,

    为了方便回答这个问题、       位 RLDSF 中的2和3之间有何区别? 如何 实现‘立即加载’?

    期待    您的发展方向。

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

    请参阅 epwm.h 文件中的此说明:

    //*****************************************************************************
    //
    //! Sets up Action qualifier continuous software load mode.
    //!
    //! \param base is the base address of the EPWM module.
    //! \param mode is the mode for shadow to active load mode.
    //!
    //! This function sets up the AQCFRSC register load mode for continuous
    //! software force reload mode. The software force actions are determined by
    //! the EPWM_setActionQualifierContSWForceAction() function.
    //! Valid values for mode are:
    //!   - EPWM_AQ_SW_SH_LOAD_ON_CNTR_ZERO        - shadow mode load when counter
    //!                                               equals zero
    //!   - EPWM_AQ_SW_SH_LOAD_ON_CNTR_PERIOD      - shadow mode load when counter
    //!                                               equals period
    //!   - EPWM_AQ_SW_SH_LOAD_ON_CNTR_ZERO_PERIOD - shadow mode load when counter
    //!                                               equals zero or period
    //!   - EPWM_AQ_SW_IMMEDIATE_LOAD               - immediate mode load only
    //!
    //! \return None.
    //
    //*****************************************************************************
    static inline void
    EPWM_setActionQualifierContSWForceShadowMode(uint32_t base,
                                                 EPWM_ActionQualifierContForce mode)

    位3用于禁用影子模式(一旦发生软件强制事件、AQCSFRC 中提到的操作就会发生)。

    对于位2、一旦发生软件强制事件、该操作就会以影子方式发生、此时当 CMP 为零或 PRD 且不会立即处于 CMP 的任何值时、ePWM 被拉高、低或切换。

    当您将位配置设置为2而不是3时、会有一定的延迟。

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

    尊敬的  Aditya,

    感谢   您的回复。

                    ?表中的‘事件计数器’表示 TBCTR?它是否意味着当软件强制事件发生时,它将不起作用直到 TBCTR 等于零或周期

    期待    您的发展方向。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [    ?userid="466781" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1046727/tms320f28377s-tms320f28377s-pwm-shadow-mode-configuration/3873257 #3873257"]数据表中的‘事件计数器'表示 TBCTR [/QUERT]

    正确。

    [引用 userid="466781" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1046727/tms320f28377s-tms320f28377s-pwm-shadow-mode-configuration/3873257 #3873257"] 它 是否意味  着发生软件强制事件,它   在 TBCTR 等于 零 或 周期?之前不起作用

    没错。 这就是影子模式的概念。

    谢谢、

    Aditya