Hallo, hat schon jemand Erfahrung bei der Flash-Programmierung der FG461x Devices. Meine Routine läuft wunderbar für alle MSP430 mit einem Flash-Bereich. Beim FG461x habe ich allerdings Probleme den Bereich >= 0x10000 (also den 2. Flashspeicher) zu beschreiben. Hier kurz meine Lösch- und Schreibroutinen: Löschen ======= // SMCLK/10 = 3,99MHz / 10 = 399kHz FCTL2 = FWKEY + FSSEL_2 + FN3 + FN0; FCTL3 = FWKEY; FCTL1 = FWKEY + GMERAS + MERAS; // dummy write Address = (unsigned char *) 0x00FC10; *Address = 0; // wait for ending busy state n = 0; while((FCTL3 & BUSY) != 0 && n < 1000000) n++; Schreiben ========= FCTL3 = FWKEY; FCTL1 = FWKEY + BLKWRT + WRT; for(n=0; n<64; n++) { ActAddress = (unsigned char *) (FlashAddress + n); *ActAddress = Buffer[n]; m = 0; while((FCTL3 & WAIT) == 0 && m < 50000) m++; } m = 0; FCTL1 = FWKEY; while((FCTL3 & BUSY) != 0 && m < 50000) m++; FCTL3 = FWKEY + LOCK; Mein Programm zur Flashprogrammierung wird im RAM ausgeführt. Gruß Frank
Problem gelöst: ActAddress = (unsigned char *) (FlashAddress + n); ist ein 16-Bit-Zeiger. Daher schreibt der µC bei der Adressierung des oberen Flashbereiches wieder in den unteren. Frank
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.