ZHCU032K December 2004 – August 2022 MSP430AFE221 , MSP430AFE222 , MSP430AFE223 , MSP430AFE231 , MSP430AFE232 , MSP430AFE233 , MSP430AFE251 , MSP430AFE252 , MSP430AFE253 , MSP430F2001 , MSP430F2002 , MSP430F2003 , MSP430F2011 , MSP430F2012 , MSP430F2013 , MSP430F2101 , MSP430F2111 , MSP430F2112 , MSP430F2121 , MSP430F2122 , MSP430F2131 , MSP430F2132 , MSP430F2132-EP , MSP430F2232 , MSP430F2234 , MSP430F2252 , MSP430F2252-Q1 , MSP430F2254 , MSP430F2272 , MSP430F2272-Q1 , MSP430F2274 , MSP430F2274-EP , MSP430F233 , MSP430F2330 , MSP430F235 , MSP430F2350 , MSP430F2370 , MSP430F2410 , MSP430F2416 , MSP430F2417 , MSP430F2418 , MSP430F2419 , MSP430F247 , MSP430F2471 , MSP430F248 , MSP430F2481 , MSP430F249 , MSP430F2491 , MSP430F2616 , MSP430F2617 , MSP430F2618 , MSP430F2619 , MSP430G2001 , MSP430G2101 , MSP430G2102 , MSP430G2111 , MSP430G2112 , MSP430G2121 , MSP430G2131 , MSP430G2132 , MSP430G2152 , MSP430G2153 , MSP430G2201 , MSP430G2201-Q1 , MSP430G2202 , MSP430G2203 , MSP430G2210 , MSP430G2211 , MSP430G2212 , MSP430G2213 , MSP430G2221 , MSP430G2230 , MSP430G2231 , MSP430G2231-Q1 , MSP430G2232 , MSP430G2233 , MSP430G2252 , MSP430G2253 , MSP430G2302 , MSP430G2303 , MSP430G2312 , MSP430G2313 , MSP430G2332 , MSP430G2333 , MSP430G2352 , MSP430G2353 , MSP430G2402 , MSP430G2403 , MSP430G2412 , MSP430G2413 , MSP430G2432 , MSP430G2433 , MSP430G2444 , MSP430G2452 , MSP430G2453 , MSP430G2513 , MSP430G2533 , MSP430G2544 , MSP430G2553 , MSP430G2744 , MSP430G2755 , MSP430G2855 , MSP430G2955 , MSP430TCH5E
当从 RAM 启动任何写入或任何擦除操作并且 BUSY = 1 时,CPU 可能不会对任何闪存位置进行读取或写入。否则,会导致访问违例,ACCVIFG 被置位,并且结果不可预计。此外,如果在 WRT = 0 的情况下尝试对闪存进行写入,则会设置 ACCVIFG 中断标志,闪存不受影响。
当从闪存中启动字节或字写入或任何擦除操作时,闪存控制器会在下次指令提取时将操作码 03FFFh 返回至 CPU。操作码 03FFFh 是 JMP PC 指令。这使得 CPU 循环执行,直到闪存操作被完成。当操作完成且 BUSY = 0 时,闪存控制器允许 CPU 提取适当的操作码并且恢复程序执行。
表 7-3 列出了 BUSY = 1 时的闪存访问条件。
闪存操作 | 闪存存取 | WAIT | 结果 |
---|---|---|---|
任何擦除或者 字节或字写入 | 读取 | 0 | ACCVIFG = 0。03FFFh 是被读取的值。 |
写入 | 0 | ACCVIFG = 1。写入被忽略。 | |
取指令 | 0 | ACCVIFG = 0。CPU 取 03FFFh。这条是 JMP PC指令。 | |
块写入 | 任一 | 0 | ACCVIFG=1,LOCK=1 |
读取 | 1 | ACCVIFG = 0。03FFFh 是被读取的值。 | |
写入 | 1 | ACCVIFG = 0。被写入。 | |
取指令 | 1 | ACCVIFG=1,LOCK=1 |
在 EEI = 0 和 EEIEX = 0 时以及在不存在 EEI 和 EEIEX 的 MSP430x20xx 和 MSP430G2xx 器件上,在任何闪存操作期间都会自动禁用中断。闪存操作完成后,会自动重新启用中断。操作期间发生的任何中断都会设置其相关标志,并在重新启用时生成中断请求。
当 EEIEX = 1 和 GIE = 1 时,中断会立即中止任何闪存操作并设置 FAIL 标志。当 EEI = 1、GIE = 1 并且 EEIEX = 0 时,每经过 32 个 fFTG 个周期,一个挂起的中断就会中断一个段擦除。为中断提供服务后,段擦除将持续至少 32 个 fFTG 周期或直到其完成。在中断服务期间,BUSY 位保持置位,但 CPU 可以访问闪存而不会发生访问冲突。不支持嵌套中断,也不支持在中断服务例程中使用 RETI 指令。
必须在闪存擦除周期之前禁用看门狗计时器(在看门狗模式下)。复位会中止擦除,结果是不可预测的。擦除周期完成后,可以再次启用看门狗。