怎样使用28069的内部模拟比较器的输出,来产生ePWM模块的同步信号。
下面是我相关部分的代码:
比较器部分:
EALLOW;
SysCtrlRegs.PCLKCR0.bit.ADCENCLK = 1;
// (*Device_cal)();
AdcRegs.ADCCTL1.bit.ADCPWDN = 1;
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1;
DELAY_US(1000);
SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK=1;
AdcRegs.ADCCTL1.bit.VREFLOCONV=1;
Comp1Regs.COMPCTL.bit.COMPDACEN = 1; // 使能比较器
Comp1Regs.COMPCTL.bit.SYNCSEL = 0; // 异步输出
Comp1Regs.COMPCTL.bit.QUALSEL = 0; // 窗口滤波
Comp1Regs.COMPCTL.bit.CMPINV = 0; // 反转输出
Comp1Regs.COMPCTL.bit.COMPSOURCE = 0; // comp1b(+)连接到内部DAC
Comp1Regs.DACCTL.bit.DACSOURCE = 0;
Comp1Regs.DACVAL.bit.DACVAL = 465; // 1.5V
EDIS;
ePWM模块部分:
EALLOW;
EPwm1Regs.TBPRD = 60000; // Set timer period
EPwm1Regs.TBPHS.all = 0; // Phase is 0
EPwm1Regs.TBCTR = 0;
// Setup TBCLK
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up
EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE; // when sync comes, TBCTR=TBPHS
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // These bits select the source of the EPWMxSYNCO signal. 0 means EPWMxSYNC
// TB_SYNC_IN=0
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0 ; // Clock ratio to SYSCLKOUT
EPwm1Regs.TBCTL.bit.CLKDIV = 0;
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
// Setup compare
EPwm1Regs.CMPA.half.CMPA = 50; // 40/8*(10^7) = 500ns
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET; // Set PWM1A on CAU 当CTR=0时,强制EPWM1A输出高电平
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; // 当CTR=CMPA且计数器CTR增计数时,强制EPWM1A输出低电平
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; // enable Dead-band module 用于EPWMxA输出上升沿延迟及EPWMxB输出下降沿延迟的死区均被使能。
// 延迟输入信号由DBCTL[IN_MODE]字段决定,默认EPWMxA作为下降沿与上升沿延迟的输入源。
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; // Active Hi complementary 高电平互补(AHC)模式:EPWMxB反向。
EPwm1Regs.DBRED = 4; // 上升沿延迟计数器(这是一个10位的计数器)
EPwm1Regs.DBFED = 14; // 下降沿延迟计数器(这是一个10位的计数器)
EPwm1Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT; // DCAH = Comparator 1 output DCAH的电平高低由比较器1的输出决定
EPwm1Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI;
EPwm1Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1; //
EPwm1Regs.DCACTL.bit.EVT1SYNCE = 1; //
EDIS;
我将COMP1比较器的反相输入端配置为DAC输入,正相输入端为外部模拟引脚输入。当我在正相输入一个高电平的时候,没有产生ePWM1的同步信号。
我想问一下,
1、ePWM的DC模块产生的DCAEVT1.sync 信号是CBC还是OSHT的?
2、比较器输出 怎样触发DCAEVT1.sync 这个信号?我上面的配置方法是正确的吗?
3、如第二个图所示,DCAEVT1.sync不需要其他配置,只要产生了,就可以让ePWM同步吗?

