尊敬的 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;
}
谢谢、
是的