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:有关 ePWM 模块中 CSFA 和 CSFB 的一些问题

Guru**** 2442930 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1016437/tms320f28377s-some-questions-about-csfa-and-csfb-in-epwm-module

器件型号:TMS320F28377S

尊敬的 TI 工程师:

我对 AQCSFRC 寄存器中的 CSFA 和 CSFB 有一些疑问。 当 CSFA 或 CSFB 等于0或3时、数据表中写入的"软件强制被禁用且无效"。  

这是否意味着 AQSFRC 寄存器设置的详细信息不起作用? 此时 、电压电平(0或1)取决于什么?

期待您的回复、非常感谢!

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

    有人在这里吗?

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

    您好、Coke、

    当 CSFA 和/或 CSFB 等于0或3时、ePWM 输出将不会被动作限定符强制进入特定状态、并且不会发生持续的软件强制。  如果是这种情况、则输出由操作限定符(AQCTL 寄存器)和其他 ePWM 子模块(如死区)中配置的操作确定。

    此致、

    Marlyn

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

    您好!

    Marlyn、感谢您的回答。  

    现在、我将学习 三相逆变器。 如果我使用 EPwm1来控制两电平拓扑中的一个桥臂、我将 epwm1A 和 epwm1B 配置 为反向。

    当机器关闭时、程序仅将 CSFA 设置为1、将 DBCTL.bit.out_mode 设置为0。 我不知道他们为什么不将 CSFB 设置为1。 即使是第一种方式、也可能始终关闭开关管。

    那么、我缺少什么呢?  

    期待您的回复、非常感谢!

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

    您好、Coke、

    我需要详细了解 EPWMxA 和 EPWMxB 是如何配置的、您是否可以附加配置代码?

    此致、

    Marlyn

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

    您好!

    Marlyn、这是代码。

    ClkCfgRegs.PERCLKDIVSEL.bit.EPWMCLKDIV = 0;		// EPWMCLK =  PLLSYSCLK
    
    	EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;
    	EPwm1Regs.TBCTL.bit.CLKDIV = 0;					
    	EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;	
    	EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;			
    	EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;			
    	EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;		
    	EPwm1Regs.TBPRD = 6410;							
    	EPwm1Regs.TBPHS.bit.TBPHS = 0;						
    	EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;		
    	EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;		
    	EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD;	
    	EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD; 	
    	// duty = CMPA /TBPRD
    	EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;			
    	EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;		
    
    	//EPwm1Regs.DBCTL.bit.MODE = DB_FULL_ENABLE;	
    	EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;			
    	EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;	
    	EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;		
    	EPwm1Regs.DBFED.all = 300;						
    	EPwm1Regs.DBRED.all = 300;						
    
    	EPwm1Regs.ETSEL.bit.INTSEL = 1;  				
    	EPwm1Regs.ETSEL.bit.INTEN = 1;   				
    	EPwm1Regs.ETPS.bit.INTPRD = 1;   				
    
    	EPwm1Regs.TZSEL.bit.CBC1 = TZ_ENABLE;			
    	EPwm1Regs.TZSEL.bit.OSHT2 = TZ_ENABLE;			
    	EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;			
    	EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO;			
    	EPwm1Regs.AQSFRC.bit.RLDCSF = 3;				
    
    
    	EPwm2Regs.TBCTL.bit.HSPCLKDIV = 0;
    	EPwm2Regs.TBCTL.bit.CLKDIV = 0;						
    	EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;	
    	EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;			
    	EPwm2Regs.TBCTL.bit.PHSDIR = TB_UP;				
    	EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;			
    	EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;		
    	EPwm2Regs.TBPRD = 6410;							
    	EPwm2Regs.TBPHS.bit.TBPHS = 0;					
    	EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;		
    	EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;		
    	EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_PRD; 	
    	EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_PRD; 	
    	EPwm2Regs.AQCTLA.bit.CAU = AQ_SET;			        
    	EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;				
    	//EPwm2Regs.DBCTL.bit.MODE = DB_FULL_ENABLE;
    	EPwm2Regs.DBCTL.bit.IN_MODE = DBA_ALL;			
    	EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;	
    	EPwm2Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;		
    	EPwm2Regs.DBFED.all = 300;						
    	EPwm2Regs.DBRED.all = 300;						
    	
    	EPwm2Regs.ETSEL.bit.INTSEL = 2;  				
    	EPwm2Regs.ETSEL.bit.INTEN = 1;   				
    	EPwm2Regs.ETPS.bit.INTPRD = 1;   				 
    
    	EPwm2Regs.TZSEL.bit.CBC1 = TZ_ENABLE;			
    	EPwm2Regs.TZSEL.bit.OSHT2 = TZ_ENABLE;			
    	EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO;			
    	EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO;			
    	EPwm2Regs.AQSFRC.bit.RLDCSF = 3;				

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

    您好、Coke、

    关闭机器时是否发生跳闸事件? TZA 和 TSB 均配置为使 EPWMxA 和 EPWMxB 变为低电平。

    此外、我看不到仅为 EPWMxB 配置的任何操作 EPWMxA (AQCTLA)、是否配置了该操作、其他位置?

    此致、

    Marlyn

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

    您好!

    Marlyn、当机器要关闭时、将运行以下代码。

                                EPwm1Regs.AQCSFRC.bit.CSFA = 1;EPwm1Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;\
    							EPwm2Regs.AQCSFRC.bit.CSFA = 1;EPwm2Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;\
    							EPwm3Regs.AQCSFRC.bit.CSFA = 1;EPwm3Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;\
    							EPwm4Regs.AQCSFRC.bit.CSFA = 1;EPwm4Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;\
    							EPwm5Regs.AQCSFRC.bit.CSFA = 1;EPwm5Regs.DBCTL.bit.OUT_MODE = DB_DISABLE;\
    							EPwm6Regs.AQCSFRC.bit.CSFA = 1;EPwm6Regs.DBCTL.bit.OUT_MODE = DB_DISABLE

    我认为、当机器正常关闭时、不会发生任何跳闸事件。

    TZA 和 TXB 也可以配置为0 (高阻抗)、结果不受影响。 它只会影响 DSP 初始状态。当机器想要工作时、将运行以下代码。

                             	EPwm1Regs.AQCSFRC.bit.CSFA = 0;EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;\
    							EPwm2Regs.AQCSFRC.bit.CSFA = 0;EPwm2Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;\
    							EPwm3Regs.AQCSFRC.bit.CSFA = 0;EPwm3Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;\
    							EPwm4Regs.AQCSFRC.bit.CSFA = 0;EPwm4Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;\
    							EPwm5Regs.AQCSFRC.bit.CSFA = 0;EPwm5Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;\
    							EPwm6Regs.AQCSFRC.bit.CSFA = 0;EPwm6Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE

    EPWMA 和 EPWMB 配置为关联。 我看不到  AQCTLB 的配置位置。 当我将 DSP 连接到 CCS 时、我可以读取   EPWM1和 EPWM2的 AQCTLB 配置为0、AQCTLB2配置为5。

    那么、您还想了解其他信息吗?

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

    高焦炭、  

    只需将 AQCSFRC 寄存器的 CSFA 位置位、而不是 CSFB 的原因是 EPWMxB 已经为低电平。  

    提供更多上下文:EPWMxA 通过操作限定符配置为在 CAU 事件上设置、在 CAD 事件上清除。 EPWMxB 未配置为改变状态。 但是、死区子模块配置为利用动作限定器子模块的 EPWMxA 输出作为 EPWMxA 和 EPWMxB 的输入(这通过 IN_MODE 位实现)。 请参阅下图、其中我根据您提供的代码突出显示了路径。 一旦 DBCTL 寄存器的 OUT_MODE 位设置为禁用、死区子模块之后的 EPWMxB 输出应与动作限定符子模块的 EPWMxB 输出相同(始终为低电平)。 然后、CSFA 位将 EPWMxA 驱动为低电平、从而使两个输出都为低电平。

    此致、

    Marlyn

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

    您好!

    Marlyn、感谢您的解释。