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.

[参考译文] MSP430FR5992:写入闪存、FRAM 或任何非易失性存储器

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1133162/msp430fr5992-write-to-flash-or-fram-or-any-non-volatile-memory

器件型号:MSP430FR5992

早上/下午好、  

我有一些变量需要在复位后仍留在存储器中。 那么、我来看看闪存或 FRAM。  

我在使用闪存或 FRAM 时遇到了很多问题。  

我找到了这个: https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/720929/ccs-msp430fr2433-how-to-write-to-and-read-from-fram ,但不管出于什么原因,“FRAMWrite()”不起作用,因为 SYSCFG0未定义,而我确实包括了 msp430.h。

关于闪存、我很难找到闪存寄存器以及如何使用它们。  

有人能帮我吗

谢谢你

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

    e2e.ti.com/.../C_2D00_-FRAM-save-SYSRSTIV.c

    您可以参考此代码。

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

    感谢您的快速回复。  

    在包含 msp430.h 时,我仍然遇到 syscfg0未定义的问题。  

    您能帮我找到这个 SYSCFG0声明在哪里吗?  

    谢谢

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

    此部件没有 SYSCFG0。 您为什么认为需要处理它? 禁用 FRAM 写保护?

    器件之间的硬件差异很大。 有些具有特殊的 FRAM 写保护、而有些像 fr5992一样使用存储器保护单元。 必须启用该功能才能执行任何操作。

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

    虽然我需要这样做才能在 FRAM 中写入、但没错、没有 SYSCFG0

    我现在正在尝试关注: https://dev.ti.com/tirex/explore/node?node=AHxspo0JbT95EYoCPigAAw__IOGqZri__LATEST&search=MSP430FR5992

    但是 、FRAM_WRITE 定义为0x4000。 在该地址、我有我的应用程序代码。  

    有关我所拥有的内容和我要尝试执行的操作的更多信息:  

     -我的应用程序中有一个自定义引导加载程序,它将在该位置0x4000加载应用程序。  

     -如果在此位置有代码、引导加载程序将引导至它、否则、它将等待代码。 到目前为止、非常好。  

     -在此应用中,我有4个变量需要存储在闪存或 FRAM 中(或任何非易失性存储器,它是哪一个并不重要);这4个变量是 unsigned char GCR[250]、unsigned char alarm[250]、unsigned long Timer1和 unsigned int time2

    当设置这4个变量时、我需要存储它们。 加载应用程序时(在初始化时钟和 GPIO 以及所有这些之后)、我需要从闪存或 FRAM (或其他任何变量)中恢复这4个变量的先前值。  

    在 https://dev.ti.com/tirex/explore/node?node=AHxspo0JbT95EYoCPigAAw__IOGqZri__LATEST&search=MSP430FR5992之后、FRAM_WRITE 正在写入0x4000、这在我的应用中是不可接受的、因为我的代码在那里。  

    问题:  

     -如何在闪存或 FRAM 中的特定位置写入数据(或至少写入0x4000)

     -如何在 init 恢复这些值?  

    谢谢你

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

    无需特殊的库函数即可写入 FRAM。

    使用 FRAM、只需将变量声明为 persistent 即可将其放入 FRAM 中。 在程序加载时初始化(或不初始化)、但在复位时不初始化。

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

    等什么?  

    大卫·舒尔兹,让 我的一天过得非常愉快!  

    谢谢!  

    P.D. :我将链接器更改为将数据从我的代码中放入 FRAM,它实际上起作用!  

    再次感谢!  

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

    David、感谢您的帮助!