想请问下各位
看MSP430选型手册FRAM系列MCU中说到“Configurable as program or data memor”,是不是可以将部分FRAM分配给SRAM?如果可以的话怎么实现?
谢谢!
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.
想请问下各位
看MSP430选型手册FRAM系列MCU中说到“Configurable as program or data memor”,是不是可以将部分FRAM分配给SRAM?如果可以的话怎么实现?
谢谢!
您好!
我做的项目目前遇到的问题是想把FRAM当做EEPROM来使用,我尝试直接给FRAM写数据,掉电后数据还是会丢失,我想问一下,能否有相关的FRAM当做EEPROM来使用?项目非常着急,期待各位的回答,非常感谢!
另外我想知道FRAM当做EEPROM使用是FR系列的亮点,为什么没有相关的示例呢,很是困惑!
你好, FRAM 读写都有范例代码的。
掉电保存
#include <msp430.h> void FRAMWrite(void); unsigned char count = 0; unsigned long *FRAM_write_ptr; unsigned long data; #define FRAM_TEST_START 0x1800 int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer P1OUT &= ~BIT0; // Clear P1.0 output latch for a defined power-on state P1DIR |= BIT0; // Set P1.0 to output directionOUT PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default high-impedance mode // to activate previously configured port settings data = 0x11111111; // Initialize dummy data while(1) { data += 0x00010001; FRAM_write_ptr = (unsigned long *)FRAM_TEST_START; FRAMWrite(); count++; if (count > 100) { P1OUT ^= 0x01; // Toggle LED to show 512K bytes count = 0; // ..have been written data = 0x11111111; } } } void FRAMWrite (void) { unsigned int i=0; SYSCFG0 &= ~DFWP; for (i = 0; i < 128; i++) { *FRAM_write_ptr++ = data; } SYSCFG0 |= DFWP; }
您好:
感谢您的提示,这个代码之前我测试不行,昨天测试就可以了,
我想请教一下,我需要存放变量的地址是需要自己在FRAM中划分出一块专门来存放变量,还是说我随便都可以定义一个起始地址开始存放,如果这样可以的话,烧写代码或者代码运行的过程中,这些地址的内容会不会被误操作,期待您的回复,谢谢!
您说的配置,能说的具体一点吗,我应该怎么设置就是传统的FLASH,怎么做是SRAM,又怎么做是EEPROM?这个感觉太模糊了,
还是说FRAM本身就具备这三种特性,只是看我自己使用他的什么特性?期待您的解释,谢谢!
用户数据一般存放在数据区,这样就可以避免程序代码被改掉。
有一些FRAM的产品是带MPU的,建议看一下数据手册和用户手册。
m 说:MSP4330FR5994,不过我没有加
SYSCFG0 &= ~DFWP 数据也能写进去,不知道为什么
//****************************************************************************** // MSP430FR5x9x Demo - Long word writes to FRAM // // Description: Use long word write to write to 512 byte blocks of FRAM. // Toggle LED after every 100 writes. // NOTE: Running this example for extended periods will impact the FRAM // endurance. MPU is also enabled by default in CCS. // MCLK = SMCLK = default DCO // // MSP430FR5994 // --------------- // /|\| | // | | | // --|RST | // | | // | | // | P1.0 |---> LED // // William Goh // Texas Instruments Inc. // October 2015 // Built with IAR Embedded Workbench V6.30 & Code Composer Studio V6.1 //****************************************************************************** #include <msp430.h> #define WRITE_SIZE 128 void FRAMWrite(void); unsigned char count = 0; unsigned long data; #if defined(__TI_COMPILER_VERSION__) #pragma PERSISTENT(FRAM_write) unsigned long FRAM_write[WRITE_SIZE] = {0}; #elif defined(__IAR_SYSTEMS_ICC__) __persistent unsigned long FRAM_write[WRITE_SIZE] = {0}; #else #error Compiler not supported! #endif int main(void) { WDTCTL = WDTPW | WDTHOLD; // Stop WDT // Configure GPIO P1OUT &= ~BIT0; // Clear P1.0 output latch for a defined power-on state P1DIR |= BIT0; // Set P1.0 to output direction // Disable the GPIO power-on default high-impedance mode to activate // previously configured port settings PM5CTL0 &= ~LOCKLPM5; // Initialize dummy data data = 0x00010001; while(1) { data += 0x00010001; FRAMWrite(); count++; if (count > 100) { P1OUT ^= 0x01; // Toggle LED to show 512K bytes count = 0; // ..have been written data = 0x00010001; } } } void FRAMWrite(void) { unsigned int i = 0; for (i = 0; i < 128; i++) { FRAM_write[i] = data; } }
#pragma PERSISTENT(FRAM_write)
unsigned
long
FRAM_write[WRITE_SIZE] = {0};
program will not fit into available memory. placement with alignment fails for section "RW_IPE" size 0x107fe lnk_msp430fr5994.cmd /OBEM_MSP430FR5994 line 147 C/C++ Problem
应该如何处理,修改 .com文件吗?