Jeśli jesteś producentem i wykonujesz projekty DIY, w których musisz pracować z pamięcią, na pewno wiesz już, jak działają różne wspomnienia, które integruje Arduino, takie jak flash (nieulotny, gdzie przechowywany jest szkic i bootloader), SRAM (szybka i ulotna pamięć, w której zmienne programu pozostają podczas przetwarzania) i EEPROM (nieulotna i może być używana do przechowywania informacji o ponownym uruchomieniu).
Cóż, oprócz EEPROM-u zawartej w Arduino, można również użyć zewnętrznych chipów ten rodzaj pamięciJak jeszcze jeden składnik. Nie są one skomplikowane do zrozumienia ani do interakcji z nimi w celu uzyskania dostępu (zapisu i odczytu) lub aktualizacji przechowywanych informacji. Tutaj znajdziesz wszystko, co musisz wiedzieć, aby rozpocząć pracę z tego typu wspomnieniami ...
Co to jest EEPROM?
La EEPROM (elektrycznie kasowalna, programowalna pamięć tylko w kolorze czerwonym) Jest to rodzaj pamięci ROM, czyli pamięci nieulotnej, w której dane będą przechowywane na stałe, nawet po odłączeniu zasilania. To stawia je po drugiej stronie pamięci RAM (pamięć o dostępie swobodnym), które tracą wszystkie dane, gdy nie są zasilane.
W przypadku EEPROM nie jest to pamięć taka jak ROM, w której zapisywane są dane i nie można ich już zmieniać. EEPROM, podobnie jak flash, przyznaje się do zmiany w razie potrzeby. Oznacza to, że niektóre dane można przechowywać i usuwać w celu przechowywania innych.
W rzeczywistości, jak wskazują jego akronimy, jest to plik pamięć kasowana elektrycznie (kasowalny elektrycznie) do przeprogramowania. Różni się to od innych typów pamięci ROM, które są również kasowalne jak EPROM, ale w tym przypadku do wymazywania komórek pamięci nie jest wykorzystywana energia elektryczna, zamiast tego miały one kwarcowe „okienko” na chipie, aby móc rzutować światło UV. który został usunięty.
Ta cecha EPROM sprawiało, że czuli się trochę nieswojo, musieli rzucać te promienie, aby je usunąć. A co najgorsze, mogą zostać przypadkowo usunięte, jeśli zostaną wystawione na tego typu promieniowanie. W EEPROM-ach można to robić przez napięcia, w wygodniejszy i bezpieczniejszy sposób.
Struktura wewnętrzna
Aby EEPROM mógł działać, potrzebne są bardzo szczególne komórki pamięci. Są zbudowane przy użyciu tranzystorów typu MOS, ale mają pływającą bramkę w porównaniu z tradycyjnymi tranzystorami MOSFET. Te nowe tranzystory mają strukturę znaną jako Samos, a jego normalny stan jest odcięty, a wyjście zawsze będzie wskazywać logiczne 1.
Te komórki EEPROM można odczytywać nieograniczoną liczbę razy, ale jest to ograniczone ile razy można je usunąć i przeprogramować, jak to się dzieje w przypadku wielu innych. Dzieje się tak również z pamięcią flash, dlatego tak dużo mówi się o trwałości dysków SSD, pendrive'ów itp.
W przypadku SAMOS ten limit znajduje się między 100.000 1.000.000 i XNUMX XNUMX XNUMX razy. Potem zawiodą. Nawiasem mówiąc, niektóre struktury, które zostały stworzone przez starego znajomego, jednego z największych: dr Fujio Masuoka z firmy Toshiba (1984), który stworzył również inne ważne pamięci i struktury półprzewodnikowe ... Jednak pierwszy chip został uruchomiony na rynkiem był Intel od 1988 roku, EEPROM typu NOR.
Ponadto musisz wiedzieć, że ten typ pamięci jest zwykle połączony z procesorami lub kontrolerami za pośrednictwem autobus z protokołami takimi jak SPI, I2Citp. W przypadku MCU (mikrokontrolerów) jest zwykle zintegrowany wewnątrz, jak w niektórych DSP, aby uzyskać większą prędkość.
Jak widać na powyższym obrazku, plik Tranzystory SAMOS które tworzą komórki pamięci, są zgrupowane w tym przypadku parami. Jedna z linii dołączonych do bramek niektórych tranzystorów działa jako linia z wyboru, aby zaznaczyć lub zasygnalizować tę linię w celu uzyskania dostępu (odczytu i zapisu), a druga będzie tą, która przechowuje bit informacji (0 lub 1).
Tranzystory są wyrównane, aby utworzyć wymagane długości słów (4-bitowe, 8-bitowe, 16-bitowe, ...) i tyle słów, ile capacidad chcesz mieć EEPROM (np .: może być 64-bitowa długość słowa i przy 16 liniach = 1024 bity, czyli 1kb).
Jak działa EERPOM?
Jak widać z boku, do wykonania różne zadania, napięcie twojej bramy, źródła i odpływu musi być konkretne:
- Drzwi przy 20v i opróżnianie przy 20v = programowanie (zapisywanie) komórki pamięci do przechowywania żądanego bitu.
- Drzwi przy 0v i opróżnianie przy 20v = wyczyść przechowywany bit, aby można go było przeprogramować inną wartością.
- Bramka przy 5v i opróżnianie przy 5v = przeczytaj przechowywany bit. Ponieważ napięcie bramki jest niższe niż napięcie zapisu, przechowywana wartość nie zostanie zmieniona. To samo dzieje się z napięciem drenu, ponieważ jest niższe, przechowywany bit nie zostanie usunięty.
Wniosek, EEPROM używają kilku napięcia „Wysoki” do wymazywania i zapisywania, przy użyciu niższych napięć do odczytu ...
Kup EEPROM i pracuj z nim
STMicroelectronics, francuski producent mikroelektroniki, jest numerem jeden w tego typu układach EEPROM, chociaż istnieje wielu innych producentów, takich jak Microchip. Te żetony są zwykle dość tanie.
Jeśli zdecydujesz użyj jednego z tych chipów, powinieneś zobaczyć producenta i model i poszukać jego datasheet aby zapoznać się ze wszystkimi zaleceniami producenta, ponieważ mogą się one różnić między sobą. Na przykład określą napięcia, z którymi działa, pinoutitp. Możesz więc poprawnie skonfigurować swój projekt.
W zależności od rozmiaru i modelu może mieć mniej lub więcej sosny. Ale żeby dać ci pomysł, typowy układ scalony 24LC512 EEPROM IC może składać się z:
- Piny 1 (A0), 2 (A1) i 3 (A3) użyte w konfiguracji to piny wyboru.
- Pin 4 (Vss / GND) podłączony do masy.
- Pin 5 (SDA), dla danych szeregowych do komunikacji I2C.
- Pin 6 (SCL), dla zegara dla I2C.
- Pin 7 (WP), ochrona przed zapisem lub ochrona przed zapisem. Jeśli jest podłączony do GND, zapis będzie włączony. Jeśli łączy się z Vcc, jest wyłączone.
- Pin 8 (Vcc), podłączony do zasilania.
W Specyfikacja techniczna tego chipa:
- 512K (64 × 8)
- 128-bajtowy bufor do zapisu
- Napięcie robocze: 1.8 V do 5.5 V.
- Prąd odczytu: 40uA
- Magistrala komunikacyjna: I2C
- Cykl zapisu: 5 ms
- Zgodność zegara: 100-400 kHz
- Trwałość: 10.000.000 cykli
- Można połączyć kaskadowo do 8 urządzeń
- Opakowanie: 8-pinowy DIP, SOIJ, SOIC i TSSOP.
Gdzie kupić
do kup chipy EEPROM, możesz zapoznać się z tymi zaleceniami:
- Szeregowy interfejs SPI 95040Kb ST 4
- Nie znaleziono produktów
- Nie znaleziono produktów
- Nie znaleziono produktów
- ST 24LC256 szeregowy I2C 256Kb
- Microchip 24LC256-i / sn szeregowy I2C 256Kb
Korzystanie z Arduino EEPROM
Jeśli chcesz rozpocząć pracę z pamięcią EEPROM, możesz również wypróbować tę na swojej płycie Arduino. Można go zaprogramować w prosty sposób, aby zrozumieć na poziomie logicznym i programowania, jak to działa.
Przykład zapisywania zmiennej
//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 }
Przykład odczytu danych z 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() { }
Przykład aktualizacji wartości, zmiany harmonogramu
//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 }
Więcej informacji - Darmowy kurs Arduino