This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

LPC2138 Flash Write Problem

Hi
I am trying to write to flash on a LPC2138. I am using Keils sample code with just the sector number and the ram address changed. Cannot get anything to happen other than I must reconnect to device.
Compiling in thumb. Freq=60MHz
Here is the code
Any help appliciated

typedef void (*IAP)(unsigned int [],unsigned int []);
IAP iap_bypointer;
void iap_byfunction (unsigned *cmd,unsigned *rslt,unsigned entry);

unsigned int command[5];
unsigned int result[5];
char Ram_Arry[512] = "Hello World";
char *Ram_Pointer;

void flash_write(void)
{ unsigned char index;

iap_bypointer = (IAP) 0x7FFFFFF1; //set IAP entry address in function pointer

Ram_Pointer = &Ram_Arry;

for (index = 0; index<0x0B; index++)
//Copy data to be written to flash into the RAM
{ *Ram_Pointer = Ram_Arry[index];
Ram_Pointer++;
} Ram_Pointer = &Ram_Arry;

command[0] = 0x36; //command code for "Read part ID"
iap_bypointer(command,result);

command[0] = 50; //Prepare sector ten for a write operayion
command[1] = 10;
command[2] = 10;
iap_bypointer(command,result);

command[0] = 52; //erase sector ten
command[1] = 10;
command[2] = 10;
command[3] = 60000; //Cclk == 12Mhz Pll is disabled in startup code
iap_bypointer(command,result);

command[0] = 50; //Prepare sector ten for a write operayion
command[1] = 10;
command[2] = 10;
iap_bypointer(command,result);

command[0] = 51; //write 512 bytes from address Pointer
command[1] = 0x00018000; //to 0x0000A000 in flash memory;
command[2] = Ram_Pointer;
command[3] = 512;
command[4] = 60000; // see erase comment above

while(1)
{ ;
}

}

Parents
  • I don't have the manual for the LPC2148, but the Keil addresses (0xa000 for sector 5) seems to match the manual contents for LPC2119, 2129, 2194, 2294).

    Check the user manual for your specific processor. There is one chapter about IAP somewhere at the end. It should contain a table with all sector numbers, and their addresses.

Reply
  • I don't have the manual for the LPC2148, but the Keil addresses (0xa000 for sector 5) seems to match the manual contents for LPC2119, 2129, 2194, 2294).

    Check the user manual for your specific processor. There is one chapter about IAP somewhere at the end. It should contain a table with all sector numbers, and their addresses.

Children