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.

[参考译文] F29H85X-PWM-EVM:SOM 链接、用于单独的 CPU

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1623573/f29h85x-som-evm-pwm-linking-for-separate-cpus

器件型号: F29H85X-EVM-EVM SOM

您好:
我有一个关于在多核 CPU 中使用 PWM 模块的问题。

我想为 CPU3 配置 PWM1 和 PWM2 模块、为 CPU1 配置 PWM5 和 PWM6。
在这两个 CPU 不同的电源电路中、都将被控制。 因此、我需要分别控制 PWM1&2 和 PWM5&6。

在 CPU3 中、我控制可变频率拓扑、因此我需要链接 PWM1&2 的 TBPRD 和 CMPx 寄存器。

同时、由于电路的电源拓扑、我想链接 CPU1 中 PWM5 和 6 的 CMPx 寄存器。

但是、我假设我为 PWM1、2、5 和 6 设置 EPWMXLINKCFG、则所有 PWM 都链接在一起。 如果我只想更改具有以下功能的 PWM1 和 PWM2 的 TBPRD 寄存器、请执行以下操作

EPWM_setTimeBasePeriod (EPWM1XLINK_BASE、PERIOD_Cnt);   

然后、PWM5 和 6 的 TBPRD 也会发生变化、我绝对不想这样做!!

如果我的假设正确、这种多核 CPU 架构不适用于控制不同的电源拓扑、至少在我的情况下是如此。

我在那里遗漏了什么吗?

请引导我。

谢谢。



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

    您好:

    下面将这篇文章交给 PWM 专家。

    此致、

    Joseph

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

    您好 Joseph、

    谢谢你。

    我也有一个与此相关的问题。

     HRPWM_isBaseValid 函数的定义如下:

    #ifdef 调试
    静态内联 bool HRPWM_isBaseValid (uint32_t base)
      return(
          ((BASE 和 BASE_ADDR_MASK)= EPWM1_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM2_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM3_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM4_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM5_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM6_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM7_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM8_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM9_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM10_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM11_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM12_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM13_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM14_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM15_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM16_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM17_BASE_FRAME (0U))||
          ((BASE 和 BASE_ADDR_MASK)== EPWM18_BASE_FRAME (0U))
         );
    }

    如图所示、没有 XLink 区域基址、例如“EPWM1XLINK_BASE"。“。 因此当我使用时  
    HRPWM_setTimeBasePeriod 函数,尽管我可以控制所有链接的 PWM 实例,但在函数内部定义的断言条件会发生。 因此、我需要禁用调试宏。
    我假设我仍然缺少内容或 SDK 中缺少内容。

    此致、

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

    您好、

    通过配置 SYSCTL 的 EPWMXLINKCFG 寄存器位、EPWM 独立模块实例可镜像到 XLink 区域。

    如果多个 EPWM 实例启用了此功能、则 EPWM 实例的 XLink 区域中的任何写入都会反映到在  EPWMXLINKCFG 寄存器位中启用了 EPWM 实例的所有其他 EPWM 实例。

    如果写入发生在各个寄存器存储器空间中、则更新仅反映在该单个 ePWM 上。 特定寄存器的特定 PWM 实例没有选择性链接。

    谢谢

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

    您好:

    因此、为了确认这一点、我们不能单独链接不同 CPU 的 PWM 模块。

    除此之外,你对我所问的第二个问题有什么评论吗?

    谢谢

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

    您好、

    如果在下面的情况下说:  

    PWM1 和 PWM3 分配给  CPU1 的 CPU3、PWM5 和 PWM6、并 为 XLink 启用所有 PWM 的 1、3、5、6。

    当写入 PWM1 寄存器时、PWM3 将仅进行 XLink'ed、它不会导致写入 PWM5 和 PWM6、因为它们被分配给 CPU3、这就是 PWM XLink 的架构方式、因此它应该适用于您的情况。 如果您有任何问题、请尝试告知我们

    CPU3
    PWM1 和 PWM2 模块用于 CPU3

    对于第二个问题、如果在 API 中未定义 XLink 库、则会导致软件错误。 现在、您可以解决该问题。

    [报价 userid=“601478" url="“ url="~“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1623573/f29h85x-som-evm-pwm-linking-for-separate-cpus/6262948 ]没有诸如“EPWM1XLINK_BASE"的“的 XLink 区域基址。 因此当我使用时  
    HRPWM_setTimeBasePeriod 函数,尽管我可以控制所有链接的 PWM 实例,但在函数内部定义的断言条件会发生。 因此、我需要禁用调试宏。
    [/报价]

    谢谢