EEPROM con NRF24LE1
Todos los incidentes buenos y malos se almacenan en la memoria cerebral de los humanos. De manera similar, el controlador usa EEPROM para guardar datos o variables. En este artículo veremos cómo utilizar la EEPROM NRF24LE1 y ¿cuáles son sus usos?
¿Sabes qué hace la memoria en la electrónica? Veamos un ejemplo de un condensador. Tiene la capacidad de retener voltaje y, por lo tanto, se trata como un componente de memoria. Hay dos tipos de memorias en electrónica; Volátil y no volátil. El volátil se borra si se corta la alimentación suministrada a esta memoria. Esto significa que los datos almacenados se borrarán en caso de un corte de energía. No volátil tiene la ventaja de retener datos incluso cuando no hay energía. El ejemplo más común de memoria volátil es la RAM utilizada en nuestros ordenadores. Los ejemplos de memoria volátil son el disco duro, las tarjetas SD, EEPROM, etc.
Fig. 1: Prototipo de interfaz NRF24LE1 y EEPROM
En este artículo, nos centraremos en la EEPROM de nuestro módulo NRF y su uso. EEPROM significa memoria de sólo lectura programable y borrable eléctricamente. Es un tipo de no volátil. Puede programarse y borrarse proporcionando señales de programación especiales. Están disponibles en tamaños pequeños y pueden conectarse fácilmente con AVR, Arduino o PIC. A veces están integrados en microcontroladores. Pero para ampliar la memoria tenemos que utilizar la externa.
El NRF24LE1, al ser un componente increíble, tiene memoria EEPROM incorporada. Dispone de 1,5 Kb de memoria de datos no volátil. Esta memoria es útil cuando conectamos sensores y queremos conservar las lecturas para un uso futuro. Para utilizar las capacidades de lectura y escritura de esta memoria, usaremos la función en nuestro código.
Utilizaremos el nrfsdk (kit de desarrollo de software) proporcionado por Nordic Semiconductor Ltd.
Visite nuestro artículo anterior sobre NRF24LE1 para obtener más ayuda.
Algunas funciones que usaremos para leer y escribir EEPROM son:
• lib_eeprom_byte_write: esta función toma la ubicación de la dirección y un byte de datos para escribir.
• lib_eeprom_bytes_write: esta función toma varios bytes de datos junto con el número de bytes y la dirección inicial.
• lib_eeprom_byte_read: esta función genera datos de bytes a partir de la dirección de memoria dada.
FUNCIÓN | PARÁMETRO DE ENTRADA | SALIDA | DESCRIPCIÓN |
---|---|---|---|
lib_eeprom_byte_write | Dirección de 8 bits y datos de 8 bits. | – | Para escribir datos de 8 bits en la dirección de bits especificada |
lib_eeprom_bytes_write | Dirección de 8 bits, puntero de 8 bits a los bytes que se escribirán y valor de 8 bits que indica el número de bytes que se escribirán | – | Para escribir varios bytes en la dirección inicial especificada |
lib_eeprom_byte_read | dirección de 8 bits | datos de 8 bits | Para leer datos de 8 bits desde una dirección de 8 bits especificada |
lib_eeprom_bytes_read | Dirección de 8 bits, puntero de 8 bits a los bytes que se escribirán y valor de 8 bits que indica el número de bytes que se leerán. | – | Para leer varios bytes de la dirección inicial especificada. |
Para una comprensión completa, observe la implementación de estas funciones en el código. El código ha sido comentado para una mayor comprensión.
Escribiremos algunos datos en la memoria EEPROM y luego reiniciaremos nuestro sistema. A continuación leeremos los datos previamente almacenados para comprobar el funcionamiento de la EEPROM.
Código fuente del proyecto
###
//Programa para
/* Copyright (c) 2009 Nordic Semiconductor. Todos los derechos reservados.
**La información contenida en este documento es propiedad confidencial de Nordic*ASA Semiconductor. Los términos y condiciones de uso se describen detalladamente.* en el CONTRATO DE LICENCIA DE SOFTWARE ESTÁNDAR DE NORDIC SEMICONDUCTORES.** Se concede a los licenciatarios el uso gratuito e intransferible de la información. NO* Se proporciona GARANTÍA DE CUALQUIER TIPO. Este título NO debe eliminarse del* el archivo.**$Última revisión modificada: 133$*/#include "reg24le1.h" // Archivo de encabezado de E/S para NRF24LE1#include "lib_eeprom.h" // archivo de encabezado que contiene las funciones de lectura/escritura de eeprom#include "hal_delay.h" // archivo de encabezado que contiene funciones de retardo// Código principalvacío principal{P1DIR = 0; // define el puerto1 como salidaP1 = 0; // hace que todos los pines del Puerto 1 estén bajosP1 = lib_eeprom_byte_read(0x00); // carga datos de 8 bits desde eeprom en la dirección 0x00retraso_ms(2000); //Retraso de 2 segundoswhile(1) //bucle infinito{P10 = 0; //hacer puerto1 pin0 bajoP11 = 0; //hacer puerto1 pin1 bajolib_eeprom_byte_write(0x00, P1); // escribe datos del registro P1 a la eepromretraso_ms(2000); //Retraso de 2 segundoslib_eeprom_byte_write(0x00, P1); // escribe datos del registro P1 a la eepromP10 = 1; //hace que el pin0 del puerto1 sea altoP11 = 0; //hacer puerto1 pin1 bajolib_eeprom_byte_write(0x00, P1); // escribe datos del registro P1 a la eepromretraso_ms(2000); //Retraso de 2 segundosP10 = 0; //hacer puerto1 pin0 bajoP11 = 1; //hace que el pin1 del puerto1 sea altolib_eeprom_byte_write(0x00, P1); // escribe datos del registro P1 a la eepromretraso_ms(2000); //Retraso de 2 segundosP10 = 1; //hace que el pin0 del puerto1 sea altoP11 = 1; //hace que el pin1 del puerto1 sea altolib_eeprom_byte_write(0x00, P1); // escribe datos del registro P1 a la eepromretraso_ms(2000); //Retraso de 2 segundos}}###
Diagramas de circuito
Diagrama de circuito-NRF24LE1-Interfaz EEPROM |
Vídeo del proyecto