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.

epwm configure

Other Parts Discussed in Thread: TMS320F28032

Hi

     ePWM1A and ePWM2A are configured as driver signal of LLC circuit. So the driver signal should be interleaved.But the driver signal sent from DSP is overlapping sometimes.ePWM1A is configured as hight bridge driver and ePWM2A is configured as low bridge driver. PWM1 TZ1 int is configured as OCP. When OCP event occurs, the driver signal of PWM1A and PWM2A are forced to low, then it will restart .After about 20 times

of OCP,when it restarts, the driver signal is disorder.

 

DSP280x_EPwm.c
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//#########################################################
//
// FILE: DSP280x_EPwm.c
//
// TITLE: DSP280x ePWM Initialization & Support Functions.
//
//#########################################################
// Running on TMS320LF280xA
// External clock is 20MHz, PLL * 10/2 , CPU-Clock 100 MHz
// Date: from 2005/12/28 , jurgen lv
// Version:1.00 Change Date:
//#########################################################
#include "DSP280x_Device.h" // DSP280x Headerfile Include File
//---------------------------------------------------------------------------
// InitEPwm:
//---------------------------------------------------------------------------
// This function initializes the ePWM(s) to a known state.
//
void InitEPwm(void)
{
// Initialize ePWM1/2/3
InitEPwm1Gpio();
InitEPwm2Gpio();
// InitEPwm3Gpio();
InitEPwm5Gpio();
// InitTzGpio();
EALLOW;
EPwm1Regs.AQSFRC.bit.RLDCSF = 0x00; // DCDC-DRA
EPwm2Regs.AQSFRC.bit.RLDCSF = 0x00; // DCDC-DRB
EPwm5Regs.AQSFRC.bit.RLDCSF = 0x03; // for PFC
EPwm1Regs.AQCSFRC.all = 0x05; //PWM1A,PWM1B force low
EPwm2Regs.AQCSFRC.all = 0x05; //PWM2A,PWM2B force low�
EPwm5Regs.AQCSFRC.all = 0x05; //PWM3A,PWM3B force low
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // Stop all the TB clocks
/*DC AND PFC OCP TZ initial*/
//// COMP1A FOR DCOCP TZ2 FOR DCOCP EVT1 FOR OSHT
// no use TZ module
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP3OUT; // DCAH = COMP1OUT
EPwm1Regs.DCTRIPSEL.bit.DCALCOMPSEL = DC_TZ2; // DCAL = TZ2
EPwm1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI; // DCAEVT1 = DCAH high, DCAL do not care;
EPwm1Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1; // DCAEVT1 = DCAEVT1 (not filtered)
EPwm1Regs.DCACTL.bit.EVT1FRCSYNCSEL = DC_EVT_ASYNC; // Take async path
EPwm1Regs.TZSEL.bit.DCAEVT1 = 1; //Enable DCAEVT1 as one-shot-trip source for this ePWM module.
EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO; // EPWM1A will go low
// for DCDC ocp
// EPwm1Regs.TZSEL.bit.OSHT2 = TZ_ENABLE; //DCAEVT1�������� OSHT ����TZ2��
// EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
EPwm1Regs.TZCLR.all = 0x0007; //clear all TZFLAG
EPwm1Regs.TZEINT.bit.OST = 1; //enable interrupt
////// COMP1A FOR DCOCP TZ2 FOR DCOCP EVT1 FOR OSHT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX