EEPROM: zvese zvaunoda kuti uzive nezve iyi ndangariro

EEPROM

Kana iwe uri mugadziri uye urikuita mamwe maprojekti eI DIY mauri kufanira kushanda nekurangarira, zvirokwazvo iwe unotoziva kare kuti ndangariro dzakasiyana sei idzo Arduino inosanganisa basa, senge kupenya (kusingachinjiki uko sketch uye bootloader zvakachengetwa), SRAM (ndangariro inokurumidza uye isina kugadzikana uko kusiana kwechirongwa kunosara panguva yekugadzirisa), uye iyo EEPROM (isina-kugadzikana uye inogona kushandiswa kuchengetedza reboot ruzivo).

Zvakanaka, kuwedzera kune EEPROM inowanikwa muArduino, unogona zvakare kushandisa ekunze machipisi e iyi ndangariro, se chimwezve chinhu. Izvo hazvina kuomarara kuti unzwisise, kana kudyidzana navo kuti vagadzire kuwana (kunyora nekuverenga) kana kugadzirisa ruzivo rwakachengetwa. Pano iwe unowana zvese zvaunoda kuti utange kushanda nemhando idzi dzeyeuchidzo ...

Chii chinonzi EEPROM?

STMicroelectronics EEPROM

STMicroelectronics EEPROM

La EEPROM (Electrically Erasable Programmable Tsvuku-Chete Ndangariro) Iyo mhando yeROM ndangariro, kureva kuti, isina-voliyumu ndangariro umo data richachengetwa zvachose, kunyangwe kana magetsi abviswa. Izvo zvinovaisa kune rimwe divi re RAM (Random Access Memory), iyo inorasikirwa ne data rayo rese kana isina kupihwa simba.

Muchiitiko cheEEPROM, hachisi chiyeuchidzo senge ROM, mune iyo data yakanyorwa uye isingachagone kuchinjwa. EEPROM, semheni, inobvuma kushandurwa sezvazvinodiwa. Ndokunge, imwe data inogona kuchengetwa uye kudzimwa kuti ichengete akasiyana.

Muchokwadi, sekuratidzira kwayo mazita, iri chiyeuchidzo chinogadziriswa nemagetsi (magetsi anokwanisika) ekugadzirisa zvakare. Izvi zvinosiyana nedzimwe mhando dzeROM, idzo dzinogona kudzimika kunge EPROMs, asi mune ino magetsi magetsi haashandiswe kudzima ndangariro maseru, pachinzvimbo ivo vaive ne "hwindo" re quartz pachip kuti vakwanise kuratidza UV UV. iyo yakadzimwa.

Hunhu ihwohwo EEPROM zvakavaita kuti vasanzwa kugadzikana, vachifanirwa kuratidza iwo mwaranzi kuti vadzime. Uye, zvakaipisisa pane zvese, zvinogona kudzimwa netsaona kana zvikaburitswa murudzi urwu rwemwaranzi. MuEEPROMs, inobvumirwa kuzviita kuburikidza nematanho, nenzira yakasununguka uye yakachengeteka.

Internal structure

Mufananidzo weEEPROM

Kwayaka: Researchgate.net

Kuti EEPROM ishande, akanyanyisa maseru ekurangarira anodikanwa. Ivo vakavakwa vachishandisa MOS mhando transistors, asi iine inoyerera gedhi ichienzaniswa neyechinyakare MOSFETs. Aya matsva transistors anotevera chimiro chinozivikanwa se SAMOS, uye mamiriro ayo akajairwa anotemwa uye zvinobuda zvinogara zvichipa zvine musoro 1.

Aya maseru eEEPROM anogona kuverengerwa nhamba isingaverengeki yenguva, asi inogumira mu huwandu hwenguva dzavanogona kudzimwa uye kugadzirwazve, sezvazvinoitika kune vamwe vazhinji. Izvi zvinoitikawo kupenya, ndosaka pakave nekutaura kwakawanda pamusoro pekugara kweSSD hard drives, pen drives, nezvimwe.

Panyaya yeSAMOS, uyu muganho uri pakati pe 100.000 1.000.000 uye XNUMX XNUMX XNUMX nguva. Mushure meizvozvo, ivo vanozokundikana. Nenzira, zvimwe zvivakwa zvakagadzirwa nemunhu wekare waunoziva, mumwe wevakuru: Dr. Fujio Masuoka anobva kuToshiba (1984), uyo akagadzirawo zvimwe zvakakosha ndangariro uye semiconductor zvimiro ... Zvisinei, chip yekutanga chakatanga pane musika yaive Intel kubva muna 1988, NOR mhando EEPROM.

Uye zvakare, iwe unofanirwa kuziva kuti iyi mhando yekurangarira inowanzo kuve yakabatana neCPUs kana vanodzora kuburikidza bhazi nemaprotocol akaita seSPI, I2C, nezvimwe. Muchiitiko cheMCUs (ma microcontroller) inowanzo kuve yakabatanidzwa mukati, semamwe maDSP, kuti iwedzere kukurumidza.

Sezvinoonekwa mumufananidzo uri pamusoro, iyo SAMOS vatapuri izvo zvinoumba ndangariro maseru, akarongedzwa mune iyo kesi ari maviri. Imwe yemitsetse yakasungirirwa pamusuwo evamwe ma transistors inoshanda semutsara wesarudzo, kutara kana kuisa chiratidzo cheiyo tara yekuwana (kuverenga nekunyora), uye imwe yacho ichave iyo inochengetera ruzivo zvishoma (0 kana 1).

Iwo maTransistors akawiriranwa kuti vagadzire rinodiwa izwi kureba (4-bit, 8-bit, 16-bit, ...) uye semazwi mazhinji se simba iwe unoda kuve neEEPROM (semuenzaniso: panogona kuve ne64-bit izwi kureba uye iine mitsara gumi nematanhatu = 16 bits, ndokuti 1024kb).

EERPOM inoshanda sei?

Sezvauri kuona padivi, kuita akasiyana mabasa, iyo voltage yegedhi rako, sosi uye pombi inofanira kunge iri yekongiri imwe:

  • Suo pa20v uye Dhonza pa20v = kuronga (kunyora) iyo memory cell yekuchengetedza iyo yaunoda zvishoma.
  • Suo pa0v uye Dhonza pa20v = bvisa zvishoma zvakachengetwa kuitira kuti zvigadziriswe neimwe kukosha.
  • Gedhi pa5v uye Dhonza pa5v = verenga zvakachengetwa zvishoma. Sezvo voltage remusuwo rakadzikira pane iro rekunyora, kukosha kwakachengetwa hakuzoshandurwe. Izvozvowo zvinoitika neye drain voltage, kuve yakaderera, iyo yakachengetwa bit haizobviswa.

Mhedziso, EEPROMs dzinoshandisa mashoma voltages "Yakakwirira" yekudzima uye kunyora, uku uchishandisa mashoma voltages kuverenga ...

Tenga EEPROM uye shanda nayo

STMicroelectronics, iyo yekuFrance inogadzira microelectronics, ndiyo nhamba yekutanga mune iyi mhando yeEEPROM machipisi, kunyange paine vamwe vazhinji vanogadzira, senge Microchip. Aya machipisi anowanzo kuve akadhura.

Kana iwe ukafunga kuita shandisa imwe yeaya machipisi, iwe unofanirwa kuona iyo inogadzira uye modhi uye wotsvaga yayo datasheet kuona zvese zvinokurudzirwa nemugadziri, sezvo zvichisiyana kubva pane imwe kuenda kune imwe Semuenzaniso, ivo vachataura ma voltages ayo aanoshanda nawo, the pinout, nezvimwe. Saka iwe unogona kumisikidza chirongwa chako nemazvo.

Zvichienderana nesaizi uye modhi, inogona kuve nezvakawanda kana zvishoma Pines. Asi kuti ndikupe zano, chairo 24LC512 EEPROM IC chip inogona kuve neinosanganisira:

  • Pini 1 (A0), 2 (A1), uye 3 (A3) inoshandiswa mukugadzirisa ndiwo mapini ekusarudza.
  • Pin 4 (Vss / GND) yakabatana pasi.
  • Pini 5 (SDA), ye serial data yekutaurirana kweI2C.
  • Pini 6 (SCL), yeawa yeI2C.
  • Pini 7 (WP), nyora-chengetedza kana nyora chengetedzo. Kana yakabatana neGND, kunyora kunogoneswa. Kana ikabatana neVcc yakaremara.
  • Pin 8 (Vcc), yakabatana nesimba.

Kana ari Technical magadzirirwo yeiyi chip:

  • 512K (64 × 8)
  • 128-byte buffer yekunyora
  • Anoshanda voltage: 1.8v kusvika 5.5v
  • Kuverenga ikozvino: 40uA
  • Kutaurirana bhazi: I2C
  • Nyora kutenderera: 5ms
  • Clock kuenderana: 100-400Khz
  • Mukurumari: 10.000.000 macircuit
  • Inogona kuburitswa kusvika pamasere masere
  • Kavha: 8-pini DIP, SOIJ, SOIC uye TSSOP.

Kwatenga

Para tenga machipisi eEEPROM, unogona kutarisa pane izvi zvinokurudzirwa:

Uchishandisa iyo Arduino EEPROM

Screenshot yaArduino IDE

Kana iwe uchida kutanga kushanda neEEPROM, iwe unogona zvakare kuyedza iyo iri pane yako bhodhi Arduino. Inogona kuve yakarongedzwa nenzira yakapusa kuti unzwisise pane zvine musoro uye chirongwa chikamu kuti inogona kushanda sei.

Semuenzaniso yekuchengetedza musiyano

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

Semuenzaniso kuverenga data kubva kuEEPROM

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

Semuenzaniso yekuvandudza tsika, kudzoreredza

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

Mamwe mashoko - Yemahara Arduino kosi


Iva wekutanga kutaura

Siya yako yekutaura

Your kero e havazobvumirwi ichibudiswa. Raida minda anozivikanwa ne *

*

*

  1. Inotarisira iyo data: Miguel Ángel Gatón
  2. Chinangwa cheiyo data: Kudzora SPAM, manejimendi manejimendi.
  3. Legitimation: Kubvuma kwako
  4. Kutaurirana kwedata
  5. Dhata yekuchengetedza: Dhatabhesi inobatwa neOccentus Networks (EU)
  6. Kodzero: Panguva ipi neipi iwe unogona kudzora, kupora uye kudzima ruzivo rwako