MSP430G2553: 10 Werte/Bytes permanent im Flash ablegen

Gast #6354065
Lesenswert?
• ▲
▼
Hallo Gemeinde,

ich würde gerne meinen MSP430G2553 eine eindeutige ID verpassen und 
müsste hierfür max. 10 Bytes im Flash ablegen bzw. für die "Ewigkeit" 
speichern.

Die Werte sollten auch nach dem Hochladen neuer Software via MSP-Fet 
unter CSS persistent sein.

Gibt es irgendwo eine Beschreibung wie ich das bewerkstellige?
Meine SW lässt sich in <5kB unterbringen.
Ich hätte jetzt spontan die Möglichkeit gesehen, die Werte für die ID in 
die letzte Flash-Speicherbank abzulegen.
Dann dürften die doch nicht überschrieben werden?

Wie ich dann elegant von der SW aus auf diese Werte zugreife ist mir 
allerdings noch nicht ganz klar...

Ist das prinzipiell überhaupt möglich oder sollte ich mir lieber ein 
EEPROM besorgen?

Vielen Dank!
#6354130
Lesenswert?
• ▲
▼
Der MSP430 hat 4x 64Byte Informationsspeicher Segment A bis D.

Segment A ist schon belegt und sollte nicht verwendet werden.

Beispiel fürs Schreiben eines Strings ins Segment B :

1
    #define SEGM_A (char *)0x1000
2
    #define SEGM_B (char *)0x1040
3
    #define SEGM_C (char *)0x1080
4
    #define SEGM_D (char *)0x10C0
5
 
6
            char *ps;
7
            char *pd;
8
             
9
            strcpy(ibuf,"ID=1234567890\r\n");
10

11
            ps=ibuf;
12
            pd=SEGM_B;
13

14
            BCSCTL1=CALBC1_1MHZ;   //run with 16MHz DCO
15
            DCOCTL=CALDCO_1MHZ;
16

17
            {
18
                FCTL1=FWKEY+ERASE;  // Set Mass Erase bit
19
                FCTL3=FWKEY;        // Clear Lock bit
20
                *pd=0;              // Dummy write to erase Flash segment B
21
                FCTL1=FWKEY+WRT;    // Set WRT bit for write operation
22
                FCTL1=FWKEY;        // Clear WRT bit
23
                FCTL3=FWKEY+LOCK;
24
            }
25

26
            while ((*ps!='\r')&&(*ps!='\n')&&(*ps!=0))
27
            {
28
                FCTL1=FWKEY+WRT;
29
                FCTL3=FWKEY;
30
                *(unsigned char *)pd=*ps;
31
                FCTL1=FWKEY;
32
                FCTL3=FWKEY+LOCK;
33
                ps++;
34
                pd++;
35
            }

Eine ID lässt sich auch, ohne SW, über die Speicherzugriffsfunktion 
MEMORY des Code Composer Studios ins FLASH schreiben.

PS : ich habt den Takt der MCU auf 1MHz heruntergeschaltet um den 
vollen Betriebsspannungsberreich für den Batteriebetrieb nutzen zu 
können.

Der Takt kann nach dem Beschreiben des Flashs wieder hinauf gesetzt 
werden.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.