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.

DSP28022 EPWM模块外部同步问题?



如果使用外部信号高电平来同步EPWM模块,这个外部信号高电平时间长度有没有什么要求,如果一直高电平,怎么同步?

  • EPWM计数器是一直重载还是正常计数?
  • "如果使用外部信号高电平来同步EPWM模块,这个外部信号高电平时间长度有没有什么要求,如果一直高电平,怎么同步?"
    Eric:
    外部同步信号的脉冲需要2个系统时钟。
    如果是一直高电平,那只有就没有所谓同步脉冲呀。
    同步的时候是重载。
  • 我现在使用EPWM3A产生占空比为50%频率为10K的PWM波形来充当同步信号同步EPWM2模块。结果发现同步信号上升沿的时候,EPWM2模块的确被同步,频率和EPWM3模块的频率相同。但是EPWM2A在同步信号高电平期间一直保持低电平,不受寄存器AQCTLA的控制。但是B通道没有问题。请问同步信号高电平期间为什么会影响EPWM2A的动作?我使用的芯片是TMS320F0F28022.
  • “我现在使用EPWM3A产生占空比为50%频率为10K的PWM波形来充当同步信号同步EPWM2模块。结果发现同步信号上升沿的时候,EPWM2模块的确被同步,频率和EPWM3模块的频率相同。但是EPWM2A在同步信号高电平期间一直保持低电平,不受寄存器AQCTLA的控制。但是B通道没有问题。请问同步信号高电平期间为什么会影响EPWM2A的动作?我使用的芯片是TMS320F0F28022.”
    Eric:
    你自己去对比一下同步之后的计数值和比较寄存器的值,是否是哪里不一致导致被拉低。
    同步信号只有上升沿起作用而已,高电平没啥关系。
  • 对比过的。没发现什么问题。程序中现在只有初始化PWM,其他的全部屏蔽掉了。
    使用EPWM3A作为同步信号,外部连接到GPIO16上。通过调整EPwm3Regs.CMPB的值来调节同步信号的宽度。麻烦你做实验试一下。我这边找了好多工程师测试也都是这个结果。
    配置如下:
    EALLOW;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
    GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pull-up on GPIO16 (TZ2)
    GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // Asynch input GPIO16 (TZ2)
    GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 3; // Configure GPIO16 as TZ2
    EPwm3Regs.TBPRD = 5000;//周期10K
    EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
    EPwm3Regs.TBCTL.bit.PHSEN = TB_DISABLE;
    EPwm3Regs.TBPHS.half.TBPHS = 0;
    EPwm3Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm3Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
    EPwm3Regs.TBCTL.bit.PHSDIR = 1;
    EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
    EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm3Regs.TBCTR = 0;
    EPwm3Regs.CMPA.half.CMPA = 1250;
    EPwm3Regs.CMPB = 1251;
    EPwm3Regs.AQCTLA.bit.CBU = AQ_CLEAR;
    EPwm3Regs.AQCTLA.bit.CAU = AQ_SET;
    //EPWM2配置
    EPwm2Regs.TBPRD = 10000;
    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP;
    EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE;
    EPwm2Regs.TBPHS.half.TBPHS = 0;
    EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;
    EPwm2Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE;
    EPwm2Regs.TBCTL.bit.PHSDIR = 1;
    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm2Regs.TBCTR = 0;
    EPwm2Regs.CMPA.half.CMPA = 3750;
    EPwm2Regs.AQCTLA.bit.CAU = AQ_CLEAR;
    EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET;
    EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR;
    EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET;
    EPwm2Regs.AQSFRC.bit.RLDCSF = 0x03;
    EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_TZ2;
    EPwm2Regs.TZDCSEL.bit.DCAEVT1 = TZ_DCAH_HI;
    EPwm2Regs.DCACTL.bit.EVT1SYNCE = 1;
    EPwm2Regs.DCACTL.bit.EVT1SRCSEL = DC_EVT1;
    InitEPwmGpio();
    EPwm2Regs.AQCSFRC.all = 0x00;
    SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
    EDIS;
  • 理论上来说是这样的,同步信号只在上升沿起作用,但是按照下面的配置做实验,的确是在同步信号高电平期间EPWMA引脚不起作用。麻烦帮忙看一下,谢谢。