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.

[参考译文] MSP430F5438A:IPZ

Guru**** 2581345 points
Other Parts Discussed in Thread: MSP430F5438A

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/995975/msp430f5438a-ipz

器件型号:MSP430F5438A

在 MSP430F5438A 控制器中:
当其中一个未使用的组擦除被启动时、控制器不能从其它闪存或 RAM 组执行正常执行(不可预测的行为)。
在 MSP430F5438A 控制器中是否会出现这种情况?

组擦除代码如下:

----------------------

/*清除锁定位*/
(((FCR *) FLASH_base)->FCTL3 = FWKEY;

while (true =flash_busy_status ());

/* FLASH34勘误表:擦除时不能同时访问闪存组*/
/*获取中断状态*/
interrupt_state = get_interrupt_state ();

/*禁用中断*/
disable_interrupts ();

/*由于架构问题,在处理前发出 NOP */
NOP();

/*设置 MERAS 位*/
(((FCR *) FLASH_base)->FCTL1 = FWKEY + MERAS;

/*向闪存指针写入虚拟值以启动擦除*/
*flash_ptr = 0U;

/*测试忙*/
//我们无法测试忙闪存,因为它将使控制器处于保持状态
*因为组擦除需要23-32毫秒。*/

enable_interrupts ();

/*清除 MERAS 位*/
(((FCR *) FLASH_base)->FCTL1 = FWKEY;

/*设置锁定位*/
(((FCR *) FLASH_base)->FCTL3 = FWKEY + LOCK;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ankal、

    根据系列用户指南的表7-1:

    https://www.ti.com/lit/ug/slau208q/slau208q.pdf

    在擦除一个组时、应该能够从一个不同的组执行。 但是、该器件有4个闪存错误。 FLASH34勘误表指出并行执行应该来自 RAM (而不是闪存)。  您是否检查了*。map 文件以确保您正在执行的代码位于 RAM 中?

    BR、

    Leo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    用户指南声明:每个组(特定于器件)可被单独擦除、而程序执行可在一个不同的闪存组中进行。

    在上面的特定于器件的陈述中- MSP430F5438A 是其中的一部分?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ankal、

    如果您查看 MSP430F5438A 的勘误表:

    https://www.ti.com/lit/er/slaz290ab

    您将看到一个名为 FLASH34的勘误表。 针对这个已知问题的权变措施是在擦除闪存(而不是闪存)时从 RAM 执行。

    BR、
    Leo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    FLASH34: 组擦除期间的并发闪存读取失败

    正确、如果我的以下理解不正确、请回答

    当闪存组擦除正在进行时、仍然可以从其他组和 RAM 执行代码。

    在我之前的帖子中、我共享了组擦除代码。 您在其中看到了任何问题吗?

    请注意看门狗保持禁用状态。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ankal、

    否、从其他银行执行将不起作用。 这就是勘误表 FLASH34指出的。 如果您需要一个用于擦除(和写入此器件的闪存)的代码示例、您可以在此处找到一个:

    https://dev.ti.com/tirex/explore/node?node=AC95S-BGqegOP7DQlR3zyw__IOGqZri__LATEST&search=msp430f5438a

    BR、
    Leo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    闪存中
    银行 A 和 B:用于应用软件
    C 组和 D 组:用于记录应用软件故障。
    当 C 和 D 组满故障记录时、我们将启动 C 组擦除、并与之并行执行 A 组、B 组和 RAM 中的代码执行。
    我们无法保持 CPU、直到组 C 擦除完成、因为这需要~30ms。

    那么、在 MSP430F5438A 中:当闪存组 C 擦除正在进行时、无法从闪存组 A、B 和 RAM 执行代码?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ankal、

    我不希望在擦除 Bank C 时从 Bank A/B 执行

    BR、
    Leo