msp430 Flash Löschen und beschreiben

OP #1553137
Lesenswert?

Hi!

Ich benutzte den MSP430f248 und arbeite mit der IAR Software.

Ich möchte den Falsh löschen und neu beschreiben. Wobei das löschen 
ersteinmal neben sächlich ist da zZ überall 0xFF steht.

Der Info bereich ist leider zu klein, aus diesem Grunde habe ich mich 
endscheiden am ende des Code bereiches, meine Daten zu schreiben.

Leider werden die Daten welche ich in eADC_ConfigDaten nicht erfolgreich 
geschrieben.

Wo ist mein Fehler?
1
void Flash_writedown_ADC( void ) 
2
  {
3
  USIGN16 *Flash_Segment;
4
  Flash_Segment = (USIGN16*)0xF000;   /* Flash Segment start address */
5
  USIGN8 i_wort = 0;
6
  USIGN8 i_ADC  = 0;
7
      
8
  STOP_WATCHDOG;// Hold Watchdog, it will be switched on by the next SERVE_WATCHDOG.
9
    
10
  FCTL2 = FWKEY | FSSEL_1 | FN0;             /* select MCLK for flash timing */
11
  
12
  FCTL1 = FWKEY + ERASE;          // Set Erase bit
13
  FCTL3 = FWKEY;                  // Clear Lock bit
14
   
15
  *Flash_Segment = 0;              //Dummy write to erase Flash segment 
16
    
17
  while (! (FCTL3 & WAIT) );  // Wait while not ready
18

19
  FCTL1 = FWKEY + BLKWRT + WRT; // Enable block-write operation
20

21
  
22
    for (USIGN16 i=0; i < 256; i++) 
23
    {
24
    Flash_Segment[i] = eADC_ConfigDaten[i_ADC]._Word[i_wort] ;  
25
    if(++i_wort>=32)
26
      {
27
       i_ADC++;
28
       i_wort=0;
29
      }
30
    }
31
     SERVE_WATCHDOG;
32
  _NOP();
33
  RESET_CPU; //RESET!
34
  
35
  }
Gast #1553867
Lesenswert?

Führ' Dir nochmal das entsprechende Kapitel im User-Guide zu Gemüte!
Block-Write kann nicht aus dem Flash heraus ausgeführt werden, der Code 
dazu muss im RAM laufen! Wobei ich bezweifle, dass Du unbedingt 
Block-Write brauchst?!

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