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.

[参考译文] MSP430FR2433:将数据保存到 INFOA 内存中

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430FR2433

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1071936/msp430fr2433-saving-data-to-infoa-memory

部件号:MSP430FR2433

尊敬的 TI:

我一直在参与 MSP430FR2433 Launchpad BlinkLED 项目,以更好地了解如何将数据保存到非易失性 FRAM 内存中。  请注意,我已经了解了许多文档和帖子,包括 SLAA628 FRAM 最佳实践,并看到了有关如何使用持久性和 NOINIT pragma 等的代码示例   

我想使用带有位置 pragma 的持久性 pragma 在信息存储器空间中存储大约1次初始化的数据(在程序时)。  文档没有明确说明可以执行此操作,但它几乎可以正常工作。  我注意到链接器确实将变量放置在正确的位置,并且它按预期初始化,但我似乎无法更新它。  当我将变量与程序存储器放在一起时,情况会如预期的那样正常工作。  可能我需要使用 SYSCFG0寄存器执行更多操作来更新信息存储器?   

#pragma 持久性(testVar)
#pragma location=0x1800               //如果我对此进行注释,则情况会如预期一样工作,但变量不在我所需的信息存储器段中。
无符号长 testVar = 0x5544;

SYSCFG0 = FRWPPW | DFWP;//程序 FRAM 写入启用
testVar++;//在 FRAM 中记录端口事件
SYSCFG0 = FRWPPW | PFWP | DFWP;//程序 FRAM 写保护(不可写)

谢谢,

布雷特

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

    我意识到我将需要使用 NOINIT 和位置,因为我希望固件升级后能有什么问题继续存在

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

    您好,布雷特,

    请参阅随附的示例代码。

    如果您仍有疑问,请告诉我。

    e2e.ti.com/.../FRAM-write-protect-fram-examples.c

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

    谢谢丹尼斯!  这些都是好的例子。  我不知道为什么我没有遇到这些问题。  我确实发现了我的问题,我假设了这个问题,但当时不知道为什么——FRAM 程序内存写入和 FRAM 数据(信息)内存写入之间存在差异。  我的上述代码确实为数据存储器设置了写保护位。  我发现另一篇文章讨论了如何修改.cmd 文件,以便 NOINIT 位于 FRAM 中。  无论如何,它似乎正在按预期工作。  信息存储器也称为 FRAM 数据存储器,这有点令人困惑。  再次感谢布雷特。

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

    太棒了!  很高兴能提供帮助。