主题中讨论的其他器件:MSP430G2553、
您好!
我们正在使用为 TRF7970A 和 MSP430G2553提供的参考固件、此外、我们还开发了一个安装了这些 IC 的定制板。
我们的问题是、我们正在尝试将标记 UUID 的详细信息存储在 MSP 的信息段中。 首先、我们单独测试了程序的闪存擦除/写入部分、它工作正常。
但是、当尝试将该程序与 TRF7970A 的参考固件相结合时、我们发现闪存写入是根据需要进行的。 在少数电路板中、它会损坏数据、而在少数电路板中、它是正确的。
我们试图找到、但目前还不能找到。 请帮助解决此问题。
TIA。
下面是我们正在使用的闪存写入代码:
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//闪存擦除
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
空 FlashErase (uint8_t *地址)
{
_disable_interrupt ();//禁用中断。 否则、这很重要、
//可能发生中断时正在进行闪存操作
//系统崩溃。
while (Busy & FCTL3);//检查是否正在使用闪存
FCTL2 = FWKEY + FSSEL_1 + FN3;// Clk = SMCLK/4
FCTL1 = FWKEY + ERASE;//设置擦除位
FCTL3 = FWKEY;//清除锁定位
*addr = 0;//虚拟写入来擦除闪存段
while (Busy & FCTL3);//检查是否正在使用闪存
FCTL1 = FWKEY;//清除 WRT 位
FCTL3 = FWKEY + LOCK;//设置 LOCK 位
_enable_interrupt ();
}
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//闪存写入
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
void FlashWrite (uint8_t *地址、uint8_t *值、uint8_t 大小)
{
_disable_interrupt ();
FCTL2 = FWKEY + FSSEL_1 + FN0;// Clk = SMCLK/4
FCTL3 = FWKEY;//清除锁定位
FCTL1 = FWKEY + WRT;//为写入操作设置 WRT 位
uint8_t ui8LoopCount;
对于(ui8LoopCount = 0;ui8LoopCount < size;ui8LoopCount++)
{
*(addr + ui8LoopCount)= Value[ui8LoopCount];//将值复制到闪存
}
FCTL1 = FWKEY;//清除 WRT 位
FCTL3 = FWKEY + LOCK;//设置 LOCK 位
while (忙& FCTL3);
_enable_interrupt ();
}
此致、
Maddineni