Taula de continguts:
- Subministraments
- Pas 1: conceptes bàsics de l'EEPROM
- Pas 2: peculiaritats d'EEPROM
- Pas 3: connexió del maquinari Arduino
- Pas 4: llegir i escriure
- Pas 5: esquemes i codi
Vídeo: Lectura i escriptura de dades a EEPROM externa mitjançant Arduino: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
EEPROM significa Memòria de només lectura programable esborrable elèctricament.
EEPROM és molt important i útil perquè és una forma de memòria no volàtil. Això significa que fins i tot quan la placa està apagada, el xip EEPROM encara conserva el programa que se li ha escrit. Així, quan apagueu la placa i la torneu a engegar, es pot executar el programa que s’ha escrit a la EEPROM. Bàsicament, l'EEPROM emmagatzema i executa un programa, passi el que passi. Això vol dir que podeu apagar un dispositiu, mantenir-lo apagat durant 3 dies, tornar-lo i encendre-lo i, tot i així, pot executar el programa que hi havia programat. Així funcionen la majoria dels dispositius electrònics de consum.
Aquest projecte està patrocinat per LCSC. He estat utilitzant components electrònics de LCSC.com. LCSC té un fort compromís a oferir una àmplia selecció de components electrònics genuïns i d’alta qualitat al millor preu amb una xarxa d’enviament mundial a més de 200 països. Inscriviu-vos avui i obteniu 8 $ de descompte en la vostra primera comanda.
EEPROM també és molt eficient perquè els bytes individuals d'una EEPROM tradicional es poden llegir, esborrar i reescriure de forma independent. En la majoria dels altres tipus de memòria no volàtil, això no es pot fer. Els dispositius EEPROM de sèrie, com el Microchip EEPROM de la sèrie 24, us permeten afegir més memòria a qualsevol dispositiu que pugui parlar en I²C.
Subministraments
- EEPROM - 24LC512
- ATmega328P-PU
- Cristall de 16 MHz
- Taula de pa
- Resistència 4,7 k Ohm x 2
- Condensador 22 pF x 2
Pas 1: conceptes bàsics de l'EEPROM
El xip Microchip 24LC2512 es pot comprar en un paquet DIP de 8 pins. Els pins del 24LC512 són força senzills i consten de potència (8), GND (4), protecció contra escriptura (7), SCL / SDA (6, 5) i tres pins d’adreça (1, 2, 3).
Una breu història de la ROM
Els primers ordinadors de tipus "Programa emmagatzemat" (com ara calculadores de taula i intèrprets de teclat) van començar a utilitzar ROM en forma de ROM de matriu de díodes. Es tractava d’una memòria formada per díodes semiconductors discrets col·locats en un PCB especialment organitzat. Això va donar pas a Mask ROM amb l'arribada de circuits integrats. La ROM de màscara s’assemblava molt a la ROM de Diode Matrix, només s’implementava a una escala molt menor. Això significava, però, que no podríeu moure un parell de díodes amb un soldador i reprogramar-lo. La màscara ROM havia de ser programada pel fabricant i, posteriorment, no fou modificable.
Malauradament, Mask ROM era car i trigava molt de temps a produir-se, perquè cada nou programa necessitava un nou dispositiu per a ser fabricat per una foneria. El 1956, però, aquest problema es va resoldre amb la invenció de PROM (ROM programable) que permetia als desenvolupadors programar els xips ells mateixos. Això significava que els fabricants podien produir milions del mateix dispositiu no programat, cosa que el feia més barat i més pràctic. PROM, tanmateix, només es podia escriure en un cop utilitzant un dispositiu de programació d’alta tensió. Després de programar un dispositiu PROM, no hi va haver manera de tornar el dispositiu al seu estat no programat.
Això va canviar el 1971 amb la invenció de l'EPROM (Erasable Programmable ROM) que, a més d'afegir una altra lletra a l'acrònim, va portar la possibilitat d'esborrar el dispositiu i tornar-lo a un estat "en blanc" mitjançant una forta font de llum UV. És cert, havíeu de lluir una llum brillant a l’IC per reprogramar-lo. Què tan guai? Bé, resulta que és bastant bo tret que sigueu un desenvolupador que treballa en el microprogramari, en aquest cas us agradaria poder reprogramar el dispositiu mitjançant senyals elèctrics. Això finalment es va fer realitat el 1983 amb el desenvolupament de l'EEPROM (ROM programable esborrable elèctricament) i, amb això, arribem a les sigles difícils d'utilitzar actualment.
Pas 2: peculiaritats d'EEPROM
Hi ha dos inconvenients importants en EEPROM com a mètode d'emmagatzematge de dades. En la majoria d’aplicacions, els avantatges superen els desavantatges, però n’haureu de ser conscients abans d’incorporar EEPROM al vostre proper disseny.
En primer lloc, la tecnologia que fa funcionar EEPROM també limita el nombre de vegades que es pot tornar a escriure. Això té a veure amb que els electrons queden atrapats als transistors que formen la ROM i es formen fins que la diferència de càrrega entre un "1" i un "0" no es reconeix. Però no us preocupeu, la majoria de les EEPROM tenen un nombre màxim de reescriptures d’1 milió o més. Mentre no escriviu contínuament a l'EEPROM, és poc probable que assoliu aquest màxim. En segon lloc, EEPROM no s’esborrarà si traieu l’energia, però no mantindrà les vostres dades indefinidament. Els electrons poden sortir dels transistors i travessar l’aïllant, esborrant eficaçment la EEPROM amb el pas del temps. Dit això, això sol passar al llarg dels anys (tot i que es pot accelerar per la calor). La majoria dels fabricants diuen que les vostres dades són segures a EEPROM durant deu anys o més a temperatura ambient. I cal tenir en compte una altra cosa a l’hora de seleccionar un dispositiu EEPROM per al vostre projecte. La capacitat EEPROM es mesura en bits i no en bytes. Una EEPROM de 512 K conté 512 KB de dades, és a dir, només 64 KB.
Pas 3: connexió del maquinari Arduino
D’acord, ara que ja sabem què és EEPROM, en connectem una i veurem què pot fer. Per fer que el nostre dispositiu parli, haurem de connectar l'alimentació i les línies de sèrie I²C. Aquest dispositiu, en particular, funciona a 5VDC, de manera que el connectarem a la sortida de 5V del nostre Arduino UNO. A més, les línies I²C necessitaran resistències de tracció perquè la comunicació passi correctament. El valor d'aquestes resistències depèn de la capacitat de les línies i de la freqüència que vulgueu comunicar, però una bona regla general per a aplicacions no crítiques només es manté en el rang de kΩ. En aquest exemple, utilitzarem resistències pull-up de 4,7 kΩ.
Hi ha tres pins en aquest dispositiu per seleccionar l'adreça I²C, d'aquesta manera podeu tenir més d'una EEPROM al bus i dirigir-los de manera diferent. Podeu posar-los a terra tots, però els connectarem perquè puguem caure en un dispositiu de més capacitat més endavant al tutorial.
Utilitzarem una taula per connectar-ho tot. El diagrama següent mostra la connexió correcta per a la majoria de dispositius EEPROM I²C, inclosa la EEPROM de la sèrie 24 Microchip que venem.
Pas 4: llegir i escriure
La majoria de les vegades, quan utilitzeu una EEPROM juntament amb un microcontrolador, no haureu de veure tot el contingut de la memòria alhora. Simplement llegireu i escrivireu bytes aquí i allà segons sigui necessari. En aquest exemple, però, escriurem un fitxer sencer a EEPROM i després el llegirem tot de manera que puguem visualitzar-lo al nostre ordinador. Això ens hauria de fer sentir còmodes amb la idea d’utilitzar EEPROM i també ens donaria la sensació de quantes dades poden cabre realment en un dispositiu petit.
Escriure alguna cosa
El nostre esbós d’exemple simplement agafarà qualsevol byte que entra pel port sèrie i l’escriu a la EEPROM, fent un seguiment del camí de quants bytes hem escrit a la memòria.
Escriure un byte de memòria a la EEPROM sol passar en tres passos:
- Envieu el byte més significatiu de l'adreça de memòria a la qual voleu escriure.
- Envieu el byte mínim significatiu de l'adreça de memòria a la qual voleu escriure.
- Envieu el byte de dades que vulgueu emmagatzemar en aquesta ubicació.
Probablement hi ha algunes paraules clau que expliquen:
Adreces de memòria
Si us imagineu tots els bytes d’una EEPROM de 512 Kbit situats en una línia de 0 a 64000, perquè hi ha 8 bits per octet i, per tant, podeu ajustar 64000 bytes a una EEPROM de 512 Kbit, llavors hi ha una adreça de memòria línia on trobareu un byte concret. Hem d'enviar aquesta adreça a l'EEPROM perquè sàpiga on posar el byte que estem enviant.
Bytes més significatius i menys significatius
Com que hi ha 32.000 llocs possibles en una EEPROM de 256 Kbit i com que el 255 és el nombre més gran que podeu codificar en un byte, hem d’enviar aquesta adreça en dos bytes. En primer lloc, enviem el byte més significatiu (MSB), els primers 8 bits en aquest cas. A continuació, enviem el byte mínim significatiu (LSB), el segon 8 bits. Per què? Com que així és com el dispositiu espera rebre'ls, això és tot.
Redacció de pàgines
Escriure un byte a la vegada està bé, però la majoria de dispositius EEPROM tenen una cosa anomenada "memòria intermèdia d'escriptura de pàgina" que us permet escriure diversos bytes alhora alhora que ho faríeu amb un sol byte. Ho aprofitarem al nostre esbós d’exemple. L’EEPROM utilitza un comptador intern que augmenta automàticament la ubicació de la memòria amb cada byte de dades següent que rep. Un cop enviada una adreça de memòria, la podem seguir amb fins a 64 bytes de dades. L’EEPROM assumeix (amb raó) que una adreça de 312 seguida de 10 bytes registrarà el byte 0 a l’adreça 312, el byte 1 a l’adreça 313, el byte 2 a l’adreça 314, etc.
Llegiu alguna cosa
La lectura de l'EEPROM segueix bàsicament el mateix procés de tres passos que escriure a l'EEPROM:
- Envieu el byte més significatiu de l'adreça de memòria a la qual voleu escriure.
- Envieu el byte mínim significatiu de l'adreça de memòria a la qual voleu escriure.
- Demaneu el byte de dades en aquesta ubicació.
Pas 5: esquemes i codi
Codi:
#incloure
#define eeprom 0x50 // defineix l'adreça base de l'EEPROM
configuració nul·la () {
Wire.begin (); // crea un objecte Wire
Serial.begin (9600);
adreça int sense signar = 0; // primera adreça de l'EEPROM
Serial.println ("Escrivim el codi postal 22222, un codi postal"); per a (adreça = 0; adreça <5; adreça ++) writeEEPROM (eeprom, adreça, '2'); // Escriu 22222 a l'EEPROM
for (adreça = 0; adreça <5; adreça ++) {Serial.print (readEEPROM (eeprom, adreça), HEX); }}
bucle buit () {
/ * no hi ha res a la funció loop () perquè no volem que l'arduino escrigui repetidament el mateix a l'EEPROM. Només volem una escriptura única, de manera que la funció loop () s’evita amb les EEPROM. * /}
// defineix la funció writeEEPROM
void writeEEPROM (int deviceaddress, int signed eeaddress, byte data) {Wire.beginTransmission (deviceaddress); Wire.write ((int) (eeaddress >> 8)); // escriu el MSB Wire.write ((int) (eeaddress & 0xFF)); // escriu el LSB Wire.write (dades); Wire.endTransmission (); }
// defineix la funció readEEPROM
byte readEEPROM (int deviceaddress, unsigned int eeaddress) {byte rdata = 0xFF; Wire.beginTransmission (adreça d'adreça); Wire.write ((int) (eeaddress >> 8)); // escriu el MSB Wire.write ((int) (eeaddress & 0xFF)); // escriu el LSB Wire.endTransmission (); Wire.requestFrom (deviceaddress, 1); if (Wire.available ()) rdata = Wire.read (); retornar les dades; }
Recomanat:
Escriptura en una pantalla OLED mitjançant Bluetooth: 6 passos
Escriptura en una pantalla OLED mitjançant Bluetooth: aquest projecte està inspirat en una remescla del control de pantalla LCD Arduino mitjançant Bluetooth Introducció: en aquest projecte farem un "Bluetooth OLED". El que estem fent en aquest disseny és connectar un Arduino a un OLED i un modu Bluetooth
Feu parcel·les precioses a partir de dades Arduino en viu (i deseu les dades a Excel): 3 passos
Feu gràfics bonics a partir de dades Arduino en viu (i deseu les dades a Excel): a tots ens agrada jugar amb la nostra funció de loteria P … a l’IDE Arduino. Tot i que, si bé pot ser útil per a aplicacions bàsiques, les dades s’esborren com més s’afegeixen punts i no resulta especialment agradable als ulls. El traçador IDE Arduino no
Lectura i gràfics de dades del sensor de llum i temperatura amb Raspberry Pi: 5 passos
Lectura i gràfics de dades del sensor de llum i temperatura amb Raspberry Pi: en aquest manual, aprendreu a llegir un sensor de llum i temperatura amb raspberry pi i convertidor analògic-digital ADS1115 i dibuixar-lo mitjançant matplotlib. Comencem pels materials necessaris
Lectura de dades del sensor d'ultrasons (HC-SR04) en una pantalla LCD de 128 × 128 i visualització mitjançant Matplotlib: 8 passos
Lectura de dades del sensor ultrasònic (HC-SR04) en una pantalla LCD de 128 × 128 i visualització mitjançant Matplotlib: en aquesta instrucció, utilitzarem el MSP432 LaunchPad + BoosterPack per mostrar les dades d’un sensor ultrasònic (HC-SR04) en un 128 × 128 LCD i envieu les dades al PC en sèrie i visualitzeu-les mitjançant Matplotlib
El temut virus Amoeba mitjançant l’escriptura per lots: 3 passos
El temut virus Amoeba que utilitza l’escriptura per lots: si us interessa codificar o escriure per lots, consulteu la meva última Ible aquí. Vaig aprendre sobre protista a la meva classe de Bio. Hem de caçar amebes vives al microscopi. Poc utilitat a la vida, però em va donar una idea sobre com anomenar el meu darrer v