cursada_mc2
Base de control de temperatura para EDU-CIAA-NXP
Loading...
Searching...
No Matches
eeprom_driver.c File Reference

Driver de acceso a la EEPROM interna del LPC4337. More...

#include "eeprom_driver.h"
#include "chip.h"
#include <string.h>
+ Include dependency graph for eeprom_driver.c:

Go to the source code of this file.

Macros

#define EEPROM_DRIVER_PAGE_WORDS   (EEPROM_PAGE_SIZE / sizeof(uint32_t))
 

Functions

static void driver_eeprom_programar_pagina (uint32_t pagina, const uint8_t *datos_pagina)
 Programa una pagina completa de EEPROM a partir de un buffer RAM.
 
bool driver_eeprom_init (void)
 Inicializa el periferico EEPROM.
 
bool driver_eeprom_read (void *destino, uint32_t cantidad)
 Lee un bloque desde la region reservada de EEPROM.
 
bool driver_eeprom_write (const void *origen, uint32_t cantidad)
 Escribe un bloque dentro de la region reservada de EEPROM.
 

Variables

static bool eeprom_driver_inicializado_ = false
 

Macro Definition Documentation

◆ EEPROM_DRIVER_PAGE_WORDS

#define EEPROM_DRIVER_PAGE_WORDS   (EEPROM_PAGE_SIZE / sizeof(uint32_t))

Definition at line 12 of file eeprom_driver.c.

Function Documentation

◆ driver_eeprom_init()

bool driver_eeprom_init ( void  )
Return values
trueSi la EEPROM quedo lista para usarse.
falseSi no pudo inicializarse.

Definition at line 39 of file eeprom_driver.c.

References eeprom_driver_inicializado_.

Referenced by app_init().

◆ driver_eeprom_programar_pagina()

static void driver_eeprom_programar_pagina ( uint32_t  pagina,
const uint8_t *  datos_pagina 
)
static

La EEPROM interna del LPC43xx se programa por palabras dentro de una pagina. El driver arma previamente la pagina completa en RAM para poder soportar escrituras parciales sin corromper los bytes vecinos.

Definition at line 23 of file eeprom_driver.c.

References EEPROM_DRIVER_PAGE_WORDS.

Referenced by driver_eeprom_write().

◆ driver_eeprom_read()

bool driver_eeprom_read ( void *  destino,
uint32_t  cantidad 
)
Parameters
destinoBuffer de destino.
cantidadCantidad de bytes a leer.
Return values
trueSi la lectura fue valida.
falseSi el rango o los punteros son invalidos.

Definition at line 47 of file eeprom_driver.c.

References DRIVER_EEPROM_REGION_SIZE, and eeprom_driver_inicializado_.

Referenced by parametros_init().

◆ driver_eeprom_write()

bool driver_eeprom_write ( const void *  origen,
uint32_t  cantidad 
)
Parameters
origenBuffer de origen.
cantidadCantidad de bytes a escribir.
Return values
trueSi la escritura fue valida.
falseSi el rango o los punteros son invalidos.

Cada pagina se trata con una estrategia read-modify-write.

Primero se copia la pagina actual desde EEPROM, luego se parchea en RAM solo el rango solicitado y finalmente se reprograma la pagina completa solo si hubo cambios reales. Esto evita escrituras innecesarias aunque la API publica siempre escriba el bloque completo reservado para la app.

Definition at line 65 of file eeprom_driver.c.

References driver_eeprom_programar_pagina(), DRIVER_EEPROM_REGION_SIZE, and eeprom_driver_inicializado_.

Referenced by parametros_guardar().

Variable Documentation

◆ eeprom_driver_inicializado_

bool eeprom_driver_inicializado_ = false
static

Definition at line 14 of file eeprom_driver.c.

Referenced by driver_eeprom_init(), driver_eeprom_read(), and driver_eeprom_write().