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.

[参考译文] CCS/MSP-EXP430FR5969:将数据保存在 FRAM 上并使用 Launchpad 和 MSP430FR5969进行检索

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/778667/ccs-msp-exp430fr5969-save-data-on-fram-and-retreive-it-using-the-launchpad-with-the-msp430fr5969

器件型号:MSP-EXP430FR5969

工具/软件:Code Composer Studio

您好!

我正在编写一个固件、其中我会获得大量与 RAM 不匹配的测量数据。 我需要将此数据保存在 FRAM 上以便稍后获取。 看起来很简单、但我失败了。

对于我的理解、我可以使用微控制器数据表的存储器组织表6.6中未使用的空存储器。 表中有2个空内存间隙:0x1B00-0x1BFF (256个16位位置)和0x2400-0x43FF (8192个16位位置)。 我正在尝试使用最大的一个。

我按下一个按钮、尝试在位置0x2400中记录一个数字并读取它。 下面是我的代码的一部分:

unsigned int *地址=(unsigned int *) 0x2400;// 9216
char buffer[30];
snprintf (buffer、30、"地址=%lu。\r\n、地址);
transmitusb (buffer);
snprintf (buffer、30、"*地址=%u\r\n"、*地址);
transmitusb (buffer);
*地址=0x0001u;
snprintf (buffer、30、"*地址=%d.\r\n\r\n、*地址);
transmitusb (buffer);
snprintf (buffer、30、"*address =%d.\r\n\r\n、*(address++));
transmitusb (buffer);
snprintf (buffer、30、"*address =%d.\r\n\r\n、*(address++));
transmitusb (buffer); 

但我得到的响应是:

地址= 9216。
*地址= 16383。
*地址= 16383。
*地址= 16383。
*地址= 16383。

我不会保存该数字、所有3个连续地址都会给出相同的结果。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这种情况下、"空缺"意味着"实际上什么都没有"。 您需要使用数据表(SLASS704F)表6-6中的 FRAM 段(主段或信息段)之一。 您必须明确地使该段在 MPU 中可写入。

    1) 1)使用 Build Settings -> General -> MPU 使其中一个段可写。 [CCS 用户指南(SLAU157AP)第4.1节]
    2) 2)使用"#pragma NOINIT (var)"和"#pragma LOCATION (var、0XXXX)"找到变量。 [CCS cc UG (SLAU132S)第5.12.21-22节]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢 Bruce 的帮助!