MSP430F5438 Flash write Problem

Gast #1258348
Hallo!
Ich hatte hier letzens schonmal gepostet wegen dem Problem.
Ich bekomme den Flashspeicher des MSP430F5438 nicht beschrieben.
Es handelt sich dabei um das Segment C des Info Memory mit der 
Anfangsadresse 0x1880.
Vielleicht kann mir ja jetzt doch jemand weiterhelfen :(

Hier mal meine verwendeten Funktionen bzw. Routinen.
1
#include ".\flash.h"
2
#include <stdlib.h>
3

4
char test1 = 0x11;
5
char test2 = 0x22; 
6
char test3 = 0x33;
7

8
//* ====================================================================== */
9
//* Funktion um Flash zu beschreiben                                       */
10
//* ====================================================================== */
11

12
void write_SegA(char offset,char *buf, unsigned char length,bool longwrite) { 
13
unsigned short i;
14
  Flash_ptr = (char *) 0x1880;                    // Flash Pointer Initialsierung 
15
  FCTL1 = FWKEY + ERASE;                          // Set Erase bit
16
  FCTL3 = FWKEY;                                  // Clear Lock bit
17
  *Flash_ptr = 0;                                 // Dummy write to erase Flash segment
18
  FCTL1 = FWKEY + WRT;                            // Set WRT bit for write operation
19
  for(i=0; i < length; i++)  {
20
      *Flash_ptr++ = buf[i];                      // buffer kopieren
21
      _NOP();                                     // SET BREAKPOINT HERE
22
  }                         
23
  
24
  FCTL1 = FWKEY;                                  // Clear WRT bit
25
  FCTL3 = FWKEY + LOCK;                           // Set LOCK bit
26
}
27
     
28

29
//* ====================================================================== */
30
//* Funktion um Flash zu lesen                                             */
31
//* ====================================================================== */
32
 
33
void read_SegA(char offset,char *buffer, unsigned short laenge) {
34

35
  unsigned short i=0;
36
  Flash_ptr = (char *) 0x1880;                    // Reinitialisierung Flash Pointer
37
  Flash_ptr = Flash_ptr + offset;                 // Offset
38
  while(i < laenge) {                             // Flash lesen
39
    buffer[i] = *Flash_ptr++;
40
    i++;
41
  }
42
_NOP();
43
}
44

45
void flash_laden(void) {
46
 read_SegA(ABS_P_OFFSET_OFFSET,(char*)test1,1);
47
 read_SegA(ABS_P_STEIGUNG_OFFSET_OFFSET,(char*)test2,1);
48
 read_SegA(DELTA_P0_OFFSET_OFFSET,(char*)test3,1);
49
}
50

51
void flash_speichern(void)  {
52
 write_SegA(ABS_P_OFFSET_OFFSET,(char*)&test1,1,false);
53
 write_SegA(ABS_P_STEIGUNG_OFFSET_OFFSET,(char*)&test2,1,false);
54
 write_SegA(DELTA_P0_OFFSET_OFFSET,(char*)&test3,1,false);
55
}
Hallo,

ich habe zwar gerade keine Zeit deinen Code genau durchzusehen, aber 
damit du nicht womöglich an der gleichen Stelle hängen bleibst wie mir 
es mal ging, hier ein Hinweis:
Du kannst den Flash nur im run-Modus beschreiben. Im debug-Modus wird 
das erforderliche timing nicht eingehalten und ein erfolgreiches 
Schreiben kommt somit nie zustande.
Gast
Hallo!
Eben diese Initialisierungsroutine für den Flashcontroller gibt es nicht 
mehr :(

Datenblatt:
>FCTL2 has been eliminated as it was the clock control for the flash, >which is 
now implemented using the MODOSC and requires no setup.

Gruß

Rex

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.