主题中讨论的其他器件:TMS570LC4357
您好!
我尝试在 RM57/TMS570LC4357上从 TI 安全库执行时钟监控测试、但未获得预期结果。
它永远不会在 GBLSTAT 寄存器或 ESM 中获得振荡器故障标志。 根据 CSDISSET 和 CSTATUS、振荡器被禁用。 该测试是否需要在初始化任何外设之前运行、因为技术参考指出、在没有活动耗电元件之前、不会禁用时钟。
代码:
void checkClockMonitor (void)
{
uint32_t ghvsrc_bk;
/*启用时钟监控器范围检测电路*/
systemREG1->CLKTEST |= 0x03000000U;
/*备份寄存器 GHVSRC */
ghvsrc_Bk = systemREG1->GHVSRC;
/*将所有时钟域切换为 HF LPO */
systemREG1->GHVSRC = 0x05050005U;
/*禁用振荡器导致振荡器失败*/
systemREG1->CSDISSET = 0x1U;
/*等待振荡器失败标志被设定*/
while ((systemREG1->GBLSTAT 和0x1U)== 0U)
{
} /*等待,永远不会通过这个点*/
if ((esmREG->SR1[0U]& 0x800U)!= 0x800U)
{
health 策略(platform_error、test_error_clock_monitor);
}
其他
{
/*清除 ESM 标志*/
esmREG->SR1[0U]= 0x800U;
/*禁用时钟监控器范围检测电路*/
systemREG1->CLKTEST &=~(0x03000000U);
/*启用振荡器*/
systemREG1->CSDISCLR = 0x1U;
/*等待振荡器被启用*/
/*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
while ((systemREG1->CSVSTAT & 0x3U)== 0U)
{
} /*等待*/
/*清除振荡器故障标志和 PLL 转差标志(如果有)*/
systemREG1->GBLSTAT = 0x301U;
/*切换回所有时钟域*/
systemREG1->GHVSRC = ghvsrc_Bk;
}
}
谢谢!