我想在 FRAM 中保存1字节数据、请帮助了解 FRAM 中的单字节读取和写入操作。
我尝试了参考代码并遵循 E2E 平台、但无法获取保存的值。
请分享并提供建议
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.
我想在 FRAM 中保存1字节数据、请帮助了解 FRAM 中的单字节读取和写入操作。
我尝试了参考代码并遵循 E2E 平台、但无法获取保存的值。
请分享并提供建议
您好、Nitesh、
请参阅随附的示例代码、其中显示了如何启用 FRAM 写入。
我还复制了这里的代码、以便您可以看到它。
/* * Some easy to use #defines */ #define DISABLE_PF_WRITE_PROTECT SYSCFG0 = FRWPPW | DFWP #define DISABLE_DF_WRITE_PROTECT SYSCFG0 = FRWPPW | PFWP #define DISABLE_PF_DF_WRITE_PROTECT SYSCFG0 = FRWPPW #define DISABLE_ALL_WRITE_PROTECT SYSCFG0 = FRWPPW #define ENABLE_PF_WRITE_PROTECT SYSCFG0 = FRWPPW | PFWP #define ENABLE_DF_WRITE_PROTECT SYSCFG0 = FRWPPW | DFWP #define ENABLE_PF_DF_WRITE_PROTECT SYSCFG0 = FRWPPW | PFWP | DFWP #define ENABLE_ALL_WRITE_PROTECT SYSCFG0 = FRWPPW | PFWP | DFWP /* * Example * Declare variable 'peanut' persistent in Info memory at location 0x1800. * (initialize only once at load time = 0) * */ #pragma PERSISTENT(peanut) #pragma LOCATION(peanut, 0x1800) uint16_t peanut = 0; /* * Example * Declare variable 'peach' persistent in Program memory at location 0xE000. * (initialize only once at load time = 0x1234) * */ #pragma PERSISTENT(peach) #pragma LOCATION(peach, 0xE002) uint16_t peach = 0x1234; /* * Example * Declare variable 'apple, compiler will place automatically * (initialize only once at load time = 0x55AA) */ #pragma PERSISTENT(apple) uint16_t apple = 0x55AA; /* * Example * Declare variable 'walnut' noinit in Info memory at location 0x1802. * (is not initialized at reset) * */ #pragma NOINIT(walnut) #pragma LOCATION(walnut, 0x1802) uint16_t walnut; uint16_t SYSCFG0_copy; int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer SYSCFG0_copy = SYSCFG0 & (PFWP | DFWP); // let's first confirm FRAM protection is on by default peanut = 1; // won't work because DFWP is enabled by default DISABLE_DF_WRITE_PROTECT; // so must first disable DFWP (DATA FRAM WRITE PROTECT) peanut = 1; // this time it worked walnut = 2; // verify we can change walnut apple = 0x55AA; // won't work because PFWP is enabled by default DISABLE_PF_WRITE_PROTECT; // must first disable PFWP (PROGRAM FRAM WRITE PROTECT) apple = 0xAA55; // this time it worked peach = 0; // verify we can change peach ENABLE_ALL_WRITE_PROTECT; // Don't forget to protect when done. while(1); }
#pragma PERSISTENT (苹果)
uint16_t 苹果= 0x55AA;
SYSCFG0 = FRWPPW;//编程 FRAM 写入使能
//disable_pf_write_protect;//必须首先禁用 PFWP (程序 FRAM 写保护)
Apple = 0xAA55;//这次它起作用
SYSCFG0 = FRWPPW | PFWP;//编程 FRAM 写保护
//enable_PF_WRITE_PROTECT;//完成后不要忘记进行保护。
//收到的错误如下所示
写入长度为0x8的第0页0xf100处的存储器块时遇到问题:无法擦除器件存储器
MSP430:文件加载器:验证失败:目标写入0x0F100失败
MSP430:GEL:文件:D:\Vijender、s old Data\Drive-E\Sensor\Sensor\Basin_sensor\Debug\Basin_sensor.out:加载失败。