Escribir y leer datos de Flash utilizando IAP

1

Aquí puede ver las funciones que estoy usando para almacenar datos en Flash, pero los datos se borran después del reinicio de la alimentación, por lo que aún está en la memoria RAM y no en Flash.

#define   OFFSET_ADDRESS                     0x00030000                                                                                        
#define   OFFSET_VERSION                     0x00030002
#define   OFFSET_SERIAL                      0x00030004  

    void read_from_flash (void)   {                     

        BYTE i, *pok_add, *pok_ver, *pok_serial_no;

        pok_add = (BYTE *)OFFSET_ADDRESS;
        display_address = *pok_add;
        delay_1_ms();
        if ((display_address > MAX_OUTDOOR_DISPLAY_ADDRESS) || (display_address < MIN_OUTDOOR_DISPLAY_ADDRESS))  display_address = UNI_ADDRESS;


        pok_ver = (BYTE *)OFFSET_VERSION;
        version = *pok_ver;
        delay_1_ms();
        if (version > MAX_FW_VERSION)        version = 0;                        

        for (i=0;i<8;i++)     {
            pok_serial_no = (BYTE *)OFFSET_ADDRESS;
            serial_no[i] = *pok_serial_no++;
            delay_1_ms();
        }
        for (i=0;i<8;i++)         if (serial_no[i] > 9)   serial_no[i] = 0;       

    }


    void write_to_flash (void)    {                     
    BYTE i;

        iap_copy_to_flash(&display_address, OFFSET_ADDRESS, 1);
        delay_1_ms();

        iap_copy_to_flash(&version, OFFSET_VERSION, 1);
        delay_1_ms();

        for (i=0;i<8;i++)     {
            iap_copy_to_flash(&serial_no[i], OFFSET_VERSION+i, 1);
            delay_1_ms();
            }

        }

¿La pregunta es donde me equivoco? Sectores en un dispositivo LPC178x / 177x enlace en la página 883. Tal vez no escribo y leo datos correctamente por lo que todavía se encuentra en la memoria RAM.

    
pregunta Lazar

1 respuesta

1

¿Ha visto el flujo de IAP mencionado en la sección 37.8 de la hoja de datos? Asegúrate de seguir todos los pasos mencionados allí. También se puede escribir en su flash solo si la dirección no contiene ningún dato actualmente. Si fue escrito anteriormente, debe borrar todo el sector y luego programarlo nuevamente. Lea esto nota de aplicación para un ejemplo en IAP para la serie LPC17xx . Puede tener un nivel seguro de protección / seguridad de escritura habilitado de forma predeterminada.

    
respondido por el caveman

Lea otras preguntas en las etiquetas