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.
尊敬的 TI:
我已经为 TMS320F28335制作了标量控制代码、我在其中使用 了 f2833xpwm.h 驱动程序文件。 我必须对 TMS320F28379S 执行相同的操作、但无法找到任何 f2837xpwm.h 或类似文件。 请告诉我如何操作。
您好 Pratyush、
该文件位于:C:/ti/C2000/controlSUITE/device_support/F2837xS/V210/F2837xS_headers/include/F2837xS_epwm.h
如果您使用的是 controlSUITE、我只想让您知道 controlSUITE 未得到维护。 所有新器件和错误修复都在 C2000Ware SDK 中完成。 因此、我建议您在新项目中使用 C2000Ware SDK。 可从此处下载:
https://www.ti.com/tool/C2000WARE
如果您已经使用 C2000Ware SDK、则可以在以下位置找到该文件:
C:/ti/C2000/C2000Ware_4_01_00_00/device_support/f2837xs/headers/include/F2837xS_epwm.h
谢谢、此致、
桑托什
您好、Santosh、
我正在使用 f2833xpwm.h 中的 PWM_init_macro、f2803xpwm.h 中也存在此类文件类型、但 f28379s 没有此类库文件。 这是 f2833xpwm.h 的代码 f28379中是否有类似之事?
/* ================================================================================== File name : F2833xPWM.H Target : TMS320F2833x family ===================================================================================*/ #ifndef __F2833X_PWM_H__ #define __F2833X_PWM_H__ #include "f2833xbmsk.h" #include "f2833xdrvlib.h" /*---------------------------------------------------------------------------- Initialization constant for the F2833X Time-Base Control Registers for PWM Generation. Sets up the timer to run free upon emulation suspend, count up-down mode prescaler 1. ----------------------------------------------------------------------------*/ #define PWM_INIT_STATE ( FREE_RUN_FLAG + \ PRDLD_IMMEDIATE + \ TIMER_CNT_UPDN + \ HSPCLKDIV_PRESCALE_X_1 + \ CLKDIV_PRESCALE_X_1 + \ PHSDIR_CNT_UP + \ CNTLD_DISABLE ) /*---------------------------------------------------------------------------- Initialization constant for the F2833X Compare Control Register. ----------------------------------------------------------------------------*/ #define CMPCTL_INIT_STATE ( LOADAMODE_ZRO + \ LOADBMODE_ZRO + \ SHDWAMODE_SHADOW + \ SHDWBMODE_SHADOW ) /*---------------------------------------------------------------------------- Initialization constant for the F2833X Action Qualifier Output A Register. ----------------------------------------------------------------------------*/ #define AQCTLA_INIT_STATE ( CAD_SET + CAU_CLEAR ) /*---------------------------------------------------------------------------- Initialization constant for the F2833X Dead-Band Generator registers for PWM Generation. Sets up the dead band for PWM and sets up dead band values. ----------------------------------------------------------------------------*/ #define DBCTL_INIT_STATE (BP_ENABLE + POLSEL_ACTIVE_HI_CMP) #define DBCNT_INIT_STATE 200 // 200 counts = 1.33 usec (delay) (for TBCLK = SYSCLK/1) /*---------------------------------------------------------------------------- Initialization constant for the F2833X PWM Chopper Control register for PWM Generation. ----------------------------------------------------------------------------*/ #define PCCTL_INIT_STATE CHPEN_DISABLE /*---------------------------------------------------------------------------- Initialization constant for the F2833X Trip Zone Select Register ----------------------------------------------------------------------------*/ #define TZSEL_INIT_STATE DISABLE_TZSEL /*---------------------------------------------------------------------------- Initialization constant for the F2833X Trip Zone Control Register ----------------------------------------------------------------------------*/ #define TZCTL_INIT_STATE ( TZA_HI_Z + TZB_HI_Z + \ DCAEVT1_HI_Z + DCAEVT2_HI_Z + \ DCBEVT1_HI_Z + DCBEVT2_HI_Z ) /*----------------------------------------------------------------------------- Define the structure of the PWM Driver Object -----------------------------------------------------------------------------*/ typedef struct { Uint16 PeriodMax; // Parameter: PWM Half-Period in CPU clock cycles (Q0) Uint16 HalfPerMax; // Parameter: Half of PeriodMax (Q0) Uint16 Deadband; // Parameter: PWM deadband in CPU clock cycles (Q0) _iq MfuncC1; // Input: EPWM1 A&B Duty cycle ratio (Q24) _iq MfuncC2; // Input: EPWM2 A&B Duty cycle ratio (Q24) _iq MfuncC3; // Input: EPWM3 A&B Duty cycle ratio (Q24) } PWMGEN ; /*------------------------------------------------------------------------------ Default Initializers for the F2833X PWMGEN Object ------------------------------------------------------------------------------*/ #define F2833X_FC_PWM_GEN { 1000, \ 1000, \ 200, \ 0x4000, \ 0x4000, \ 0x4000, \ } #define PWMGEN_DEFAULTS F2833X_FC_PWM_GEN /*------------------------------------------------------------------------------ PWM Init & PWM Update Macro Definitions ------------------------------------------------------------------------------*/ #define PWM_INIT_MACRO(ch1,ch2,ch3,v) \ /* Setup Sync*/ \ (*ePWM[ch1]).TBCTL.bit.SYNCOSEL = 0; /* Pass through*/ \ (*ePWM[ch2]).TBCTL.bit.SYNCOSEL = 0; /* Pass through*/ \ (*ePWM[ch3]).TBCTL.bit.SYNCOSEL = 0; /* Pass through*/ \ \ /* Allow each timer to be sync'ed*/ \ (*ePWM[ch1]).TBCTL.bit.PHSEN = 1; \ (*ePWM[ch2]).TBCTL.bit.PHSEN = 1; \ (*ePWM[ch3]).TBCTL.bit.PHSEN = 1; \ \ /* Init Timer-Base Period Register for EPWM1-EPWM3*/ \ (*ePWM[ch1]).TBPRD = v.PeriodMax; \ (*ePWM[ch2]).TBPRD = v.PeriodMax; \ (*ePWM[ch3]).TBPRD = v.PeriodMax; \ \ /* Init Timer-Base Phase Register for EPWM1-EPWM3*/ \ (*ePWM[ch1]).TBPHS.half.TBPHS = 0; \ (*ePWM[ch2]).TBPHS.half.TBPHS = 0; \ (*ePWM[ch3]).TBPHS.half.TBPHS = 0; \ \ /* Init Timer-Base Control Register for EPWM1-EPWM3*/ \ (*ePWM[ch1]).TBCTL.all = PWM_INIT_STATE; \ (*ePWM[ch2]).TBCTL.all = PWM_INIT_STATE; \ (*ePWM[ch3]).TBCTL.all = PWM_INIT_STATE; \ \ /* Init Compare Control Register for EPWM1-EPWM3*/ \ (*ePWM[ch1]).CMPCTL.all = CMPCTL_INIT_STATE; \ (*ePWM[ch2]).CMPCTL.all = CMPCTL_INIT_STATE; \ (*ePWM[ch3]).CMPCTL.all = CMPCTL_INIT_STATE; \ \ /* Init Action Qualifier Output A Register for EPWM1-EPWM3*/ \ (*ePWM[ch1]).AQCTLA.all = AQCTLA_INIT_STATE; \ (*ePWM[ch2]).AQCTLA.all = AQCTLA_INIT_STATE; \ (*ePWM[ch3]).AQCTLA.all = AQCTLA_INIT_STATE; \ \ /* Init Dead-Band Generator Control Register for EPWM1-EPWM3*/ \ (*ePWM[ch1]).DBCTL.all = DBCTL_INIT_STATE; \ (*ePWM[ch2]).DBCTL.all = DBCTL_INIT_STATE; \ (*ePWM[ch3]).DBCTL.all = DBCTL_INIT_STATE; \ \ /* Init Dead-Band Generator for EPWM1-EPWM3*/ \ (*ePWM[ch1]).DBFED = v.Deadband; \ (*ePWM[ch1]).DBRED = v.Deadband; \ (*ePWM[ch2]).DBFED = v.Deadband; \ (*ePWM[ch2]).DBRED = v.Deadband; \ (*ePWM[ch3]).DBFED = v.Deadband; \ (*ePWM[ch3]).DBRED = v.Deadband; \ \ /* Init PWM Chopper Control Register for EPWM1-EPWM3*/ \ (*ePWM[ch1]).PCCTL.all = PCCTL_INIT_STATE; \ (*ePWM[ch2]).PCCTL.all = PCCTL_INIT_STATE; \ (*ePWM[ch3]).PCCTL.all = PCCTL_INIT_STATE; \ \ EALLOW; /* Enable EALLOW */ \ \ /* Init Trip Zone Select Register*/ \ (*ePWM[ch1]).TZSEL.all = TZSEL_INIT_STATE; \ (*ePWM[ch2]).TZSEL.all = TZSEL_INIT_STATE; \ (*ePWM[ch3]).TZSEL.all = TZSEL_INIT_STATE; \ \ /* Init Trip Zone Control Register*/ \ (*ePWM[ch1]).TZCTL.all = TZCTL_INIT_STATE; \ (*ePWM[ch2]).TZCTL.all = TZCTL_INIT_STATE; \ (*ePWM[ch3]).TZCTL.all = TZCTL_INIT_STATE; \ \ EDIS; /* Disable EALLOW*/ #define PWM_MACRO(ch1,ch2,ch3,v) \ \ /* Mfuncx range is (-1,1) */ \ /* The code below changes PeriodMax*Mfuncx range .... */ \ /* from (-PeriodMax,PeriodMax) to (0,PeriodMax) where HalfPerMax=PeriodMax/2 */ \ \ (*ePWM[ch1]).CMPA.half.CMPA = _IQmpy(v.HalfPerMax,v.MfuncC1)+ v.HalfPerMax; \ (*ePWM[ch2]).CMPA.half.CMPA = _IQmpy(v.HalfPerMax,v.MfuncC2)+ v.HalfPerMax; \ (*ePWM[ch3]).CMPA.half.CMPA = _IQmpy(v.HalfPerMax,v.MfuncC3)+ v.HalfPerMax; \ #endif // __F2833X_PWM_H__
您好 Pratyush、
这些宏不适用于较新的器件。 如果这是新器件、我建议使用最新的 C2000Ware、它支持所有外设的 SysConfig (基于 GUI)配置。 请看一下。