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.

[参考译文] TMS320F280025:CMPSS 未检测到3.7us 的脉宽

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1127429/tms320f280025-cmpss-does-not-detect-a-pulse-width-with-3-7us

器件型号:TMS320F280025

你(们)好

我的项目使用 cmpss 模块4检测宽度为~ 3.5-3.7us 的脉冲、最大电压为3.3V、并使用以下代码

   CMPSS_enableModule (PLC_CMPSS_BASE);
   ASysCtl_selectCMPHPMUX (ASYSCTL_CMPHPMUX_SELECT_4、4U);
   CMPSS_CONFIGHighComparator (CMPSS4_base、CMPSS_INSRC_DAC);
   CMPSS_CONFIGDAC (CMPSS4_base、CMPSS_DACREF_VDAC | CMPSS_DACVAL_SYSCLK |
                   CMPSS DACSRC_Shdw);
   CMPSS_setDACValueHigh (CMPSS4_base、4000);

       //
       //配置输出信号。 CTRIPH 和 CTRIPOUTH 都将由馈送
       //异步比较器输出。
       //
   CMPSS_CONFIGOutputsHigh (CMPSS4_base、CMPSS_TRIP_ASYNC_COMP |
                           CMPSS_TRIPOUT_ASYNC_COMP|CMPSS_TRIPOUT_LATCH);

在 main.c 循环中、我使用以下代码来检查 CMPSS4的状态

           while ((CMPSS_getStatus (CMPSS4_base)& CMPSS_STS_HI_LATCHFILTOUT)!= 0U)
           {
               ;
           }

但是,CMPSS getStatus()总是返回0。 我已经做了一些测试。 如果信号为0至3.3V 并保持3.3V、则使用该功能返回1。

我的问题是、CMPSS 是否未检测到脉冲宽度在微秒方面太小

是转弯、还是我犯了个错误。

BR

HK Woo

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

    HK、

    虽然由于系统时钟周期、路径中会有一些延迟、但正确的是、我们肯定会看到检测到3.7us 脉冲。

    您能否检查 COMPSTSCLR (HSYNCCLKEN)位的状态并确保它被设定为"0"。  这会禁止 ePWM 在每个 PWM 周期自动清除锁存器。  我假设所有滤波器设置都为"0"、因此不存在来自 COMPH 的信号鉴定。

    最棒的

    Matthew

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

    你(们)好

    在 COMPSTSCLR 下找不到一个位调用 HSYNCCLKEN。 请在下面找到屏幕截图

    2.如何检查信号的滤波器鉴定。

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

    挂起、

    我错误地键入了寄存器、HSYNCCLREN 是正确的位、并且根据需要将其禁用。

    滤波器设置位于 CTRIPHFILCTL 和 CTRIPHFILCLKCTL 中。  确保所有值都为0、无需额外滤波。

    此外、我假设您的 SYSCLK 为100MHz、如果没有、请告诉我。

    最棒的

    Matthew

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

    Matthew

    您是说 HSYNCCLEREN 需要为1吗?

    请在下面找到滤波器设置屏幕截图

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

    挂起、

    不、我们希望保持 HSYNCCLKEN 为0、就像您拥有的一样。  所有滤波器设置都为0、这意味着没有对信号应用额外的滤波器。

    您能否向我发送您的时钟配置设置(PLLCR 等)

    最棒的
    Matthew

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

    请告知您如何检查。

    代码中。 我使用 SYSCTL_setClock (device_setClock_CFG);

    #define DEVICE_SETCLOCK_CFG         (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT (30)|\
                                         SYSCTL_REFDIV (2)| SYSCTL_ODIV (3)|\
                                         SYSCTL_SYSDIV (1)| SYSCTL_PLL_ENABLE |\
                                         SYSCTL_DCC_BASE_0)

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

    挂起、
    很抱歉、您还能为电路板上的外部晶振(XTAL)提供值。  

    根据上述情况,您的系统将在((Xtal/3)*(30/4))/2下运行

    无论我们在系统时钟周期中得到什么、都将决定我们可以检测到/锁存的 COMP 的脉冲宽度。

    最棒的

    Matthew

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

    20米晶振  

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

    挂起、

    因此、我们的 SYSCLK 为25MHz、这意味着锁存路径将需要一个阈值中断、即使至少有2个 SYSCLK 来锁存信号、或者2 * 40ns = 80ns。  因此、对于3.7us 事件、我们应该在这里变得非常好。

    让我让团队中的一些其他人来看看;我无法给出任何理由来说明这不应该起作用。

    最棒的

    Matthew

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

    是否有更新?

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

    挂起、

    我们是否可以尝试使用输出的锁存版本、即将异步或仅 SYNC 信号发送到 PWM 的 CTrip 路径、并监控该行为?

    我不确定这些信号的最终 CMPSS_TRIPOUT_LATCH 对于 CMPSS_CONFIGOutputsHigh 也是有效的。

    CMPSS_CONFIGOutputsHigh (CMPSS4_base、CMPSS_TRIP_ASYNC_COMP |
                               CMPSS_TRIPOUT_ASYNC_COMP|CMPSS_TRIPOUT_LATCH);

    最棒的

    Matthew

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

    结果相同

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

    Hung、

    您是否能够提供输入信号和比较器输出(CTRIPOUT)的示波器捕获? 我想确保它确实被遗漏了、而不仅仅是软件问题。

    [引用 userid="46959" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1127429/tms320f280025-cmpss-do-detect-a-pulthe-width-with -3-7US]1会使用函数返回、前提是信号为3.3V/3.3V 并保留报价。]

    您是说、对于高于 DAC 值的恒定电压、它将输出1、还是仅恒定3.3V 将产生1的输出?

    [引用 userid="46959" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/C2000-microcontrollers-forume/1127429/tms320f280025-cmpss-do-detect-a-pulthe-width-with -3-7US"] CMSS_setDACValueHigh (clock_base)、[_MP4000]

    您的应用中的4000对应于什么电压? 您似乎已将 VDAC 配置为基准电压。  

    此致、

    Marlyn