您好、
我们正在 使用 F2800137、在有些情况下、很难避免电源波动一段时间。 如果电源波动、内部闪存编程 将遇到错误、从而导致再次打开电源时软件无法正常执行。 请帮助了解是否有任何相关的硬件和软件解决方案?
非常感谢、
乔伊斯
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.
您好、
我们正在 使用 F2800137、在有些情况下、很难避免电源波动一段时间。 如果电源波动、内部闪存编程 将遇到错误、从而导致再次打开电源时软件无法正常执行。 请帮助了解是否有任何相关的硬件和软件解决方案?
非常感谢、
乔伊斯
Joyce,
没有解决此问题的软件解决方案。 如果功率级无法在擦除/编程(EP)操作期间提供所需的电流、则会导致编程不可靠。 这是已知的行为。 换句话说、如果器件在 E/P 期间没有电流、则可能会导致故障。 您可以在 E/P 期间探测电源引脚、以检查电压是否骤降或振铃是否过大。 解决方案有两个方面:
确保使用的 LDO (或直流/直流转换器)具有足够的裕度。 即不仅能满足 MCU 而且还能满足整个系统的稳态和瞬时功率需求。 去耦足够充分、以便在整个 E/P 运行过程中电压电平保持稳定(并在数据表限制范围内)。
您好、Hareesh。
感谢你的评分 首先、我们想补充一个详细的现象和用例:
我们设计系统在上电后将一些采样值写入闪存。 由于环境的原因、当前无法避免 LDO 波动。 在这种情况下、闪存写入将失败、再次上电后、MCU 无法再次运行。 让 MCU 再次运行的唯一方法是使用调试器再次下载程序。 对于这种现象,我们有一个问题:
为什么 MCU 在上电/外部复位后无法再次运行? 如果我们可能接受写入失败并再次通电、是否有办法让 MCU 再次独立运行、而无需使用调试器再次下载代码?
我们还有一个问题:
我们在 C2000中启用了 BOR、因此假设这样的 UVLO/欠压将触发 BOR。 在这一点上、
如果我们禁用 BOR、是否仍会导致闪存编程失败并出现同样的波动 VDD? 提出此问题是因为我们不知道闪存问题仅与 VDD 有关或与复位过程有关。
非常感谢!
乔伊斯
为什么 MCU 在上电/外部复位后无法再次运行? 如果我们可能接受写入失败并再次通电、是否有办法让 MCU 再次独立运行而不使用调试器再次下载代码?
如果在闪存 E/P 期间器件无法获得电流、则在编程失败时闪存很可能会处于损坏状态(例如、部分擦除/编程)。
我们在 C2000中启用了 BOR,因此假设这样的 UVLO/brower-out 将触发 BOR。
此处有两个问题(1) BOR 阈值可能低于 VMIN 阈值。 当电源电压低于 Vmin 时、即使在 BOR 检测开始之前、器件也已经在超出规格的条件下运行。 (2) BOR 可以在器件被部分擦除/编程后激活。
如果我们禁用 BOR,是否仍会因 VDD 的波动而导致闪存编程失败? 提出此问题是因为我们不知道闪存问题仅与 VDD 有关或与重置过程有关。
1.2V 和3.3V 电源对于正确的闪存 E/P 都至关重要。
Hareesh、谢谢您的回复。
1. 我看到了 DS 文档中关于该问题的描述:闪存编程期间发生的欠压事件可能会损坏闪存数据... 我的问题是导致闪存错误、极低的电源电压或欠压复位事件的原因是什么? 事实上、欠压电压设为2.95V、应可满足正确的闪存编程要求。 因此我想欠压复位事件导致了闪存错误、不是低电压。 请帮助进行确认。 如果欠压事件、禁用欠压功能可能是一种解决方案。 如果电源电压继续下降、POR 是否也会导致闪光错误?
2.闪光错误后,DSP 处于定期复位状态。 原因应该是闪存错误将由 ECC 校验并生成 NMI、然后 NMI 看门狗计时器触发复位。 我的问题是、ECC 校验或 NMI 是否可以禁用以使 DSP 保持运行。 此外、还有其他更好的软件方法来清除闪存错误并保持软件运行吗? 为了避免闪存错误、我使用的方法是尽可能减少闪存编程操作、并在编程之前通过软件检查电源。
对于正确的闪存编程、两件事非常重要。
如前所述、欠压阈值可能低于 Vmin。 在达到该阈值之前、器件可能已经在低于 VMIN 的电压下运行。 禁用 BOR 或 ECC 检查不是解决方案、因为您只会屏蔽问题。 正如我在第一次答复中提到的,这个问题必须添加在硬件中,而不是软件中。