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] = 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) { ; }
}