主题中讨论的其他器件:HALCOGEN、
查找两个勘误表的输入:
SYS#046:时钟源启用且时钟源有效时、时钟源开关不符合要求
HalCoGen 生成的代码在 system.c mapClock()中实现了权变措施:
/*勘误表的解决方法 SYS#46:
*
*勘误表说明:
*时钟源切换不符合时钟源使能和时钟源有效的要求
*权变措施:
*始终检查 CSDIS 寄存器以确保时钟源已打开并进行检查
* CSVSTAT 寄存器以确保时钟源有效。 然后写入 GHVSRC 以切换时钟。
*
/**-等待直到时钟锁定*/
SYS_CSVSTAT = systemREG1->CSVSTAT;
SYS_CSDIS = systemREG1->CSDIS;
while ((SYS_CSVSTAT &(SYS_CSDIS ^ 0xFFU)& 0xFFU))!=((SYS_CSDIS ^ 0xFFU)& 0xFFU)
{
SYS_CSVSTAT = systemREG1->CSVSTAT;
SYS_CSDIS = systemREG1->CSDIS;
}/*等待*/
在上面的循环中挂起的一个单元上运行。 PLL1无效、即 PLL 无法启动? 这不是在每次上电时发生的、但是可重复的。
然后找到其它勘误表:SSWF0221#45 - PLL 无法启动
此勘误表为权变措施提供了代码示例、此权变措施以较低的速率启动 PLL、然后按照 HalCoGen (即220MHz)中的定义继续配置 PLL。
SPNA233A 2016年5月2016年6月修订版在检查上电复位后将此代码放置在 sys_startup.c _c_int00 ()中:
/*检查上电复位条件*/
/*SAFETYMCUSW 139 S MR:13.7 "硬件状态位读取检查"*/
if ((SYS_EXception & powerON_RESET)!= 0U)
{
/*用户代码开始(12)*/
if (_errata_SSWF021_45_both _PLL (5)!= 0)
{
routine_TO_PUT_IN_SAFE_FAIL_STUE();
}
/*用户代码结束*/
问题:
1) 1)是否有人遇到 PLL 无法启动的问题? 如果是、您是否能够确定问题、以及是否在勘误表 SYS#046变通办法上失败?
2) 2)是否有任何解释(希望 TI 代表提供) PLL 无法启动? 如果这是 RM46x 的问题、为什么这个勘误权变措施不是由诸如 SYS#046的 HalCoGen 代码生成的?
3) 3) TI 建议对 SSWF0221#45实施变通办法、SPNA233A 可识别最多5次重试的各种重试的时序。 可以使用更多重试次数、还是建议尝试不超过5次?
我尚未尝试实施此变通办法、因为存在此问题的设备不再显示此问题、我们仍在尝试再次重现此问题。
感谢您的任何经验或建议。
Don。。