EEPROM. Ամեն ինչ, ինչ դուք պետք է իմանաք այս հիշողության մասին

EEPROM

Եթե ​​դուք պատրաստող եք և կատարում եք որոշ DIY նախագծեր, որոնցում պետք է աշխատեք հիշողության հետ, հաստատ հաստատ գիտեք, թե ինչպես են աշխատում Arduino- ի ինտեգրած տարբեր հիշողությունները, ինչպիսիք են ֆլեշը (ոչ ցնդող, որտեղ պահվում են ուրվագիծը և բեռնիչը), SRAM (արագ և անկայուն հիշողություն, երբ ծրագրի փոփոխականները մնում են մշակման ընթացքում) և EEPROM (ոչ ցնդող և կարող է օգտագործվել reboot տեղեկատվությունը պահելու համար):

Դե, Arduino- ի մեջ ներառված EEPROM- ից բացի, կարող եք նաև օգտագործել արտաքին չիպսեր այսպիսի հիշողությունԻնչպիսիք են ևս մեկ բաղադրիչ, Դրանք բարդ չեն ըմբռնելու և նրանց հետ շփվելու համար ՝ պահված տեղեկատվության մուտքեր (գրելու և կարդալու) կամ թարմացումներ առաջացնելու համար: Այստեղ դուք կգտնեք այն ամենը, ինչ ձեզ հարկավոր է իմանալ այս տեսակի հիշողությունների հետ աշխատելու համար ...

Ի՞նչ է EEPROM- ը:

STMicroelectronics EEPROM

STMicroelectronics EEPROM

La EEPROM (էլեկտրականորեն ջնջվող ծրագրավորվող միայն կարմիր հիշողություն) Դա ROM հիշողության տեսակ է, այսինքն ՝ ոչ ցնդող հիշողություն, որում տվյալները մշտապես կպահվեն, նույնիսկ եթե էլեկտրասնուցումը հանվի: Դա նրանց դնում է RAM- ի մյուս կողմում (Պատահական մուտքի հիշողություն), որոնք կորցնում են իրենց բոլոր տվյալները, երբ չեն սնուցվում:

EEPROM- ի դեպքում դա ROM- ի նման հիշողություն չէ, որում տվյալները գրանցվում են և այլևս չեն կարող փոփոխվել: EEPROM, ինչպես ֆլեշ, ընդունում է, որ փոփոխվել է ըստ անհրաժեշտության: Այլ կերպ ասած, որոշ տվյալներ կարող են պահվել և ջնջվել `տարբերները պահելու համար:

Իրականում, ինչպես նշում են նրա հապավումները, դա ա էլեկտրականորեն ջնջվող հիշողություն (էլեկտրականորեն ջնջվում է) վերածրագրավորման համար: Սա տարբերվում է ROM- ի այլ տեսակներից, որոնք նույնպես ջնջվում են EPROM- ների նման, բայց այս դեպքում էլեկտրաէներգիան չի օգտագործվում հիշողության բջիջները ջնջելու համար, փոխարենը նրանք ուներ քվարցային «պատուհան» չիպի վրա, որպեսզի կարողանան ուլտրամանուշակագույն լույս առաջացնել: որը այն ջնջվել է:

Այդ բնութագիրը ԷՊՐՈՄ դա նրանց մի փոքր անհարմար էր դարձնում ՝ ստիպված լինելով նախագծել այդ ճառագայթները ՝ դրանք ջնջելու համար: Եվ, ամենավատը, այն է, որ դրանք կարող են պատահաբար ջնջվել, եթե ենթարկվեն այս տեսակի ճառագայթման: EEPROM- ներում թույլատրվում է դա անել լարման միջոցով, ավելի հարմարավետ և անվտանգ եղանակով:

Ներքին կառուցվածքը

EEPROM դիագրամ

Աղբյուրը `Researchgate.net

Որպեսզի EEPROM- ը աշխատի, անհրաժեշտ են շատ հատուկ հիշողության բջիջներ: Դրանք կառուցված են MOS տիպի տրանզիստորների միջոցով, բայց ավանդական MOSFET- ի համեմատ ունեն լողացող դարպաս: Այս նոր տրանզիստորները հետևում են մի կառույցի, որը հայտնի է որպես ՍԱՄՈՍ, և դրա նորմալ վիճակը կտրված է, և ելքը միշտ տրամաբանական 1 կտա:

Այս EEPROM բջիջները կարող են ընթերցվել անսահմանափակ թվով անգամ, բայց այն սահմանափակ է ներսում քանի անգամ դրանք կարող են ջնջվել և վերածրագրավորվել, ինչպես դա պատահում է շատ ուրիշների հետ: Դա պատահում է նաև ֆլեշի հետ, այդ իսկ պատճառով այդքան շատ է խոսվել SSD կոշտ սկավառակների, գրիչ կրիչների և այլնի կայունության մասին:

SAMOS- ի դեպքում այս սահմանը գտնվում է միջակայքում 100.000 և 1.000.000 անգամ, Դրանից հետո նրանք ձախողվելու են: Ի դեպ, որոշ կառույցներ, որոնք ստեղծվել են հին ծանոթներից մեկի `մեծերից մեկի` դոկտոր Ֆուջիո Մասուոկայի կողմից Toshiba- ից (1984 թ.), Ով նաև ստեղծել է այլ կարևոր հիշողություններ և կիսահաղորդչային կառույցներ ... Այնուամենայնիվ, առաջին չիպը գործարկվեց շուկան Intel- ինն էր 1988 թվականից ՝ NOR տիպի EEPROM:

Բացի այդ, դուք պետք է իմանաք, որ այս տեսակի հիշողությունը սովորաբար կապվում է պրոցեսորների կամ վերահսկիչների հետ ավտոբուս SPI- ի նման արձանագրություններով, I2Cև այլն MCU- ների (միկրոհսկիչների) դեպքում այն ​​սովորաբար ինտեգրված է ներսում, ինչպես որոշ DSP- ներում `ավելի մեծ արագության հասնելու համար:

Ինչպես երեւում է վերևում նկարում, SAMOS տրանզիստորներ որոնք կազմում են հիշողության բջիջները, այդ դեպքում խմբավորված են զույգերով: Որոշ տրանզիստորների դարպասներին կցված տողերից մեկը գործում է որպես ընտրության գիծ ՝ նշելու կամ ազդանշան տալու համար այդ տողը (կարդալ և գրել), իսկ մյուսը ՝ այն, որը պահում է տեղեկատվության բիթը (0 կամ 1):

Տրանզիստորները հավասարեցված են `կազմելու համար պահանջվող բառերի երկարությունները (4-բիթանոց, 8-բիթանոց, 16-բիթանոց, ...) և այնքան բառ, որքան կարողություն դուք ուզում եք ունենալ EEPROM (օրինակ ՝ կարող է լինել 64-բիթանոց բառերի երկարություններ և 16 տողերով = 1024 բիթ, այսինքն ՝ 1 կբ):

Ինչպե՞ս է աշխատում EERPOM- ը:

Ինչպես տեսնում եք կողքին, կատարել տարբեր առաջադրանքները, ձեր դարպասի, աղբյուրի և ջրահեռացման լարումը պետք է լինի կոնկրետ.

  • Դուռը 20 վ-ով, ​​իսկ արտահոսքը `20 վ-ով = հիշողության բջիջի ծրագրավորում (գրառում) ՝ ցանկալի բիտը պահելու համար:
  • Դուռը 0 վ-ով, ​​իսկ արտահոսքը `20 վ-ով = մաքրել պահված բիթը, որպեսզի այն վերածրագրավորվի մեկ այլ արժեքով:
  • Դարպասը 5v- ով, իսկ ջրահեռացումը `5v- ով = կարդալ պահված բիթը: Քանի որ դարպասի լարումը ավելի ցածր է, քան գրությունը, պահված արժեքը չի փոխվի: Նույնը տեղի է ունենում ջրահեռացման լարման հետ, լինելով ավելի ցածր, պահված բիթը չի ջնջվի:

Եզրակացություն, EEPROM- ները օգտագործում են մի քանիսը վոլտեր «Բարձր» ՝ ջնջելու և գրելու համար, մինչդեռ կարդալու համար օգտագործեք ավելի ցածր լարման ...

Գնեք EEPROM և աշխատեք դրա հետ

STMICROELECTRONICS, միկրոէլեկտրոնիկայի ֆրանսիական արտադրողը, այս տեսակի EEPROM չիպերի թիվ մեկն է, չնայած կան շատ այլ արտադրողներ, ինչպիսիք են միկրոչիպը: Այս չիպսերը սովորաբար բավականին էժան են:

Եթե ​​որոշեք օգտագործել այս չիպերից մեկը, դուք պետք է տեսնեք արտադրողին և մոդելին և փնտրեք դրանք datasheet տեսնել արտադրողի բոլոր առաջարկությունները, քանի որ դրանք կարող են տարբեր լինել մեկից մյուսը: Օրինակ, նրանք նշելու են այն լարման հետ, որի հետ այն աշխատում է, pinout- ըև այլն Այսպիսով, դուք կարող եք ճիշտ կարգավորել ձեր նախագիծը:

Կախված չափից և մոդելից `այն կարող է ունենալ ավելի կամ պակաս PINES, Որպեսզի պատկերացում կազմեք, տիպիկ 24LC512 EEPROM IC չիպը կարող է բաղկացած լինել.

  • Կազմաձևում օգտագործվող 1 (A0), 2 (A1) և 3 (A3) քորոցները ընտրության քորոցներն են:
  • Քորոց 4 (Vss / GND) միացված է գետնին:
  • Pin 5 (SDA), I2C հաղորդակցության համար սերիական տվյալների համար:
  • Pin 6 (SCL), ժամացույցի համար I2C- ի համար:
  • Քորոց 7 (WP), գրել-պաշտպանել կամ գրել պաշտպանել: Եթե ​​այն միացված է GND- ին, գրելը միացված կլինի: Եթե ​​այն միանա Vcc- ին, ապա այն անջատված է:
  • Pin 8 (Vcc), միացված է հոսանքին:

Ինչ վերաբերում է Տեխնիկական բնութագրեր այս չիպի:

  • 512 Կ (64 × 8)
  • Գրելու համար 128 բայթ բուֆեր
  • Գործառնական լարումը `1.8 վ-ից 5.5 վ
  • Ընթերցման ընթացիկ մասը `40uA
  • Հաղորդակցման ավտոբուս ՝ I2C
  • Գրեք ցիկլը ՝ 5ms
  • Ockամացույցի համատեղելիություն ՝ 100-400Khz
  • Երկարակեցություն ՝ 10.000.000 ցիկլ
  • Կարող է կասկադավորվել մինչև 8 սարքավորում
  • Փաթեթավորում. 8-փական DIP, SOIJ, SOIC և TSSOP:

Donde comprar

դեպի գնել EEPROM չիպսեր, կարող եք նայել այս առաջարկություններին.

Օգտագործելով Arduino EEPROM

Լուսանկարը Arduino IDE- ից

Եթե ​​ցանկանում եք աշխատել EEPROM- ի հետ, կարող եք նաև փորձել այն ձեր տախտակի վրա Arduino, Այն կարելի է ծրագրավորել պարզ եղանակով ՝ տրամաբանական և ծրագրավորման մակարդակում հասկանալու համար, թե ինչպես կարող է այն գործել:

Փոփոխական պահելու օրինակ

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

Լրացուցիչ տեղեկություններ - Արդուինոյի անվճար դասընթաց


Հոդվածի բովանդակությունը հավատարիմ է մեր սկզբունքներին խմբագրական էթիկա, Սխալի մասին հաղորդելու համար կտտացրեք այստեղ.

Եղիր առաջին մեկնաբանողը

Թողեք ձեր մեկնաբանությունը

Ձեր էլ. Փոստի հասցեն չի հրապարակվելու: Պահանջվող դաշտերը նշված են *

*

*

  1. Տվյալների համար պատասխանատու ՝ Միգել Անխել Գատոն
  2. Տվյալների նպատակը. Վերահսկել SPAM, մեկնաբանությունների կառավարում:
  3. Օրինականություն. Ձեր համաձայնությունը
  4. Տվյալների հաղորդագրություն. Տվյալները չեն փոխանցվի երրորդ անձանց, բացառությամբ իրավական պարտավորության:
  5. Տվյալների պահպանում. Տվյալների շտեմարան, որը հյուրընկալվում է Occentus Networks (EU) - ում
  6. Իրավունքներ. Timeանկացած պահի կարող եք սահմանափակել, վերականգնել և ջնջել ձեր տեղեկատվությունը: