主题中讨论的其他部件: MSP430F5438A, MSP430FR5969
我们在断路器应用中使用微控制器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;