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.

[参考译文] MSP430F5437A:闪存写入时间

Guru**** 2538950 points
Other Parts Discussed in Thread: MSP430F5437A, MSP430F5438A, MSP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/575350/msp430f5437a-flash-write-time

部件号:MSP430F5437A
主题中讨论的其他部件: MSP430F5438AMSP430FR5969

我们在断路器应用中使用微控制器MSP430F5437A。 我们所观察到的是,当我们使用8MHz时钟向内部闪存写入时,大约需要64ms,在此期间,如果出现只持续30毫秒的过电流,微控制器就会错过事件。 为什么微电脑需要这么长的时间才能写入闪存? 这是典型的。 此外,在写入闪存时,微型似乎不会接受中断。 是否有一种方法可以在发生中断时停止写入事件。 还有什么方法可以将闪存写入时间减少到几毫秒。

 以下是写入闪存的现有代码

WDTCTL = WDTPW + WDTHOLD;/* Stop watch dog timer */
BIC (SFRIFG1,WDTIFG);

while ( bit( FCTL3,busy));//等待flash忙
FCTL3 = FWKEY;//解锁内存段
FCTL1 = FWKEY+ERASE_L;//设置擦除位
*flashPtr =0;//虚拟写入以擦除闪存段
while ( bit( FCTL3,busy));//等待flash忙
FCTL1 = FWKEY+WRT_L;//设置写入操作的WRT位

//将事件数据复制到闪存
memcpy (flashPtr,flashBuffer,512);
while ( bit( FCTL3,busy));/*等待闪存忙*/

//写入操作后锁定闪存
FCTL1 = FWKEY;
FCTL3 = FWKEY+LOG_L;

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

    有关典型的闪存写入和擦除时间,请参阅设备数据表中的5.43 闪存部分。 无论MCLK频率如何,这些时间都是相同的。 擦除闪存段是此处最长的,其最大值为32毫秒。 我想你正在擦除两个单独的段,然后写入它们,因为写入在微秒范围内。 当然,在写入闪存之前,您需要先擦除闪存。 需要注意的是,如果您在句段边界上书写,可能会导致额外延迟。 将您的写入内容与段边界对齐可以帮助您实现这一目的。

    您可以在闪存期间启用一个紧急退出位,该位将退出闪存写入过程。 如果在闪存写入/擦除期间确实发生退出,则内存中产生的内容可能无法预测。 有关详细信息以及如何计算写入/擦除时间的信息,请参阅用户指南的"闪存控制器"部分。

    如果您的应用属于数据记录性质,或者您需要更高的性能来存储数据,请参阅我们的MSP430 FRAM产品组合,它具有FRAM内存而不是闪存。 FRAM存储器可以写入类似RAM的数据,并在关机后再开机(如闪存)后保留数据。 它在写入前也不需要擦除,并且具有与RAM类似的耐久性。 MSP430FR5969与MSP430F5438A类似。 有关FRAM的更多信息,请参阅以下内容 :www.ti.com/.../what_is_fram.page
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Archana Sadhanala 说:
    另外,将闪存写入时间减少到几毫秒的方法有哪些。[/QUOT]

    Copy write function to RAM end从此处执行。 在8 MHz MCLK上,启用智能位的块写入可超过200 KB/sec