Kui olete tegija ja teete mõnda isetegemisprojekti, milles peate töötama mäluga, teate kindlasti, kuidas erinevad mälud, mida Arduino integreerib, töötavad, näiteks välklamp (püsimatu, kus eskiis ja alglaadur on salvestatud), SRAM (kiire ja kõikuv mälu, kus töötlemisel jäävad programmi muutujad) ja EEPROM (püsimatu ja seda saab kasutada taaskäivitusteabe salvestamiseks).
Noh, lisaks Arduinos sisalduvale EEPROM-ile saate kasutada ka väliseid kiipe selline mälestusKui veel üks komponent. Neid ei ole keeruline mõista ega nendega suhelda, et luua juurdepääs (kirjutamine ja lugemine) või salvestatud teabe värskendamine. Siit leiate kõik, mida peate teadma seda tüüpi mälestustega töötamiseks ...
Mis on EEPROM?
La EEPROM (elektriliselt kustutatav programmeeritav ainult punane mälu) See on teatud tüüpi ROM-mälu, see on püsimälu, kuhu andmed salvestatakse püsivalt, isegi kui toiteallikas on eemaldatud. See asetab nad teisele poolele RAM-i (Random Access Memory), mis kaotab kõik oma andmed, kui see pole toiteallikas.
EEPROM-i puhul pole see mälu nagu ROM, kuhu andmed salvestatakse ja mida ei saa enam muuta. EEPROM, nagu välk, tunnistab, et teda muudeti nagu vajatud. See tähendab, et osa andmeid saab erinevate andmete salvestamiseks salvestada ja kustutada.
Tegelikult, nagu selle lühendid näitavad, on see a elektriliselt kustutatav mälu (elektriliselt kustutatav) ümberprogrammeerimiseks. See erineb muud tüüpi ROM-idest, mis on samuti kustutatavad nagu EPROM-id, kuid sel juhul ei kasutata mälu lahtrite kustutamiseks elektrit, selle asemel oli neil kiibil kvarts "aken", et oleks võimalik ultraviolettvalgust projitseerida. mille see kustutati.
See omadus EPROM see tegi nad mõnevõrra ebamugavaks, pidades neid kiirte nende kustutamiseks projitseerima. Ja mis kõige hullem, seda tüüpi kiirgusega kokkupuutel võib need kogemata kustutada. EEPROM-ides on lubatud seda teha pingete kaudu, mugavamal ja ohutumal viisil.
Sisemine struktuur
EEPROM-i toimimiseks on vaja väga konkreetseid mälurakke. Need on ehitatud MOS-tüüpi transistoride abil, kuid traditsiooniliste MOSFET-idega võrreldes on neil hõljuv värav. Need uued transistorid järgivad struktuuri, mida nimetatakse SAMOSja selle normaalne olek on katkenud ning väljund annab alati loogilise 1.
Neid EEPROM-rakke saab lugeda piiramatu arv kordi, kuid see on piiratud mitu korda neid saab kustutada ja ümber programmeerida, nagu juhtub paljude teistega. See juhtub ka välguga, mistõttu on nii palju räägitud SSD kõvaketaste, pensüstelite jms vastupidavusest.
SAMOSe puhul jääb see piir vahemikku 100.000 1.000.000 ja XNUMX XNUMX XNUMX korda. Pärast seda nad ebaõnnestuvad. Muide, mõned struktuurid, mille lõi vana tuttav, üks suurematest: dr Fujio Masuoka Toshibast (1984), kes on loonud ka muid olulisi mälestusi ja pooljuhtkonstruktsioone ... Kuid esimene kiip käivitus turg oli Inteli oma 1988. aastast, NOR tüüpi EEPROM.
Lisaks peate teadma, et seda tüüpi mälu on tavaliselt ühendatud protsessorite või kontrolleritega buss selliste protokollidega nagu SPI, I2C, jne. MCU-de (mikrokontrollerite) puhul integreeritakse see suurema kiiruse saavutamiseks tavaliselt sisse, nagu mõnes DSP-s.
Nagu ülaltoodud pildilt näha, on SAMOS-transistorid mis moodustavad mälurakud, on sel juhul rühmitatud paaridesse. Mõne transistori väravate külge kinnitatud üks joon toimib valikuliinina, et märgistada või signaalida sellele liinile juurdepääsuks (lugemiseks ja kirjutamiseks), ja teine on see, mis salvestab infobiti (0 või 1).
Transistorid on joondatud, moodustades nõutavad sõnade pikkused (4-bitised, 8-bitised, 16-bitised ...) ja nii palju sõnu kui võimsus soovite EEPROM-i (nt: võib olla 64-bitine sõnapikkus ja 16-realine = 1024 bitti, see tähendab 1 kb).
Kuidas EERPOM töötab?
Nagu küljelt näha, siis esineda erinevate ülesannete täitmiseks, peab teie värava, allika ja äravoolu pinge olema konkreetne:
- Uks 20v juures ja äravool 20v juures = mäluraku programmeerimine (kirjutamine) soovitud biti salvestamiseks.
- Uks 0v juures ja äravool 20v juures = tühjendage salvestatud bitt, et seda saaks mõne muu väärtusega ümber programmeerida.
- Värav 5v juures ja äravool 5v juures = lugeda salvestatud bitti. Kuna värava pinge on kirjutamise omast madalam, siis salvestatud väärtust ei muudeta. Sama juhtub äravoolupingega, kuna see on madalam, salvestatud bitti ei kustutata.
Kokkuvõtteks võib öelda, et EEPROM-id kasutavad mõnda pinged "Kõrge" kustutamiseks ja kirjutamiseks, samal ajal lugemiseks madalama pinge kasutamiseks ...
Osta EEPROM ja töötage sellega
STMicroelectronicsPrantsuse mikroelektroonika tootja on seda tüüpi EEPROM-kiipide seas esikohal, kuigi on palju muid tootjaid, näiteks Microchip. Need kiibid on tavaliselt üsna odavad.
Kui otsustate kasuta ühte neist kiipidest, peaksite nägema tootjat ja mudelit ning otsima seda andmeleht et näha kõiki tootja soovitusi, kuna need võivad üksteisest erineda. Näiteks määravad nad kindlaks pinged, millega see töötab, pinout, jne. Nii et saate oma projekti korralikult konfigureerida.
Sõltuvalt suurusest ja mudelist võib sellel olla rohkem või vähem männid. Kuid idee saamiseks võiks tüüpiline 24LC512 EEPROM IC kiip koosneda järgmistest:
- Konfiguratsioonis kasutatavad tihvtid 1 (A0), 2 (A1) ja 3 (A3) on valiknõelad.
- Pistik 4 (Vss / GND) on maandusega ühendatud.
- Pistik 5 (SDA) seeriandmete jaoks I2C-sideks.
- Pistik 6 (SCL) I2C kella jaoks.
- Pin 7 (WP), kirjutuskaitse või kirjutuskaitse. Kui see on ühendatud GND-ga, on kirjutamine lubatud. Kui see ühendub Vcc-ga, on see keelatud.
- Pistik 8 (Vcc), ühendatud vooluga.
Kuna Tehnilised kirjeldused selle kiibi:
- 512K (64 × 8)
- Kirjutamiseks 128-baidine puhver
- Tööpinge: 1.8v kuni 5.5v
- Lugemisvool: 40uA
- Sidebuss: I2C
- Kirjutamistsükkel: 5ms
- Kellade ühilduvus: 100–400 kHz
- Vastupidavus: 10.000.000 XNUMX XNUMX tsüklit
- Kaskaadides saab kuni 8 seadet
- Pakend: 8-kontaktiline DIP, SOIJ, SOIC ja TSSOP.
Dónde comprar
et osta EEPROM kiipe, saate vaadata neid soovitusi:
- 95040Kb ST 4 seeria SPI
- Tooteid ei leitud.
- Tooteid ei leitud.
- Tooteid ei leitud.
- ST 24LC256 jada I2C 256Kb
- Tooteid ei leitud.
Arduino EEPROMi kasutamine
Kui soovite hakata töötama EEPROM-iga, võite proovida ka oma pardal olevat Arduino. Seda saab programmeerida lihtsal viisil, et loogilisel ja programmeerimistasandil mõista, kuidas see toimib.
Näide muutuja salvestamiseks
//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 }
Näide andmete lugemiseks EEPROM-ist
//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() { }
Näide väärtuste värskendamiseks, ajakava muutmine
//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 }
Rohkem informatsiooni - Tasuta Arduino kursus