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.

[参考译文] RM44L920:强制 PLL1跳周问题

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1409630/rm44l920-forcing-pll1-slip-problem

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

工具与软件:

您好!

我在项目中遇到 PLL1滑动检测机制问题。

我想使用 checkPLL1Slip (void)函数强制 PLL1滑动。

我已经观察到该checkPLL1Slip函数正在清除 ESM 状态寄存器(SR1)中的 ESM 标志。

/*清除 ESM 标志*/
esmREG->SR1[0U]= 0x400U

这会阻止esmLowInterruptesmGroup1Notification按预期触发该功能。

void esmLowInterrupt (void)

  /*注:组1错误     */
  /* 1 至32 ->通道0 至31 *
  /* 65至96 ->通道32至63 *

  uint32 vec = esmREG->IOFFLR - 1U

/*用户代码 begin (39)*/
/*用户代码结束*/

  if (vec < 32U)/* channel 0至31 *
  {
    esmREG->SR1[0U]=(UINT32) 1U << vec
    esmGroup1通知(vec);
  }

HALCoGen 中已经全部配置好了。

任何人都可以就以下方面提供指导:

  1. 为什么该checkPLL1Slip函数可能清除 ESM 标志并阻止esmGroup1Notification对进行调用?
  2. 我如何修改此流程、这样 ESM 标志就不会过早清除、从而触发正确的中断通知?

非常感谢您提出任何建议或见解。

谢谢!

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

    尊敬的 

    这个函数"checkPLL1Slip"的用途不是创建 ESM 中断、其主要目的是强制 PLL 跳周并检查 PLL 的相应 ESM 标志是否被设置、这样、如果真正的 PLL 跳周错误发生、那么我们将正确地获得 ESM 通知。

    这就是它们在检查差异检测后清除的原因。 实际上、这不是真正的 PLL 跳周错误、这里我们只是检查 PLL 跳周的 ESM 错误位。 如果 ESM 标志未针对 PLL 跳周设置、那么我们只需调用"selftestFailNotification 函数即可在实际错误发生前指示出错误。

    因此、使用此函数、我们可以在实际错误触发前确保 PLL 差异的错误路径。

    如果您也希望触发 PLL 强制跳周的 ESM 中断通知、那么您可以创建自己的 API、而不是 HALCoGen API、在该 API 中、您可以避免清除 ESM 标志来获得针对 PLL 跳周的 ESM 中断通知。

    ——
    谢谢、此致、
    Jagadish。