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.

[参考译文] RM48L940:时钟监视器测试

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/805035/rm48l940-clock-monitor-test

器件型号:RM48L940

当我运行 时钟监视器测试时,时钟失败状态寄存器永远不会被置位,因此我的测试在 while ((systemREG1->GBLSTAT 和0x1U)=0U)无限等待。 PLL 跳周测试工作正常。 我可以检查什么以确定和解决发生的情况?

/*启用时钟监控器范围检测电路*/
systemREG1->CLKTEST |= 0x03000000U;

/*备份寄存器 GHVSRC */
ghvsrc_Bk = systemREG1->GHVSRC;

/*将所有时钟域切换为 HF LPO */
systemREG1->GHVSRC = 0x05050005U;

/*禁用振荡器导致振荡器失败*/
systemREG1->CSDISSET = 0x1U;

/*等待振荡器失败标志被设定*/
/*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
while ((systemREG1->GBLSTAT 和0x1U)== 0U)
{
} /*等待*/

if ((esmREG->SR1[0U]& 0x800U)!= 0x800U)
{
自测故障通知(CHECKCLOCKMONITOR_FAIL1);
} 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试按照这篇文章 e2e.ti.com/.../666751中所述切换 VCLKASRC 和 RCLKSRC

    就像那个海报一样、它没有帮助。 测试卡在等待 GBLSTAT。 我还可以检查其他事项吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我遇到了另外两个帖子、所有这些帖子都报告了我现在看到的内容、但没有明确的解决方案。 即在时钟监控测试中、GBLSTAT 未设置为"1"。 如果此测试不起作用、则意味着硬件延迟更改、以外部监控时钟。 如果可能、我希望避免这种改变、因此请告诉我是否可以完成这项工作。

    e2e.ti.com/.../424882

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

    请检查 CPU 是否处于特权模式。
    根据 TRM、只允许在特权模式下写入 CSDISSET 寄存器。

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

     CPU 是监控器模式 b10011。 在 CSDISSET = 1后、这是时钟寄存器的内容:

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

    PLL 也需要被禁用。 使它们保持打开可防止主振荡器被禁用。 实际上、您可以禁用 LPO 以外的所有时钟源(源4和5)。 CSDISSET = 0xCF。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Sunil。 我尝试过、但 GLBSTAT 仍然未设置

    T.

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

    通过时钟源禁用寄存器特意禁用振荡器也会禁用振荡器监控、因此不会检测到故障。 产生振荡器故障的另一种方法是禁用 HF LPO、但这会导致器件挂起、因为 HF LPO 也是系统切换主振荡器驱动的所有时钟域的时钟源。

    在本例中、我们还有另一个可使用的功能。 对于 RM48x、一个器件端子、GIOB[2]、可被用来提供一个"跛行时钟"、此时钟被用作振荡器监控的基准时钟。 假设此终端在您的应用中不携带时钟信号、您可以通过启用备用跛形时钟来触发振荡器故障。 这是通过设置 CLKTEST 寄存器的位26来完成的。

    在使用此方法引起振荡器故障之前、请确保将所有时钟域切换到 HF LPO。

    /*将所有时钟域切换为 HF LPO */
    systemREG1->GHVSRC = 0x05050005U;

    /*切换到不可用的备用跛形时钟以导致示波器故障*/
    systemREG1->CLKTEST |= 0x04000000;

    /*等待振荡器失败标志被设定*/
    /*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
    while ((systemREG1->GBLSTAT 和0x1U)== 0U)

    }/*等待*/

    一旦检测到振荡器故障、您就需要执行参考手册中所述的恢复过程。

    此致、
    Sunil