Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Message

Subject: Using flash memory instead of eeprom?

2005-01-31 by Owen Mooney

Yes I have. Its easy, but you have to use up a whole page (unless you read - modify - write) I had lots of spare flash and was typically saving a configuration just a few times so these limitations didn't matter.

Code using IAP instructions below.

Accessing the stored structure is just a direct memory access.

The write cycle limitations have been well documented by those willing to offer an opinion but not answer your question !!!

Owen Mooney

#define IAP_LOCATION 0x7ffffff1

void savesetup(struct SETUP *setup){
   typedef void (*IAP)(unsigned int [],unsigned int[]);
   unsigned int command[5];
   unsigned int result[2];
   IAP iap_entry;
   __ARMLIB_disableIRQ();
   iap_entry=(IAP) IAP_LOCATION;
   // get part ID
   command[0]=54;
   result[0]=0;
   iap_entry(command, result);
   // result in result[1] 
   // prepare to erase
   command[0]=50;
   command[1]=14;
   command[2]=14;
   iap_entry(command, result);
   if (result[0] != 0) goto error;
   // erase
   command[0]=52;
   command[1]=14;
   command[2]=14;
   command[3]=14745;
   iap_entry(command, result);
   if (result[0] != 0) goto error;
   // prepare to program
   iap_entry=(IAP) IAP_LOCATION;
   command[0]=50;
   command[1]=14;
   command[2]=14;
   iap_entry(command, result);
   if (result[0] != 0) goto error;
   //  program
   command[0]=51;
   command[1]=0x1C000;
   command[2]=(int)setup;
   command[3]=512;
   command[4]=14745;
   iap_entry(command, result);
   if (result[0] != 0) goto error;
   __ARMLIB_enableIRQ();
   return;
   error:
   __ARMLIB_enableIRQ();
   printf("bum");
}


Hi!

Has someone used the flash memory of the lpc21xx for eeprom purposes?
Or is it more usefull to take an additive eeprom to the design? I only
want to store some parameters.

Thank you for feedback!
Martin





____________

Attachments

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.