EEPROM :이 메모리에 대해 알아야 할 모든 것

EEPROM

만약 당신이 메이커이고 메모리로 작업해야하는 DIY 프로젝트를하고 있다면, 분명히 Arduino가 통합하는 다양한 메모리가 어떻게 작동하는지 이미 알고있을 것입니다 (예 : 플래시 (스케치와 부트 로더가 저장되는 비 휘발성)). SRAM (처리 중에 프로그램 변수가 남아있는 빠르고 휘발성 메모리) 및 EEPROM (비 휘발성이며 재부팅 정보를 저장하는 데 사용할 수 있음).

글쎄, Arduino에 포함 된 EEPROM 외에도 다음과 같은 외부 칩을 사용할 수 있습니다. 이런 종류의 기억으로 하나 더 구성 요소. 이들은 이해하기 복잡하지 않으며 저장된 정보에 대한 액세스 (쓰기 및 읽기) 또는 업데이트를 생성하기 위해 상호 작용하지도 않습니다. 여기에서 이러한 유형의 추억을 작업하기 위해 알아야 할 모든 것을 찾을 수 있습니다.

EEPROM이란 무엇입니까?

ST마이크로일렉트로닉스 EEPROM

ST마이크로일렉트로닉스 EEPROM

La EEPROM (전기적으로 지울 수있는 프로그래밍 가능 적색 전용 메모리) ROM 메모리, 즉 전원 공급 장치가 제거 되어도 데이터가 영구적으로 저장되는 비 휘발성 메모리입니다. 이는 RAM (Random Access Memory)의 다른쪽에 배치되며, 전원이 공급되지 않으면 모든 데이터가 손실됩니다.

EEPROM의 경우 ROM과 같은 메모리가 아니므로 데이터가 기록되고 더 이상 변경할 수 없습니다. 플래시처럼 EEPROM, 변경을 인정하다 필요에 따라. 즉, 일부 데이터를 저장하고 지워서 다른 데이터를 저장할 수 있습니다.

실제로 두문자어에서 알 수 있듯이 전기적으로 지울 수있는 메모리 (전기적으로 지울 수 있음) 재 프로그래밍 용. 이것은 EPROM처럼 지울 수있는 다른 유형의 ROM과 다르지만,이 경우에는 메모리 셀을 지우는 데 전기가 사용되지 않고 대신 칩에 UV 빛을 투사 할 수있는 석영 "창"이 있습니다. 그것은 지워졌습니다.

그 특성 EPROM 그것은 그들을 지우기 위해 광선을 투사해야하는 다소 불편하게 만들었습니다. 그리고 최악의 경우 이러한 유형의 방사선에 노출되면 실수로 지워질 수 있습니다. EEPROM에서는 전압을 통해보다 편안하고 안전한 방식으로이를 수행 할 수 있습니다.

내부 구조

EEPROM 다이어그램

출처 : Researchgate.net

EEPROM이 작동하려면 매우 특별한 메모리 셀이 필요합니다. MOS 형 트랜지스터를 사용하여 제작되었지만 기존 MOSFET에 비해 플로팅 게이트가 있습니다. 이 새로운 트랜지스터는 다음과 같은 구조를 따릅니다. 사모스, 정상 상태가 차단되고 출력은 항상 논리 1을 제공합니다.

이러한 EEPROM 셀은 무제한으로 읽을 수 있지만 지우고 다시 프로그래밍 할 수있는 횟수, 다른 많은 사람들에게 발생합니다. 이것은 플래시에서도 발생하기 때문에 SSD 하드 드라이브, 펜 드라이브 등의 내구성에 대해 많은 논의가있었습니다.

SAMOS의 경우이 제한은 100.000 및 1.000.000 회. 그 후에는 실패합니다. 그건 그렇고, 위대한 지인 중 한 사람이 만든 일부 구조 : 다른 중요한 메모리와 반도체 구조를 만든 도시바의 Fujio Masuoka 박사 (1984) ... 그러나 첫 번째 칩은 시장은 NOR 유형 EEPROM 인 1988 년의 Intel 제품이었습니다.

또한 이러한 유형의 메모리는 일반적으로 다음을 통해 CPU 또는 컨트롤러에 연결된다는 사실을 알아야합니다. 버스 SPI와 같은 프로토콜로 I2C등 MCU (마이크로 컨트롤러)의 경우 일반적으로 일부 DSP에서와 같이 내부에 통합되어 더 빠른 속도를 달성합니다.

위 이미지에서 볼 수 있듯이 SAMOS 트랜지스터 메모리 셀을 형성하는이 경우 쌍으로 그룹화됩니다. 일부 트랜지스터의 게이트에 연결된 라인 중 하나는 액세스 (읽기 및 쓰기)를 위해 해당 라인을 표시하거나 신호를 보내는 선택 라인 역할을하며, 다른 하나는 정보 비트 (0 또는 1)를 저장하는 라인이됩니다.

트랜지스터는 필요한 워드 길이 (4 비트, 8 비트, 16 비트, ...)와 수용력 EEPROM이 필요합니다 (예 : 64 비트 워드 길이와 16 줄 = 1024 비트, 즉 1kb).

EERPOM은 어떻게 작동합니까?

측면에서 볼 수 있듯이 수행하려면 다른 작업, 게이트, 소스 및 드레인의 전압은 구체적이어야합니다.

  • 20v에서 도어 및 20v에서 드레인 = 원하는 비트를 저장하기위한 메모리 셀의 프로그래밍 (쓰기).
  • 0v에서 도어 및 20v에서 드레인 = 다른 값으로 다시 프로그래밍 할 수 있도록 저장된 비트를 지 웁니다.
  • 5v에서 게이트 및 5v에서 드레인 = 저장된 비트를 읽으십시오. 게이트 전압이 쓰기 전압보다 낮기 때문에 저장된 값은 변경되지 않습니다. 드레인 전압도 마찬가지이며, 더 낮 으면 저장된 비트가 지워지지 않습니다.

결론, EEPROM은 몇 가지 전압 지우기 및 쓰기에 "높음", 읽기에 더 낮은 전압 사용 ...

EEPROM을 구입하고 작업

ST 마이크로 일렉트로닉스프랑스 마이크로 일렉트로닉스 제조업체 인는 이러한 유형의 EEPROM 칩에서 XNUMX 위를 차지하고 있지만 Microchip과 같은 다른 제조업체도 많이 있습니다. 이 칩은 일반적으로 매우 저렴합니다.

당신이 결정한다면 이 칩 중 하나를 사용하고 제조업체와 모델을 확인하고 데이터 시트 제조업체의 권장 사항은 모두 다를 수 있으므로 확인하십시오. 예를 들어 작동하는 전압을 지정합니다. 핀아웃등 따라서 프로젝트를 올바르게 구성 할 수 있습니다.

크기와 모델에 따라 다소 차이가있을 수 있습니다. 소나무. 그러나 아이디어를 제공하기 위해 일반적인 24LC512 EEPROM IC 칩은 다음과 같이 구성 될 수 있습니다.

  • 구성에 사용 된 핀 1 (A0), 2 (A1) 및 3 (A3)은 선택 핀입니다.
  • 핀 4 (Vss / GND)가 접지에 연결되었습니다.
  • I5C 통신을위한 직렬 데이터 용 핀 2 (SDA).
  • I6C 클럭 용 핀 2 (SCL).
  • 핀 7 (WP), 쓰기 방지 또는 쓰기 방지. GND에 연결하면 쓰기가 가능합니다. Vcc에 연결되면 비활성화됩니다.
  • 전원에 연결된 핀 8 (Vcc).

기술 사양 이 칩의 :

  • 512K (64 × 8)
  • 쓰기 용 128 바이트 버퍼
  • 작동 전압 : 1.8v ~ 5.5v
  • 현재 읽기 : 40uA
  • 통신 버스 : I2C
  • 쓰기주기 : 5ms
  • 클록 호환성 : 100-400Khz
  • 내구성 : 10.000.000 회
  • 최대 8 개의 장치를 캐스케이드 할 수 있습니다.
  • 포장 : 8 핀 DIP, SOIJ, SOIC 및 TSSOP.

구입처

EEPROM 칩 구매, 다음 권장 사항을 살펴볼 수 있습니다.

Arduino EEPROM 사용

Arduino IDE의 스크린 샷

EEPROM으로 작업을 시작하려면 보드에서 시도해 볼 수도 있습니다. 아두 이노. 논리 및 프로그래밍 수준에서 작동 방식을 이해하기 위해 간단한 방법으로 프로그래밍 할 수 있습니다.

변수 저장 예

//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
}

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()
{
}

값 업데이트, 일정 변경 예

//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
}

추가 정보 - 무료 Arduino 과정


코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.