你(们)好。
我正在尝试通过 SPI 从另一个处理器升级我的 MSP430。 MSP 主代码检测升级请求并开始执行一些在 RAM 中运行的升级代码。
升级代码首先执行批量擦除、然后通过 SPI 接收升级负载、并每次写入一个闪存段。
有时、MSP430会在批量擦除期间复位、从而有效地对其进行编程。
在执行升级代码之前将 MSP 置于低功耗模式可解决此问题。
在批量擦除引起的复位期间、我探测了 MSP430 3.3V 电源、并且没有发现任何不规则情况、导致复位的原因是什么?
谢谢、
田
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.
你(们)好。
我正在尝试通过 SPI 从另一个处理器升级我的 MSP430。 MSP 主代码检测升级请求并开始执行一些在 RAM 中运行的升级代码。
升级代码首先执行批量擦除、然后通过 SPI 接收升级负载、并每次写入一个闪存段。
有时、MSP430会在批量擦除期间复位、从而有效地对其进行编程。
在执行升级代码之前将 MSP 置于低功耗模式可解决此问题。
在批量擦除引起的复位期间、我探测了 MSP430 3.3V 电源、并且没有发现任何不规则情况、导致复位的原因是什么?
谢谢、
田
是的、我已经尝试过、MSP 仍然会复位。
下面是我的批量擦除代码的一个片段:
//在批量擦除前将 MSP 设置为 LPM 可防止复位
//_bis_SR_register (LPM4_bits + GIE);
_disable_interrupt ();
//检查忙位
while (FCTL3 & Busy){}
//解锁闪存并设置为批量擦除
FCTL3 = FWKEY;
FCTL1 = FWKEY + MERAS + ERASE;
__data20_write_char (0x5c00、0);
//检查忙位
while (FCTL3 & Busy){}
//设置锁定位
FCTL3 = FWKEY + LOCK;
_enable_interrupt ();