EEPROM: ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับความทรงจำนี้

EEPROM

หากคุณเป็นผู้ผลิตและคุณกำลังทำโครงการ DIY ที่คุณต้องทำงานกับหน่วยความจำแน่นอนว่าคุณรู้อยู่แล้วว่าความทรงจำต่างๆที่ Arduino รวมเข้าด้วยกันทำงานอย่างไรเช่นแฟลช (ไม่ลบเลือนที่เก็บร่างและโปรแกรมโหลดบูต) SRAM (หน่วยความจำที่รวดเร็วและลบเลือนโดยที่ตัวแปรของโปรแกรมยังคงอยู่ระหว่างการประมวลผล) และ EEPROM (ไม่ลบเลือนและสามารถใช้เพื่อจัดเก็บข้อมูลการรีบูต)

นอกจาก EEPROM ที่รวมอยู่ใน Arduino แล้วคุณยังสามารถใช้ชิปภายนอกของ ความทรงจำแบบนี้ในขณะที่ อีกหนึ่งองค์ประกอบ. พวกเขาไม่ซับซ้อนในการทำความเข้าใจหรือโต้ตอบกับพวกเขาเพื่อสร้างการเข้าถึง (การเขียนและการอ่าน) หรือการอัปเดตข้อมูลที่จัดเก็บ ที่นี่คุณจะพบทุกสิ่งที่คุณจำเป็นต้องรู้เพื่อเริ่มทำงานกับความทรงจำประเภทนี้ ...

EEPROM คืออะไร?

EEPROM ของ STMicroelectronics

EEPROM ของ STMicroelectronics

La EEPROM (หน่วยความจำเฉพาะสีแดงที่ตั้งโปรแกรมได้ด้วยไฟฟ้าที่ลบได้) เป็นหน่วยความจำ ROM ประเภทหนึ่งนั่นคือหน่วยความจำแบบไม่ลบเลือนซึ่งข้อมูลจะถูกจัดเก็บอย่างถาวรแม้ว่าแหล่งจ่ายไฟจะถูกลบออกไปก็ตาม นั่นทำให้พวกเขาอยู่อีกด้านหนึ่งของ RAM (Random Access Memory) ซึ่งจะสูญเสียข้อมูลทั้งหมดเมื่อไม่ได้ใช้พลังงาน

ในกรณีของ EEPROM ไม่ใช่หน่วยความจำเช่น ROM ซึ่งข้อมูลถูกเขียนและไม่สามารถเปลี่ยนแปลงได้อีกต่อไป EEPROM เช่นแฟลช ยอมรับว่ามีการเปลี่ยนแปลง ตามความจำเป็น. นั่นคือข้อมูลบางส่วนสามารถจัดเก็บและลบเพื่อจัดเก็บข้อมูลที่แตกต่างกันได้

ในความเป็นจริงตามคำย่อระบุว่าเป็นไฟล์ หน่วยความจำที่ลบได้ด้วยไฟฟ้า (ลบได้ด้วยไฟฟ้า) สำหรับการตั้งโปรแกรมใหม่ สิ่งนี้แตกต่างจาก ROM ประเภทอื่นซึ่งสามารถลบได้เช่นเดียวกับ EPROM แต่ในกรณีนี้จะไม่ใช้กระแสไฟฟ้าเพื่อลบเซลล์หน่วยความจำ แต่จะมี "หน้าต่าง" ควอตซ์บนชิปเพื่อให้สามารถฉายแสงยูวีได้ด้วย ซึ่งมันถูกลบ

ลักษณะของ EPROM มันทำให้พวกเขารู้สึกไม่สบายใจพอสมควรต้องฉายรังสีเหล่านั้นเพื่อลบล้างพวกมัน และที่เลวร้ายที่สุดพวกมันอาจถูกลบโดยไม่ได้ตั้งใจหากสัมผัสกับรังสีชนิดนี้ ใน EEPROMs อนุญาตให้ทำผ่านแรงดันไฟฟ้าได้อย่างสะดวกสบายและปลอดภัยยิ่งขึ้น

โครงสร้างภายใน

แผนภาพ EEPROM

ที่มา: Researchgate.net

เพื่อให้ EEPROM ทำงานได้จำเป็นต้องมีเซลล์หน่วยความจำโดยเฉพาะ พวกเขาสร้างขึ้นโดยใช้ทรานซิสเตอร์ชนิด MOS แต่มีประตูลอยเมื่อเทียบกับ MOSFET แบบเดิม ทรานซิสเตอร์ใหม่เหล่านี้มีโครงสร้างที่เรียกว่า มอสและสถานะปกติจะถูกตัดออกและเอาต์พุตจะให้ตรรกะ 1 เสมอ

เซลล์ EEPROM เหล่านี้สามารถอ่านได้ไม่ จำกัด จำนวนครั้ง แต่มีข้อ จำกัด ใน จำนวนครั้งที่สามารถลบและตั้งโปรแกรมใหม่ได้เช่นเดียวกับที่เกิดขึ้นกับคนอื่น ๆ อีกมากมาย สิ่งนี้เกิดขึ้นกับแฟลชด้วยซึ่งเป็นสาเหตุที่มีการพูดถึงความทนทานของฮาร์ดไดรฟ์ SSD ไดรฟ์ปากกาและอื่น ๆ มากมาย

ในกรณีของ SAMOS ขีด จำกัด นี้อยู่ระหว่าง 100.000 และ 1.000.000 ครั้ง. หลังจากนั้นพวกเขาจะล้มเหลว อย่างไรก็ตามโครงสร้างบางอย่างที่สร้างขึ้นโดยคนรู้จักเก่าหนึ่งในผู้ยิ่งใหญ่: ดร. Fujio Masuoka จาก Toshiba (1984) ซึ่งได้สร้างความทรงจำที่สำคัญอื่น ๆ และโครงสร้างเซมิคอนดักเตอร์ ... อย่างไรก็ตามชิปตัวแรกที่เปิดตัวใน ตลาดเป็นของ Intel ตั้งแต่ปี 1988 ซึ่งเป็น EEPROM ประเภท NOR

นอกจากนี้คุณต้องรู้ว่าหน่วยความจำประเภทนี้มักจะเชื่อมโยงกับซีพียูหรือคอนโทรลเลอร์ผ่าน รถบัส ด้วยโปรโตคอลเช่น SPI I2Cฯลฯ ในกรณีของ MCU (ไมโครคอนโทรลเลอร์) มักจะรวมอยู่ภายในเช่นเดียวกับใน DSP บางรุ่นเพื่อให้ได้ความเร็วที่มากขึ้น

ดังที่เห็นได้จากภาพด้านบนไฟล์ ทรานซิสเตอร์ SAMOS ที่สร้างเซลล์หน่วยความจำจะถูกจัดกลุ่มในกรณีนั้นเป็นคู่ เส้นหนึ่งที่ติดอยู่กับประตูของทรานซิสเตอร์บางตัวทำหน้าที่เป็นเส้นทางเลือกเพื่อทำเครื่องหมายหรือส่งสัญญาณว่าสายนั้นสำหรับการเข้าถึง (การอ่านและการเขียน) และอีกเส้นหนึ่งจะเป็นเส้นที่เก็บบิตข้อมูล (0 หรือ 1)

ทรานซิสเตอร์ถูกจัดแนวให้เข้ากับความยาวของคำที่ต้องการ (4-bit, 8-bit, 16-bit, ... ) ความจุ คุณต้องการมี EEPROM (เช่น: สามารถมีความยาวคำ 64 บิตและ 16 บรรทัด = 1024 บิตนั่นคือ 1kb)

EERPOM ทำงานอย่างไร?

อย่างที่คุณเห็นด้านข้างเพื่อดำเนินการ งานที่แตกต่างกันแรงดันไฟฟ้าของประตูแหล่งที่มาและท่อระบายน้ำของคุณต้องเป็นแบบคอนกรีต:

  • ประตู 20v และ Drain ที่ 20v = การเขียนโปรแกรม (การเขียน) ของเซลล์หน่วยความจำเพื่อจัดเก็บบิตที่ต้องการ
  • ประตู 0v และ Drain ที่ 20v = ล้างบิตที่เก็บไว้เพื่อให้สามารถตั้งโปรแกรมใหม่ด้วยค่าอื่นได้
  • ประตูที่ 5v และระบายที่ 5v = อ่านบิตที่เก็บไว้ เนื่องจากแรงดันเกตต่ำกว่าค่าที่เขียนไว้ค่าที่เก็บไว้จะไม่ถูกเปลี่ยนแปลง สิ่งเดียวกันนี้เกิดขึ้นกับแรงดันไฟฟ้าของท่อระบายน้ำที่ต่ำกว่าบิตที่เก็บไว้จะไม่ถูกลบ

สรุป EEPROMs ใช้ไม่กี่ แรงดันไฟฟ้า "สูง" สำหรับการลบและการเขียนในขณะที่ใช้แรงดันไฟฟ้าต่ำกว่าในการอ่าน ...

ซื้อ EEPROM และใช้งานได้

STMicroelectronicsซึ่งเป็นผู้ผลิตไมโครอิเล็กทรอนิกส์ของฝรั่งเศสเป็นอันดับหนึ่งในชิป EEPROM ประเภทนี้แม้ว่าจะมีผู้ผลิตรายอื่นหลายรายเช่น Microchip ชิปเหล่านี้มักจะมีราคาค่อนข้างถูก

หากคุณตัดสินใจที่จะ ใช้ชิปตัวใดตัวหนึ่งเหล่านี้ คุณควรดูผู้ผลิตและรุ่นและมองหา แผ่นข้อมูล เพื่อดูคำแนะนำทั้งหมดของผู้ผลิตเนื่องจากอาจแตกต่างกันไป ตัวอย่างเช่นพวกเขาจะระบุแรงดันไฟฟ้าที่ใช้งานได้ pinoutฯลฯ คุณจึงสามารถกำหนดค่าโครงการของคุณได้อย่างถูกต้อง

อาจมีมากหรือน้อยขึ้นอยู่กับขนาดและรุ่น ต้นสน. แต่เพื่อให้คุณทราบว่าชิป IC 24LC512 EEPROM ทั่วไปอาจประกอบด้วย:

  • พิน 1 (A0), 2 (A1) และ 3 (A3) ที่ใช้ในการกำหนดค่าคือพินสำหรับเลือก
  • Pin 4 (Vss / GND) เชื่อมต่อกับกราวด์
  • Pin 5 (SDA) สำหรับข้อมูลอนุกรมสำหรับการสื่อสาร I2C
  • Pin 6 (SCL) สำหรับนาฬิกาสำหรับ I2C
  • Pin 7 (WP) ป้องกันการเขียนหรือการป้องกันการเขียน หากเชื่อมต่อกับ GND การเขียนจะเปิดใช้งาน หากเชื่อมต่อกับ Vcc จะถูกปิดใช้งาน
  • Pin 8 (Vcc) เชื่อมต่อกับแหล่งจ่ายไฟ

เป็น ข้อกำหนดทางเทคนิค ของชิปนี้:

  • 512K (64 × 8)
  • บัฟเฟอร์ 128 ไบต์สำหรับการเขียน
  • แรงดันไฟฟ้าที่ใช้งานได้: 1.8v ถึง 5.5v
  • อ่านปัจจุบัน: 40uA
  • บัสสื่อสาร: I2C
  • วงจรการเขียน: 5ms
  • ความเข้ากันได้ของนาฬิกา: 100-400Khz
  • ความทนทาน: 10.000.000 รอบ
  • สามารถเรียงซ้อนได้ถึง 8 อุปกรณ์
  • บรรจุภัณฑ์: กรมทรัพย์สินทางปัญญา 8 พิน SOIJ SOIC และ TSSOP

Dónde comprar

ไปยัง ซื้อชิป EEPROMคุณสามารถดูคำแนะนำเหล่านี้:

การใช้ Arduino EEPROM

ภาพหน้าจอของ Arduino IDE

หากคุณต้องการเริ่มทำงานกับ EEPROM คุณสามารถลองใช้ 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 ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา