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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren