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.

[参考译文] LAUNCHXL-F280049C:无法通过 SW 驱动器清除 CMPSSn 数字滤波器锁存事件 A1/B1。

Guru**** 2467740 points
Other Parts Discussed in Thread: C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1480608/launchxl-f280049c-unable-to-clear-cmpssn-digital-filter-latched-events-a1-b1-via-sw-drivers

器件型号:LAUNCHXL-F280049C
Thread 中讨论的其他器件:C2000WARE

工具与软件:

Hello group 存在 CMPSS 行为类似问题、请帮忙!  

非常奇怪的情况是、C2000Ware 驱动程序库调用无法清除数字滤波器的输出锁存(CTRIPH/CTRIPL)  

为什么可以清除 CMPSSn 数字锁存器切换寄存器 CMPSSCLR 锁存器(CTRIPH/CTRIPL)位 CCS 调试寄存器视图、而不是通过库软件调用?

看似清除信号需要三个 SYSCLK 周期来清除这两个高侧低直流滤波器锁存器。 下面的 while 环路代码应该位触发锁存器清除位、对吧?

调用两个驱动程序库调用的奇怪应用不对清除数字滤波器锁存位执行任何操作。

还在设置 PWM 驱动、PWM 故障、PWM 启用、禁用调用的几个函数下方添加了锁存清除代码。  

    for (cnt = 0; cnt < 3; cnt++);
    {
        EALLOW;
        // SW Reset comparator digital filter output H/L latch status
        while(HWREGH(hobj->cmpssHandle[cnt] + CMPSS_O_COMPSTS) &= (not==) CMPSS_COMPSTS_COMPHLATCH)
        {
            CMPSS_clearFilterLatchHigh(hobj->cmpssHandle[cnt]);
            //DEVICE_DELAY_US(1);
        }
        //
        while(HWREGH(hobj->cmpssHandle[cnt] + CMPSS_O_COMPSTS) &= (not==) CMPSS_COMPSTS_COMPLLATCH)
        {
            CMPSS_clearFilterLatchLow(hobj->cmpssHandle[cnt]);
            //DEVICE_DELAY_US(1);
        }
        EDIS;
    }
 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    似乎上面显示的图16-1不是 CMPSS 模块的真正配置。 调试寄存器视图证明了这一点、即直流滤波器输出上确实存在(Q/D)锁存器、并且状态位(CMPSTS:CMPHLATCH/CMPLLATCH )未连接到 Q 输出、因为图16-1表示仅存在 Q 输出。 直流滤波器锁存状态未连接到 Q 输出或连接或门输入、否则 C20000Ware 调用可以清除以下显示的锁存器。 想了解禁用直流滤波器是否有任何差异、当 Q LATCH 状态显示0x1时、应设置状态位。

    但是、只有在调试寄存器视图中、才能(手动)清除 DALL/H 直流滤波器锁存 Q 输出、例如 H/L-LATCHCLR 位字段设置为0x1。 此外、启用 EPWM 模块 DH/L_EventsA1/B1-H/L (启用 EPWM 直流同步、返回至 CMPSSnH/L)并没有帮助、因为可以解决此问题。 CMPSSn 模块直流滤波器输出锁存器中似乎有一个无文档记载的勘误表、或者这些图是不正确的。

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果我正确理解您的查询、您将尝试手动清除锁存器。 但使用 CMPSS 设计时、清除此锁存的最常见方法是在 ePWM 模块的每个周期直接从 EPWMSYNCPER 输出、如果使用 PWM 的消隐窗口、则通过 EPWMBLANK 信号输出。 您是否使用独立于通常提供锁存清零信号的 ePWM 模块的 CMPSS?

    此致、

    Peter

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    您是否使用独立于通常提供锁存清除信号的 ePWM 模块的 CMPSS?

    否  

    如果我正确理解您的查询、您尝试手动清除 latch

    更正 一次启用禁用 PWM 事件标志的调用将清除 DC1A/1B 事件 DACH/L 锁存器。 奇怪地取决于 PWM Xbar 多路复用器的配置方式。 当前 PWM 组合或通过多路复用器(2/3 6/7、10/11)置位单次触发 DC1A/B 事件动作限定器、在操作员发生故障跳变或延迟时间 SW 调用后由 SW 调用清除。  当从 PWM 启用 SYNC 以清除 CMPSS DAC_H/L 锁存状态时、它们保持高电平非常奇怪、请勿置位跳闸区操作限定符(PWM-A/B 输出高阻抗)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    似乎我在上面的清除程序循环假设只有一个标志被触发进入 while 清除循环。 直接调用以清除 CMPSS 过滤器锁存让我在疯狂的鹅追逐,因为这在几个地方不起作用,它被添加。 状态寄存器会在 while loop required (&& NOT =)中进行检查、以验证为清除高电平和低电平锁存器而启用的任何单个状态标志。