EEPROM: tudo que você precisa saber sobre esta memória

EEPROM

Se você é um criador e está fazendo alguns projetos DIY nos quais precisa trabalhar com memória, certamente já sabe como funcionam as diferentes memórias que o Arduino integra, como flash (não volátil onde o sketch e o bootloader são armazenados), SRAM (uma memória rápida e volátil onde as variáveis ​​do programa permanecem durante o processamento), e o EEPROM (não volátil e pode ser usado para armazenar informações de reinicialização).

Bem, além da EEPROM incluída no Arduino, você também pode usar chips externos de este tipo de memóriaComo mais um componente. Não são complicados de entender, nem de interagir com eles para gerar acessos (escrita e leitura) ou atualizações das informações armazenadas. Aqui você encontrará tudo o que precisa saber para começar a trabalhar com esses tipos de memórias ...

O que é EEPROM?

EEPROM STMicroeletrônica

EEPROM STMicroeletrônica

La EEPROM (memória somente vermelha programável apagável eletricamente) É um tipo de memória ROM, ou seja, memória não volátil na qual os dados serão armazenados de forma permanente, mesmo que a alimentação seja desligada. Isso os coloca do outro lado das RAMs (Random Access Memory), que perdem todos os seus dados quando não estão ligados.

No caso da EEPROM, não é uma memória como a ROM, na qual os dados são gravados e não podem mais ser alterados. EEPROM, como flash, admite ter sido alterado como necessário. Ou seja, alguns dados podem ser armazenados e apagados para armazenar outros diferentes.

Na verdade, como seus acrônimos indicam, é um memória apagável eletricamente (apagável eletricamente) para reprogramação. Isso difere de outros tipos de ROM, que também são apagáveis, como as EPROMs, mas neste caso a eletricidade não é usada para apagar as células de memória, em vez disso, elas tinham uma "janela" de quartzo no chip para poder projetar uma luz ultravioleta. com o qual foi apagado.

Essa característica de EPROM isso os deixava um tanto desconfortáveis, ter que projetar aqueles raios para apagá-los. E, o pior de tudo, eles poderiam ser apagados acidentalmente se expostos a esse tipo de radiação. Nas EEPROMs, é permitido fazê-lo através de tensões, de forma mais confortável e segura.

Estrutura interna

Diagrama EEPROM

Fonte: Researchgate.net

Para que a EEPROM funcione, são necessárias células de memória muito particulares. Eles são construídos usando transistores do tipo MOS, mas têm uma porta flutuante em comparação com os MOSFETs tradicionais. Esses novos transistores seguem uma estrutura conhecida como SAMOS, e seu estado normal é cortado e a saída sempre fornecerá um 1 lógico.

Essas células EEPROM podem ser lidas um número ilimitado de vezes, mas é limitado em o número de vezes que eles podem ser apagados e reprogramados, como acontece com muitos outros. Isso também acontece com o flash, é por isso que se fala tanto sobre a durabilidade de discos rígidos SSD, pen drives, etc.

No caso do SAMOS, esse limite fica entre os 100.000 e 1.000.000 vezes. Depois disso, eles irão falhar. Aliás, algumas estruturas que foram criadas por um velho conhecido, um dos grandes: Dr. Fujio Masuoka da Toshiba (1984), que também criou outras memórias importantes e estruturas semicondutoras ... No entanto, o primeiro chip lançado no o mercado era o da Intel de 1988, um EEPROM tipo NOR.

Além disso, você deve saber que este tipo de memória geralmente está ligada a CPUs ou controladores através de ônibus com protocolos como SPI, I2Cetc. No caso de MCUs (microcontroladores), geralmente é integrado internamente, como em alguns DSPs, para atingir maior velocidade.

Como pode ser visto na imagem acima, o Transistores SAMOS que formam as células de memória, são agrupadas, nesse caso, em pares. Uma das linhas presas às portas de alguns transistores atua como uma linha de escolha, para marcar ou sinalizar aquela linha para acesso (leitura e escrita), e a outra será aquela que armazena o bit de informação (0 ou 1).

Os transistores são alinhados para formar os comprimentos de palavra necessários (4 bits, 8 bits, 16 bits, ...) e tantas palavras quanto capacidade tudo o que você tem a EEPROM (por exemplo: pode haver comprimentos de palavra de 64 bits e com 16 linhas = 1024 bits, ou seja, 1kb).

Como funciona um EERPOM?

Como você pode ver ao lado, para realizar as diferentes tarefas, a tensão de seu portão, fonte e dreno deve ser concreta:

  • Porta em 20v e drenagem em 20v = programação (escrita) da célula de memória para armazenar o bit desejado.
  • Porta em 0v e drenagem em 20v = limpar o bit armazenado para que ele possa ser reprogramado com outro valor.
  • Portão em 5v e drenagem em 5v = leia o bit armazenado. Como a tensão do gate é menor que a da escrita, o valor armazenado não será alterado. O mesmo acontece com a tensão de dreno, sendo menor, o bit armazenado não será apagado.

Conclusão, EEPROMs usam alguns tensões "High" para apagar e escrever, enquanto usa tensões mais baixas para ler ...

Compre EEPROM e trabalhe com ele

STMicroelectronics, fabricante francesa de microeletrônica, é a número um neste tipo de chips EEPROM, embora existam muitos outros fabricantes, como a Microchip. Esses chips são geralmente muito baratos.

Se você decidir use um desses chips, você deve ver o fabricante e o modelo e procurar por seus folha de dados para ver todas as recomendações do fabricante, pois podem variar de uma para outra. Por exemplo, eles vão especificar as tensões com as quais funciona, a pinagemetc. Assim, você pode configurar seu projeto corretamente.

Dependendo do tamanho e modelo, pode ter mais ou menos pinheiros. Mas, para se ter uma ideia, um chip 24LC512 EEPROM IC típico poderia ser composto de:

  • Os pinos 1 (A0), 2 (A1) e 3 (A3) usados ​​na configuração são os pinos de seleção.
  • Pino 4 (Vss / GND) conectado ao aterramento.
  • Pino 5 (SDA), para dados seriais para comunicação I2C.
  • Pino 6 (SCL), para o relógio para I2C.
  • Pino 7 (WP), proteção contra gravação ou proteção contra gravação. Se estiver conectado ao GND, a escrita será habilitada. Se ele se conectar ao Vcc, ele será desabilitado.
  • Pino 8 (Vcc), conectado à alimentação.

Como para o As especificações técnicas deste chip:

  • 512K (64 × 8)
  • Buffer de 128 bytes para escrita
  • Tensão operacional: 1.8v a 5.5v
  • Corrente de leitura: 40uA
  • Barramento de comunicação: I2C
  • Ciclo de gravação: 5ms
  • Compatibilidade do relógio: 100-400Khz
  • Durabilidade: 10.000.000 ciclos
  • Pode ser conectado em cascata para até 8 dispositivos
  • Embalagem: 8 pinos DIP, SOIJ, SOIC e TSSOP.

Onde comprar

Pára comprar chips eeprom, você pode dar uma olhada nestas recomendações:

Usando o Arduino EEPROM

Captura de tela do Arduino IDE

Se você quiser começar a trabalhar com a EEPROM, você também pode tentar a da sua placa Arduino. Pode ser programado de forma simples para entender em um nível lógico e de programação como pode funcionar.

Exemplo para salvar uma variável

//Almacenar un valor en la EEPROM
#include <EEPROM.h>
 
float sensorValue;
int eepromaddress = 0;
 
//Función para simular lectura de un sensor o pin
float ReadSensor()
{
  return 10.0f;
}
 
void setup()
{
}
 
void loop()
{
  sensorValue = ReadSensor(); //Lectura simulada del valor
  EEPROM.put( eepromaddress, sensorValue );  //Escritura del valor en la EEPROM
  eepromaddress += sizeof(float);  //Apuntar a la siguiente posición a escribir
  if(eepromaddress >= EEPROM.length()) eepromaddress = 0;  //Comprueba que no existe desbordamiento 
 
  delay(30000); //Espera 30s
}

Exemplo para ler dados de EEPROM

//Leer una variable de coma flotante
#include <EEPROM.h>
 
struct MyStruct{
  float field1;
  byte field2;
  char name[10];
};
 
void setup(){
  
  float f;
  int eepromaddress = 0; //La lectura comienza desde la dirección 0 de la EEPROM    
  EEPROM.get( eepromaddress, f );
  Serial.print( "Dato leído: " );
  Serial.println( f, 3 );  
 
  eepromaddress += sizeof(float);
}
 
void loop()
{
}

Exemplo para atualizar valores, reagendar

//Actualizar valor de la EEPROM escribiendo el dato entrante por la A0
#include <EEPROM.h>
 
int eepromaddress = 0;
 
void setup()
{
}
 
void loop()
{
   int val = analogRead(0) / 4;
   EEPROM.update(eepromaddress, val);
  
  eepromaddress += sizeof(int);
  if(address == EEPROM.length()) eepromaddress = 0;
 
  delay(10000);  //Espera de 10 segundos
}

Mais informação - Curso Arduino grátis


Seja o primeiro a comentar

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.