Other Parts Discussed in Thread: RF430CL331H, RF430CL330H, RF430FRL152H
Tool/software: Code Composer Studio
Hi,
I am using RF430FRL152HEVM kit for NFC communication with mobile phone. I want to perform read and write operation from mobile phone to RF430FRL152HEVM kit.
I have tried example from below PATH:
slac691f\RF430FRL15xH_Projects_v1_5\RF430FRL15xH_Projects_v1_5\RF430FRL15xH_Projects_v1_5\RF430FRL15xH NFC Projects\RF430FRL152H
I am Facing problem for FRAM writing in Run time.
source code is:
MEMORY { SFR : origin = 0x0000, length = 0x0010 PERIPHERALS_8BIT : origin = 0x0010, length = 0x00F0 PERIPHERALS_16BIT : origin = 0x0100, length = 0x0100 RAM : origin = 0x1C00, length = 0x1000 //ROM ISRs, starting points, length not correct RF13M_ROM_ISR : origin = 0x54D0, length = 0x0002 // code area, can be increased / decreased // FRAM_NDEF + FRAM_CODE lengths must equall 0x768 (with FRAM_NDEF starting at 0xF868) // Two sections together in the range of 0xF868-0xFFCF FRAM_NDEF : origin = 0xF868, length = 0x0096 // ends at 0xF8CF - NDEF memory section FRAM_Data : origin = 0xF8FE, length = 0x00A0 // ends at 0xF8CF - NDEF memory section FRAM_CODE : origin = 0xF99E, length = 0x0630 // ends at 0xFFCF - Firmware memory section JTAGSIGNATURE : origin = 0xFFD0, length = 0x0004, fill = 0xFFFF BSLSIGNATURE : origin = 0xFFD4, length = 0x0004, fill = 0xFFFF INT00 : origin = 0xFFE0, length = 0x0002 INT01 : origin = 0xFFE2, length = 0x0002 INT02 : origin = 0xFFE4, length = 0x0002 INT03 : origin = 0xFFE6, length = 0x0002 INT04 : origin = 0xFFE8, length = 0x0002 INT05 : origin = 0xFFEA, length = 0x0002 INT06 : origin = 0xFFEC, length = 0x0002 INT07 : origin = 0xFFEE, length = 0x0002 INT08 : origin = 0xFFF0, length = 0x0002 INT09 : origin = 0xFFF2, length = 0x0002 INT10 : origin = 0xFFF4, length = 0x0002 INT11 : origin = 0xFFF6, length = 0x0002 INT12 : origin = 0xFFF8, length = 0x0002 INT13 : origin = 0xFFFA, length = 0x0002 INT14 : origin = 0xFFFC, length = 0x0002 RESET : origin = 0xFFFE, length = 0x0002 } /****************************************************************************/ /* Specify the sections allocation into memory */ /****************************************************************************/ SECTIONS { GROUP(ALL_FRAM) { GROUP(READ_WRITE_MEMORY) { // .TI.persistent : {} >FRAM_Data /* For #pragma persistent */ .cio : {} /* C I/O buffer */ .sysmem : {} /* Dynamic memory allocation area */ } GROUP(READ_ONLY_MEMORY) { .cinit : {} /* Initialization tables */ .pinit : {} /* C++ constructor tables */ .init_array : {} /* C++ constructor tables */ .mspabi.exidx : {} /* C++ constructor tables */ .mspabi.extab : {} /* C++ constructor tables */ .const : {} /* Constant data */ } GROUP(EXECUTABLE_MEMORY) { .text : {} /* Code */ } } > FRAM_CODE .rf13m_rom_isr : {} > RF13M_ROM_ISR type = DSECT .jtagsignature : {} > JTAGSIGNATURE /* JTAG Signature */ .bslsignature : {} > BSLSIGNATURE /* BSL Signature */ .jtagpassword /* JTAG Password */ .bss : {} > RAM /* Global & static vars */ .data : {} > RAM /* Global & static vars */ .TI.noinit : {} > RAM /* For #pragma noinit */ .TI.persistent : {} >FRAM_Data /* For #pragma persistent */ .stack : {} > RAM (HIGH) /* Software system stack */ /* MSP430 Interrupt vectors */ .int00 : {} > INT00 .int01 : {} > INT01 .int02 : {} > INT02 .int03 : {} > INT03 .int04 : {} > INT04 RFPMM : { * ( .int05 ) } > INT05 type = VECT_INIT PORT1 : { * ( .int06 ) } > INT06 type = VECT_INIT SD_ADC : { * ( .int07 ) } > INT07 type = VECT_INIT USCI_B0 : { * ( .int08 ) } > INT08 type = VECT_INIT ISO : { * ( .int09 ) } > INT09 type = VECT_INIT WDT : { * ( .int10 ) } > INT10 type = VECT_INIT TIMER0_A1 : { * ( .int11 ) } > INT11 type = VECT_INIT TIMER0_A0 : { * ( .int12 ) } > INT12 type = VECT_INIT UNMI : { * ( .int13 ) } > INT13 type = VECT_INIT SYSNMI : { * ( .int14 ) } > INT14 type = VECT_INIT .reset : {} > RESET /* MSP430 Reset vector */ } -------------------------------------------------------------------------------------------- Main.c file: #pragma RETAIN(FRAM_arr); #pragma location = 0xF8FE; //#pragma DATA_SECTION(FRAM_arr, ".TI.persistent") #pragma PERSISTENT(FRAM_arr) unsigned char FRAM_arr[50]; Main() { ------ ------ for(count = 0; count<21;count++) { FRAM_arr[count]= count; } ---- ---- }
At run time i am writing FRAM memory . Upadted data is also showing in CCS memory during debugging tool. But after reset command , this data is erasing every time.
Can you please suggest the mistake , i am doing here .
Thanks,
Anil Garg