尊敬的 TI 团队:
MSP430FR2311PW20具有 FRAM、对吧?
查找从 FRAM 读取/写入的任何示例代码。
此致、
Walter
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.
尊敬的 TI 团队:
MSP430FR2311PW20具有 FRAM、对吧?
查找从 FRAM 读取/写入的任何示例代码。
此致、
Walter
您好、Walter、
这里是 FR2311器件的一些示例项目、有几个用于 FRAM 写入的示例项目。
http://dev.ti.com/tirex/explore/node?node=ANl1oYi0.klyjvtEKGoMlA__IOGqZri__LATEST&search=MSP430FR2311
谢谢、
是的
您好、Yiding、
写入在运行时被置位并且能够读取值。
重新启动后、我读取了值、但该值未保留
#define FRAM_TEST_START 0xFD00
unsigned
int
*pointer;
unsigned
int
data;
void
main()
{
pointer = (unsigned
int
*)FRAM_TEST_START;
// address to read
data = *pointer;
// data to read
while
(1);
}
。
尊敬的 TI 团队:
计划使用 persistent、但 在启动后仍无法读取:
http://dev.ti.com/tirex/explore/node?node=ALjQeIC7Hu5Y4ISuzhBZQw__IOGqZri__LATEST&search=MSP430FR2311
此致、
Walter
您好、Yiding、
我只是使用简单的 persistent 变量。
--------------------------
#pragma PERSISTENT (值)
无符号长整型值= 0;
WDTCTL = WDTPW | WDTHOLD;//停止 WDT
SYSCFG0 = FRWPPW;//编程 FRAM 写入使能
值++;
SYSCFG0 = FRWPPW | PFWP;//编程 FRAM 写保护
--------------------
我是否需要 添加此项?
RTCCTL = 0;
PMMCTL0_H = PMMPW_H;//打开 PMM 寄存器进行写入
PMMCTL0_L |= PMMREGOFF;//并设置 PMMREGOFF
PMMCTL0_H = 0;//锁定 PMM 寄存器
我希望能够在下电上电后读取保存的值。
if (值)
{
//正确写入。
}
否则{
// 不是正确的 writetn。
}
此致、
Walter
根据定义、它应该像这样工作。
1
2.
|
#pragma PERSISTENT ( count ) uint16_t count = 0; |
创建变量"count"并告诉代码生成工具将其放置在"persistent"存储器中;也就是说、变量将放置在 FRAM 中、这是一种永久性存储器类型。 通过这种方式、代码可以像 RAM 中一样读取和写入变量、但即使器件断电、其值也会被保留。
您好、Walter、
组(READ_WRITE_MEMORY)
{
.TI.persistent:{}/* for #pragma PERSISTENT */
}
>FRAM
SYSCFG0 = FRWPPW;//编程 FRAM 写入使能
值++;
SYSCFG0 = FRWPPW | PFWP;//编程 FRAM 写保护
谢谢、
是的
您好、Walter、
在重置电源后、您是如何读取该值的? 如果您使用调试器标准设置、它将在您调试器件后重置该值。
我刚刚在 FR2311 Launchpad 上尝试过、这里是用于测试 持久性变量的简单代码。
如果 LED 在引导后亮起、则表示变量 Port_event 在复位电源后保留其值。
#include //静态初始化的变量 #ifdef __TI_Compiler_version__#pragma PERSISTENT (Port_EVENT) unsigned Long Port_EVENT =0; #endif void initGpio (void); int main (void) { WDTCTL = WDTPW | WDTHOLD; //停止 WDT //配置 GPIO initGpio(); if (Port_event == 6) { P1OUT |= BIT0; } 其他 { P1OUT &=~BIT0; } while (Port_event <= 5) { SYSCFG0 = FRWPPW; //程序 FRAM 写入使能 PORT_EVENT_++; //在 FRAM 中记录端口事件 SYSCFG0 = FRWPPW | PFWP; //程序 FRAM 受写保护(不可写) } while (1) { __no_operation(); } } void initGpio() { P1DIR = 0xFF;P2DIR = 0xFF; P1REN = 0xFF;P2REN = 0xFF; P1OUT = 0x00;P2OUT = 0x00; //禁用 GPIO 上电默认高阻抗模式 //激活先前配置的端口设置 PM5CTL0 &=~LOCKLPM5; }
谢谢、
是的