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.

TMS320F28035: COMP比较器

Part Number: TMS320F28035


看上面图应该是在COMPSTS置1处,RAMPSTS会载入RAMPMAXREF值,但是调试的现象是COMP置1后,RAMPSTS会保持计数到的值不变,到下一个PWMSYNC到来之后继续计数,

    EALLOW;
    // 比较器和DAC使能;
    Comp1Regs.COMPCTL.bit.COMPDACEN = 1;

    Comp1Regs.RAMPMAXREF_SHDW = 0xfff0;
    Comp1Regs.RAMPDECVAL_SHDW = 0x0100;

    // 0:COMP-链接内部DAC模块  1:链接外部引脚
    Comp1Regs.COMPCTL.bit.COMPSOURCE = 0;

    // 1:内部DAC:由 RAMPSTS 寄存器控制;  0:DAC由 DACVAL 寄存器控制
    Comp1Regs.DACCTL.bit.DACSOURCE = 1;

    //PWMSYNC1 is the source sync    RAMPSOURCE+1
    Comp1Regs.DACCTL.bit.RAMPSOURCE = 0;

    Comp1Regs.DACCTL.bit.FREE_SOFT =0;

    // Synchronized value of comparator is passed through
    Comp1Regs.COMPCTL.bit.QUALSEL = 5;

    //0:Asynchronous version of Comparator output is passed
    //1:Synchronous version of Comparator output is passed
    Comp1Regs.COMPCTL.bit.SYNCSEL=0;

    // 输出信号反转;COMP+>COMP-,输出高电平;反之,输出低;
    Comp1Regs.COMPCTL.bit.CMPINV = 0;

    EDIS;

希望大佬帮忙给看看是哪配置的问题

  • 你好,抱歉对这个模块不太熟悉,我会将你的问题升级到英文E2E,有回复会更新到这边。

  • 目前还没回复,还请耐心等待

  • 我没有看到附加配置有任何问题。你提到“RAMPSTS会保持计数到的值不变”,你的意思是没有看到它进入 RAMPMAXREF 值?此外,当它对下一个 PWMSYNC 进行计数时,它会重置为 RAMPMAXREF 并开始计数,还是继续从前一个值开始计数?

    是否可以在 PWMSYNC 脉冲旁边检查比较器的输出?对于 PWMSYNC 脉冲,可以只监控相应的 EPWM 输出。HRPCTL 寄存器的 PWMSYNCSEL 位设置为什么?默认情况下,PWMSYNC 由 TBCTR = PRD 脉冲生成。如果是这种情况,请在 TBCTR=PRD 时执行 AQ 操作。可以在 TBCTR=PRD 时切换输出。如果你无法更改配置,可以使用相同的时基设置设置另一个 EPWM 模块,并在一个范围内监控该 EPWM 模块。

  • 对,没看到进入RAMPMAXREF值,在COMPSTS变为1后,继续单步运行,RAMPSTS会保持之前计数到的值,COMPSTS也一直保持1;不像图上标识的那样,RAMPSTS在COMPSTS上升沿,置为RAMPMAXREF,COMPSTS也在几个系统周期之后置为0;

    配置

    EPwm1Regs.HRPCTL.bit.PWMSYNCSEL=0;


    PWMSYNC在TBCTR=PRD时生成

    有的时候是在下一个PWMSYNC,RAMPSTS继续从上一个计数到的值下降。有的时候是从RAMPMAXREF开始计数;


    由TBCTR=ZRO时AQ,改为TBCTR=PRD时AQ现象一样。


    另外对于您说的这两句话
    是否可以在 PWMSYNC 脉冲旁边检查比较器的输出?
    如果你无法更改配置,可以使用相同的时基设置设置另一个 EPWM 模块,并在一个范围内监控该 EPWM 模块。
    不太理解

  • 收到,已经反馈过去了

  • 在COMPSTS变为1后,继续单步运行,RAMPSTS会保持之前计数到的值,COMPSTS也一直保持1;

    之后COMPSTS总是1吗?我想知道单步操作是否会影响行为。能否看一下正常运行应用程序,并在启用“Continuous Refresh”的情况下监视表达式窗口,并查看COMPSTS是否更改?

    由TBCTR=ZRO时AQ,改为TBCTR=PRD时AQ现象一样。

    这里的意思其实是,我希望看到一个范围内的输出,如果 (EPwm1Regs.HRPCTL.bit.PWMSYNCSEL=0;) 那么我希望看到一个示波器捕获,其中清楚地指示 TBCTR=PRD 事件以及比较器输出。 可以设置 AQ 操作以在 TBCTR=PRD 时切换输出并检查示波器上的 EPWMxA。

    在同一范围捕获中,监视comp1输出。如果COMPSTS始终为1,我们应该检查范围中的comp1以确认此行为。