Sisukord:
- Tarvikud
- Samm: EEPROMi põhitõed
- 2. samm: EEPROMi veidrused
- Samm: Arduino riistvaraühendus
- Samm: lugemine ja kirjutamine
- Samm: skeemid ja kood
Video: Andmete lugemine ja kirjutamine välisele EEPROM -ile Arduino abil: 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
EEPROM tähistab elektriliselt kustutatavat programmeeritavat kirjutuskaitstud mälu.
EEPROM on väga oluline ja kasulik, kuna see on püsimälu vorm. See tähendab, et isegi kui plaat on välja lülitatud, säilitab EEPROM -kiip sellele kirjutatud programmi. Nii et kui lülitate plaadi välja ja seejärel uuesti sisse, saate käivitada EEPROM -ile kirjutatud programmi. Põhimõtteliselt salvestab ja juhib EEPROM programmi, olenemata sellest. See tähendab, et saate seadme välja lülitada, hoida seda 3 päeva väljalülitatuna, tagasi tulla ja sisse lülitada ning see võib ikkagi käivitada sellesse programmeeritud programmi. Nii töötab enamik olmeelektroonikaseadmeid.
Seda projekti rahastab LCSC. Olen kasutanud LCSC.com elektroonilisi komponente. LCSC-l on kindel kohustus pakkuda laia valikut ehtsaid ja kvaliteetseid elektroonikakomponente parima hinnaga ülemaailmse laevandusvõrguga üle 200 riigi. Registreeruge juba täna ja saate esimese tellimuse eest 8 dollarit allahindlust.
EEPROM on väga tõhus ka selle poolest, et traditsioonilise EEPROM -i üksikuid baite saab iseseisvalt lugeda, kustutada ja ümber kirjutada. Enamiku muud tüüpi püsimälu puhul ei saa seda teha. Seeria EEPROM-seadmed, nagu Microchip 24-seeria EEPROM, võimaldavad teil lisada rohkem mälu igale seadmele, mis räägib I²C keelt.
Tarvikud
- EEPROM - 24LC512
- ATmega328P-PU
- 16 MHz kristall
- Leivalaud
- Takisti 4,7 kΩ x 2
- Kondensaator 22 pF x 2
Samm: EEPROMi põhitõed
Microchip 24LC2512 kiipi saab osta 8 -kontaktilise DIP -paketina. 24LC512 tihvtid on üsna sirgjoonelised ja koosnevad toiteallikast (8), GND (4), kirjutuskaitsest (7), SCL/SDA (6, 5) ja kolmest aadressinõelast (1, 2, 3).
ROM -i lühike ajalugu
Varased "Stored -Program" tüüpi arvutid - näiteks lauaarvutid ja klaviatuuritõlgid - hakkasid kasutama ROM -i dioodmaatriks -ROM -i kujul. See oli mälu, mis koosnes spetsiaalselt organiseeritud PCB -le paigutatud diskreetsetest pooljuhtdioodidest. See andis integraallülituste tulekuga võimaluse maski ROMile. Mask ROM sarnaneb palju dioodmaatriksi ROMiga, ainult seda rakendati palju väiksemas ulatuses. See aga tähendas, et te ei saanud lihtsalt paari dioodi jootekolbiga ringi liigutada ja ümber programmeerida. Mask ROM tuli programmeerida tootja poolt ja seda ei saanud hiljem muuta.
Kahjuks oli Mask ROM kallis ja selle valmistamine võttis kaua aega, sest iga uue programmi jaoks oli vaja valukojas toota täiesti uus seade. 1956. aastal aga lahendati see probleem PROM (Programmable ROM) leiutisega, mis võimaldas arendajatel kiipe ise programmeerida. See tähendas, et tootjad saaksid toota miljoneid sama programmeerimata seadet, mis muutis selle odavamaks ja praktilisemaks. PROM-i saab aga kõrgepinge programmeerimisseadme abil kirjutada ainult üks kord. Pärast PROM -seadme programmeerimist ei olnud võimalik seadet programmeerimata olekusse tagasi viia.
See muutus 1971. aastal, kui leiutati EPROM (kustutatav programmeeritav ROM), mis lisaks akronüümile veel ühe tähe lisamisele tõi kaasa seadme kustutamise ja tugeva UV -valgusallika abil tühja oleku taastamise. Just nii, IC -le tuli selle ümberprogrammeerimiseks heledat valgust heita, kui lahe see on? Selgub, et see on päris lahe, kui te pole arendaja, kes töötab püsivara kallal. Sellisel juhul soovite tõesti, et saaksite seadme ümber programmeerida, kasutades elektrisignaale. See sai lõpuks reaalsuseks 1983. aastal, kui arendati välja EEPROM (Electrically Erasable Programmable ROM) ja sellega jõuame praeguse kohmaka lühendini.
2. samm: EEPROMi veidrused
EEPROMil kui andmete salvestamise meetodil on kaks peamist puudust. Enamikus rakendustes kaaluvad plussid üles miinused, kuid enne EEPROM -i lisamist oma järgmisse disaini peaksite neid teadma.
Esiteks, tehnoloogia, mis paneb EEPROMi tööle, piirab ka selle uuesti kirjutamise kordade arvu. See on seotud sellega, et elektronid jäävad ROM -i moodustavate transistorite lõksu ja kogunevad, kuni laengu erinevus "1" ja "0" vahel on tundmatu. Kuid ärge muretsege, enamiku EEPROM-ide maksimaalne ümberkirjutamisarv on 1 miljon või rohkem. Kuni te pidevalt EEPROM -i ei kirjuta, on ebatõenäoline, et jõuate selle maksimumini. Teiseks ei kustutata EEPROM -i, kui eemaldate sellest toite, kuid see ei hoia teie andmeid lõputult. Elektronid võivad transistoridest ja isolaatori kaudu triivida, kustutades aja jooksul EEPROM -i. See juhtub tavaliselt aastate jooksul (kuigi kuumusega saab seda kiirendada). Enamik tootjaid väidab, et teie andmed on EEPROM -is toatemperatuuril 10 aastat või kauem ohutud. Ja veel üks asi, mida peaksite oma projekti jaoks EEPROM -seadme valimisel meeles pidama. EEPROM -i võimsust mõõdetakse bittides, mitte baitides. 512K EEPROM mahutab 512Kbit andmeid, teisisõnu vaid 64KB.
Samm: Arduino riistvaraühendus
Olgu, nüüd, kui me teame, mis on EEPROM, ühendame selle ja vaatame, mida see suudab! Seadme rääkimiseks peame ühendama nii toite kui ka I²C jadaühendused. See seade töötab eelkõige 5 V alalisvoolul, nii et me ühendame selle meie Arduino UNO 5 V väljundiga. Samuti vajavad I²C liinid tõmbe takistit, et side toimuks õigesti. Nende takistite väärtus sõltub nende liinide mahtuvusest ja sagedusest, mida soovite edastada, kuid hea rusikareegel mittekriitiliste rakenduste jaoks hoitakse lihtsalt kΩ vahemikus. Selles näites kasutame 4,7 kΩ tõmbetakistit.
Sellel seadmel on kolm tihvti I²C aadressi valimiseks, nii et teil oleks siinis rohkem kui üks EEPROM ja saaksite neid erinevalt adresseerida. Võiksite need kõik lihtsalt maandada, kuid me ühendame need juhtmetega, et saaksime hiljem õpetuses suurema võimsusega seadme sisse lülitada.
Kasutame leivaplaati, et kõik omavahel ühendada. Alloleval diagrammil on näidatud õige ühendamine enamiku I²C EEPROM-seadmete, sealhulgas meie müüdava 24-seeria mikrokiibi EEPROM-i jaoks.
Samm: lugemine ja kirjutamine
Enamiku ajast, kui kasutate EEPROM -i koos mikrokontrolleriga, ei pea te tegelikult kogu mälu sisu korraga nägema. Vajadusel loete ja kirjutate baite siin ja seal. Selles näites kirjutame aga terve faili EEPROM -i ja loeme selle siis uuesti välja, et saaksime seda oma arvutis vaadata. See peaks meile EEPROM -i kasutamise ideega rahule jääma ja andma ka tunde, kui palju andmeid väikesele seadmele tegelikult mahub.
Kirjuta midagi
Meie näidisvisand võtab lihtsalt jadaporti siseneva baidi ja kirjutab selle EEPROM -i, jälgides, mitu baiti oleme mällu kirjutanud.
Mälu baidi kirjutamine EEPROM -i toimub tavaliselt kolmes etapis:
- Saatke mäluaadressi kõige olulisem bait, kuhu soovite kirjutada.
- Saatke mäluaadressi kõige vähem oluline bait, kuhu soovite kirjutada.
- Saatke andmebait, mida soovite sellesse kohta salvestada.
Seal on ilmselt mõned märksõnad, mis seletavad:
Mäluaadressid
Kui kujutate ette kõiki 512 kbitise EEPROM -i baite, mis seisavad reas 0 kuni 64000 - kuna baiti on 8 bitti ja seetõttu saate 512 kbitisele EEPROM -ile mahutada 64000 baiti -, siis on koht mäluaadress rida, kust leiate konkreetse baidi. Peame selle aadressi EEPROMile saatma, et see teaks, kuhu panna saadetav bait.
Kõige olulisemad ja kõige vähem olulised baidid
Kuna 256 Kbitises EEPROM -is on 32 000 võimalikku kohta - ja kuna 255 on suurim arv, mida saate ühe baidi kohta kodeerida -, peame selle aadressi saatma kahe baidiga. Esiteks saadame kõige olulisema baidi (MSB) - sel juhul esimesed 8 bitti. Seejärel saadame kõige vähem olulise baidi (LSB) - teise 8 bitti. Miks? Kuna niimoodi eeldab seade nende vastuvõtmist, on see kõik.
Lehe kirjutamine
Ühe baidi korraga kirjutamine on hea, kuid enamikul EEPROM -seadmetel on midagi, mida nimetatakse "lehe kirjutamise puhveriks", mis võimaldab teil kirjutada mitu baiti korraga samamoodi nagu ühe baidi. Kasutame seda oma näitejoonises ära. EEPROM kasutab sisemist loendurit, mis suurendab automaatselt mälu asukohta iga järgneva vastuvõetud andmebaidiga. Kui mäluaadress on saadetud, saame seda jälgida kuni 64 baiti andmetega. EEPROM eeldab (õigesti), et aadress 312, millele järgneb 10 baiti, salvestab baiti 0 aadressil 312, baiti 1 aadressil 313, baiti 2 aadressil 314 jne.
Lugege midagi
EEPROMist lugemine järgib põhimõtteliselt sama kolmeastmelist protsessi nagu EEPROMile kirjutamine:
- Saatke mäluaadressi kõige olulisem bait, kuhu soovite kirjutada.
- Saatke mäluaadressi kõige vähem oluline bait, kuhu soovite kirjutada.
- Küsige andmebaiti selles kohas.
Samm: skeemid ja kood
Kood:
#kaasake
#define eeprom 0x50 // määratleb EEPROM -i baasaadressi
tühine seadistus () {
Wire.begin (); // loob traadi objekti
Seriaalne algus (9600);
allkirjastamata int aadress = 0; // EEPROMi esimene aadress
Serial.println ("Kirjutame sihtnumbri 22222, postiindeks"); for (aadress = 0; aadress <5; aadress ++) writeEEPROM (eeprom, aadress, '2'); // Kirjutab EEPROM -ile 22222
for (aadress = 0; aadress <5; aadress ++) {Serial.print (readEEPROM (eeprom, address), HEX); }}
void loop () {
/*funktsioonis loop () pole midagi, sest me ei taha, et arduino kirjutaks sama asja korduvalt EEPROMile ikka ja jälle. Soovime lihtsalt ühekordset kirjutamist, nii et EEPROM-ide korral välditakse funktsiooni loop ().*/}
// määratleb funktsiooni writeEEPROM
void writeEEPROM (int seadmeaadress, allkirjastamata int eeaddress, baitandmed) {Wire.beginTransmission (seadmeaadress); Wire.write ((int) (eadress >> 8)); // kirjutab MSB Wire.write ((int) (eeaddress & 0xFF)); // kirjutab LSB Wire.write (andmed); Wire.endTransmission (); }
// määratleb funktsiooni readEEPROM
bait lugedaEEPROM (int seadme aadress, allkirjastamata int eeaddress) {bait rdata = 0xFF; Wire.beginTransmission (seadme aadress); Wire.write ((int) (eadress >> 8)); // kirjutab MSB Wire.write ((int) (eeaddress & 0xFF)); // kirjutab LSB Wire.endTransmission (); Wire.requestFrom (seadme aadress, 1); if (Wire.available ()) rdata = Wire.read (); tagastama rdata; }
Soovitan:
DHT -andmete lugemine LCD -lt Raspberry Pi abil: 6 sammu
DHT -andmete lugemine LCD -lt Raspberry Pi abil: temperatuur ja suhteline niiskus on keskkonnas olulised ilmastikuandmed. Need kaks võivad olla andmed, mida mini ilmajaam edastab. Raspberry Pi abil saate oma temperatuuri ja suhtelist niiskust lugeda
Valgus- ja temperatuurianduri andmete lugemine ja joonistamine Raspberry Pi abil: 5 sammu
Valgus- ja temperatuuriandurite andmete lugemine ja joonistamine Raspberry Pi abil: Selles juhendis saate teada, kuidas lugeda valgus- ja temperatuuriandurit koos vaarika pi ja ADS1115 analoog -digitaalmuunduriga ning graafiliselt matplotlibi abil graafida. Alustame vajalike materjalidega
Ultrahelianduri (HC-SR04) andmete lugemine 128 × 128 vedelkristallekraanilt ja selle visualiseerimine Matplotlibi abil: 8 sammu
Ultrahelianduri (HC-SR04) andmete lugemine 128 × 128 vedelkristallekraanilt ja nende visualiseerimine Matplotlibi abil: selles juhendis kasutame MSP432 LaunchPad + BoosterPacki, et kuvada ultrahelianduri (HC-SR04) andmed 128 × 128 LCD ja saatke andmed järjestikku arvutisse ning visualiseerige see Matplotlibi abil
SD -kaardi moodul Arduinoga: andmete lugemine/kirjutamine: 14 sammu
Arduinoga SD -kaardi moodul: andmete lugemine/kirjutamine: ülevaade Andmete salvestamine on iga projekti üks olulisemaid osi. Andmete salvestamiseks vastavalt andmetüübile ja suurusele on mitu võimalust. SD- ja mikro -SD -kaardid on mäluseadmete hulgas üks praktilisemaid, mida kasutatakse
Raspberry Pi abil jadapordist lugemine ja kirjutamine Wemose abil: 5 sammu
Raspberry Pi abil jadapordist lugemine ja kirjutamine Wemose abil: Raspberry Pi -ga suhtlemine Wemos D1 mini R2 abil