部件号: MPC5746C(电源架构 Z4,SDK:NXP MPC57xx 平台 SDK)
在 115°C 环境温度下进行热室测试时,我们基于 MPC5746C 的板在启动时完全无响应——没有任何 UART 控制台输出,并且在该温度下每次启动尝试都会发生这种情况。冷却后该部件似乎完全恢复:在室温下重新刷写/重启即可恢复正常运行,且不会造成永久性损坏。
有趣的是,即使电路板温度高达 115°C,我们仍然可以通过 PEMicro JTAG 调试探针成功地对闪存进行重新编程——我们通过在高温下刷入版本字符串递增的构建版本,并在冷却后读取新版本,证实了这一点。因此,调试探测闪存路径在 115°C 下工作;只有应用程序启动路径挂起/处于错误状态。
手册上说MCU可以承受高达125°C的温度。
请问您能否帮我们找出问题的根本原因以及如何解决这个问题?
你好,
手册上说MCU可以承受高达125°C的温度。
是的,这不是问题。
请问您能否帮我们找出问题的根本原因以及如何解决这个问题?
由于这是你的定制板,而且问题在冷却后消失,我怀疑:
1. 时钟启动问题(可能性最高)
在 115°C 时:
调试器仍然可以访问该部分,因为调试逻辑使用自己的基础架构,并不依赖于应用程序是否执行到 main() 函数。
FXOSC 状态位
CMU时钟监测故障
仅 FIRC 启动实验
完全通过 FIRC 运行,并暂时禁用外部晶振。
JTAG编程在115°C下仍能正常工作,这有力地表明核心基础设施仍然运行正常,故障发生在应用程序启动路径的早期阶段,而不是闪存阵列本身。
顺祝商祺!
Peter
感谢@petervlna的真知灼见。
随后,我和我的同事@mnargund进行了进一步调查,我们成功地让 MPC5746C 在 115°C 下启动。以下是我们发现的结果总结。
根本原因:在预初始化期间,我们配置系统启动 FIRC、FXOSC 和 PLL,然后将系统时钟从 FIRC 切换到 PLL。随后,我们触发了向 DRUN 模式的模式转换(尽管系统默认已处于 DRUN 模式,但如手册中所述,需要转换到相同模式才能使新配置生效),并轮询 MC_ME_GS.MTRANS 以等待转换完成。
然而,即使在 MC_ME_GS.MTRANS 清除之后,代码仍然出现 IVOR1 异常,这可能表明在执行继续进行时,转换尚未完全稳定。在高温(115°C)下,转变似乎比在室温下需要更长时间,导致系统在执行下一条指令时处于不一致的状态。
已采取的变通方法:我们在 MC_ME_GS.MTRANS 轮询之后、在继续执行其余初始化操作之前插入了一个显式的软件延迟。延迟 500 毫秒,在 115°C 下启动始终成功。我们还测试了 100 毫秒的延迟,在我们的设置中也能可靠地工作。
在初始化过程中,是否存在一个可以安全插入的最大推荐软件延迟?
在高达 125°C 的整个工作温度范围内,是否有推荐的做法来确保时钟稳定可靠?