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.

[参考译文] 针对 N2HET PWM 问题的权变措施

Guru**** 2484615 points
Other Parts Discussed in Thread: TMS570LS0432, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/723753/workaround-for-n2het-pwm-issue

器件型号:TMS570LS0432
主题中讨论的其他器件: HALCOGEN

大家好、

 

我研究了针对这个 HET PWM 问题的权变措施(HET 问题:如果占空比被设定为100%的话、不能停止 PWM 输出)。

下面是 HALOCGEN (v04.07.00)生成的 pwmSetDuty()函数的代码。

 

 

void pwmSetDuty (hetRAMBASE_t * hetRAM、uint32 PWM、uint32 pwmDuty)

  uint32行动;

  uint32 pwmPolarity =0U;

  uint32 pwmPeriod = hetRAM->指令[(PWM << 1U)+ 42U].Data + 128U;

  pwmPeriod = pwmPeriod >> 7U;

 

  if (hetRAM =hetRAM1)

  {

      pwmPolarity = s_het1pwmPolarity[PWM];

  }

  其他

  {

  }

  如果(pwmDuty == 0U)

  {

      操作=(pwmPolarity = 3U)? 0U:2U;

  }

  否则(pwmDuty >= 100U)

  {

      操作=(pwmPolarity = 3U)? 2U:0U;

  }

  其他

  {

      操作= pwmPolarity;

  }

 

  hetRAM->指令[(PWM << 1U)+ 41U].Control =((hetRAM->指令[(PWM << 1U)+ 41U].Control)&(~(UINT32)(0x00000018U)))|(操作<< 3U);

  hetRAM->指令[(PWM << 1U)+ 41U].Data =((pwmPeriod * pwmDuty)/100U)<< 7U)+ 128U;

 

 

在最后两行中、使用 HET 的 MOV64指令设置 PWM 占空比。

使用 MOV64指令的 ACTION = 0 (清零)或 ACTION = 2 (SET)将占空比设置为0%和100%。

 

当命令占空比为0%时、MOV64指令不能使用 ACTION = 2 (SET)将 PWM 输出切换为高电平至低电平。

因此、当命令占空比为0%时、我按照如下方式修改代码以检查 HET-RAM 中 MOV64指令的操作字段、并使用 ACTION=3 (PULSEHI)而不是 ACTION =2 (SET)。

 

 

  如果(pwmDuty == 0U)

  {

      if ((uint32)(((hetRAM->Instruction [(PWM << 1U)+ 41U].Control)&((uint32)(0x00000018U))>> 3U)== 2U)

         {

        操作= pwmPolarity;

         }

      其他

      {

          操作=(pwmPolarity = 3U)? 0U:2U;

      }

  }

 

 

我使用 TMS570LS0432 Launchpad 检查了运行情况、PWM 占空比正确从100%切换到0%。

 

 使用此变通办法时 MCU 的运行是否存在问题?

 

请 告诉我 是否有其他解决方案。

 

 

谢谢、

 

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

    感谢您与我们分享您的权变措施。 我相信、如果用户遇到与100%重复周期相同的问题、这将会对他们有利。

    此权变措施适用于通过 HALCoGen 生成的 PWM 代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Wang、

    非常感谢您的回答。