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.

[参考译文] MSP430FR2311:FRAM 读写- 1字节数据

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1026156/msp430fr2311-fram-read-write---1-byte-data

器件型号:MSP430FR2311

我想在 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);
    
    }
    

    e2e.ti.com/.../FRAM-toolkit.c

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

    您好!

    感谢您的分享、我有两个问题

    1、如何确定哪个是写入1字节数据的最佳位置

    2.加电后如何读取 REST 此变量数据

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

    #define DISABLE_PF_WRITE_PROTECT     SYSCFG0 = FRWPPW | PFWP

    #define ENABLE_PF_WRITE_PROTECT      SYSCFG0 = FRWPPW | PFWP

    两项陈述是相同的????

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

    存在差异、请检查。

    #define DISABLE_PF_WRITE_PROTECT     SYSCFG0 = FRWPPW | DFWP

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

    #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:加载失败。

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

    编译代码时未定义#20标识符"DFWP"

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

    您好!

    请帮我编写一个字节的数据

    仍然无法解决问题