Sekiranya anda pembuat dan anda membuat beberapa projek DIY di mana anda harus bekerja dengan memori, pasti anda sudah mengetahui bagaimana kenangan berbeza yang disatukan oleh Arduino berfungsi, seperti kilat (tidak mudah berubah di mana sketsa dan pemuat but disimpan), SRAM (memori cepat dan tidak stabil di mana pemboleh ubah program kekal semasa pemprosesan), dan EEPROM (tidak mudah berubah dan boleh digunakan untuk menyimpan maklumat but semula).
Selain EEPROM yang termasuk dalam Arduino, anda juga boleh menggunakan cip luaran dari ingatan seperti iniSebagai satu komponen lagi. Mereka tidak rumit untuk memahami, atau berinteraksi dengan mereka untuk menghasilkan akses (menulis dan membaca) atau kemas kini maklumat yang disimpan. Di sini anda akan menemui semua yang perlu anda ketahui untuk mula bekerja dengan jenis kenangan ini ...
Apa itu EEPROM?
STEP Mikroelektronik EEPROM
La EEPROM (Memori Bersih Merah yang Boleh Diprogramkan Secara Elektronik) Ia adalah sejenis memori ROM, iaitu memori tidak mudah menguap di mana data akan disimpan secara kekal, walaupun bekalan kuasa dikeluarkan. Itu meletakkan mereka di sisi lain RAM (Memori Akses Rawak), yang kehilangan semua datanya ketika tidak dihidupkan.
Dalam kes EEPROM, bukan memori seperti ROM, di mana data direkodkan dan tidak lagi dapat diubah. EEPROM, seperti kilat, mengaku diubah seperti yang diperlukan. Iaitu, beberapa data dapat disimpan dan dipadam untuk menyimpan yang berbeza.
Sebenarnya, seperti yang ditunjukkan oleh akronimnya, ia adalah memori yang boleh dipadamkan secara elektrik (boleh dipadamkan elektrik) untuk pengaturcaraan semula. Ini berbeza dengan jenis ROM lain, yang juga dapat dihapus seperti EPROM, tetapi dalam hal ini elektrik tidak digunakan untuk menghapus sel memori, sebaliknya mereka mempunyai "tingkap" kuarza pada cip untuk dapat memproyeksikan sinar UV. Dengan yang telah dipadamkan.
Ciri itu EPROM itu membuat mereka agak tidak selesa, terpaksa memproyeksikan sinar tersebut untuk menghapusnya. Dan, yang paling teruk, mereka boleh terhapus secara tidak sengaja jika terkena jenis sinaran ini. Dalam EEPROM, ia dibenarkan melakukannya melalui voltan, dengan cara yang lebih selesa dan selamat.
Struktur dalaman
Sumber: Researchgate.net
Agar EEPROM berfungsi, sel memori yang sangat diperlukan. Mereka dibina menggunakan transistor jenis MOS, tetapi mempunyai pintu apungan berbanding dengan MOSFET tradisional. Transistor baru ini mengikuti struktur yang dikenali sebagai SAMOS, dan keadaan normalnya terputus dan output akan selalu memberikan logik 1.
Sel EEPROM ini dapat dibaca berkali-kali tanpa had, tetapi ia terhad dalam berapa kali ia dapat dihapus dan diprogramkan semula, seperti yang berlaku pada banyak orang lain. Ini juga berlaku dalam keadaan kilat, sebab itulah banyak perbincangan mengenai ketahanan cakera keras SSD, pemacu pen, dll.
Dalam kes SAMOS, had ini antara 100.000 dan 1.000.000 kali. Selepas itu, mereka akan gagal. By the way, beberapa struktur yang diciptakan oleh seorang kenalan lama, salah satu yang hebat: Dr. Fujio Masuoka dari Toshiba (1984), yang juga telah mencipta kenangan penting dan struktur semikonduktor ... Namun, cip pertama dilancarkan pada pasaran adalah Intel dari tahun 1988, EEPROM jenis NOR.
Di samping itu, anda harus tahu bahawa memori jenis ini biasanya dihubungkan dengan CPU atau pengawal melalui bas dengan protokol seperti SPI, I2C, dan lain-lain. Dalam kes MCU (mikrokontroler) biasanya disatukan di dalam, seperti di beberapa DSP, untuk mencapai kelajuan yang lebih besar.
Seperti yang dapat dilihat pada gambar di atas, Transistor SAMOS yang membentuk sel memori, dikelompokkan dalam kes itu secara berpasangan. Salah satu garis yang dilekatkan pada gerbang beberapa transistor bertindak sebagai garis pilihan, untuk menandakan atau menandakan garis itu untuk akses (membaca dan menulis), dan yang lain akan menjadi yang menyimpan bit maklumat (0 atau 1).
Transistor diselaraskan untuk membentuk panjang perkataan yang diperlukan (4-bit, 8-bit, 16-bit, ...) dan seberapa banyak perkataan yang kapasiti anda ingin mempunyai EEPROM (contohnya: boleh ada panjang perkataan 64-bit dan dengan 16 baris = 1024 bit, iaitu, 1kb).
Bagaimana EERPOM berfungsi?
Seperti yang anda lihat di sebelah, untuk membuat persembahan tugas yang berbeza, voltan pintu, sumber dan longkang anda mestilah konkrit:
- Pintu pada 20v dan Tiriskan pada 20v = pengaturcaraan (penulisan) sel memori untuk menyimpan bit yang diinginkan.
- Pintu pada 0v dan Tiriskan pada 20v = kosongkan bit yang disimpan sehingga dapat diprogramkan semula dengan nilai lain.
- Gerbang pada 5v dan Tiriskan pada 5v = baca bit yang disimpan. Oleh kerana voltan gerbang lebih rendah daripada penulisan, nilai yang disimpan tidak akan diubah. Perkara yang sama berlaku dengan voltan saliran, kerana semakin rendah, bit yang disimpan tidak akan terpadam.
Kesimpulannya, EEPROM menggunakan beberapa voltan "Tinggi" untuk memadam dan menulis, sambil menggunakan voltan yang lebih rendah untuk membaca ...
Beli EEPROM dan bekerjasama dengannya
STMicroelectronics, pengeluar mikroelektronik Perancis, adalah yang pertama dalam jenis cip EEPROM ini, walaupun terdapat banyak pengeluar lain, seperti Microchip. Cip ini biasanya agak murah.
Sekiranya anda memutuskan untuk gunakan salah satu kerepek ini, anda mesti melihat pengeluar dan modelnya dan mencarinya Lembaran data untuk melihat semua cadangan pengeluar, kerana ia mungkin berbeza antara satu sama lain. Sebagai contoh, mereka akan menentukan voltan yang berfungsi, peniti, dan lain-lain. Oleh itu, anda boleh mengkonfigurasi projek anda dengan betul.
Bergantung pada ukuran dan model, ia mungkin mempunyai lebih kurang pain. Tetapi untuk memberi anda idea, cip IC EEPROM 24LC512 khas boleh terdiri daripada:
- Pin 1 (A0), 2 (A1), dan 3 (A3) yang digunakan dalam konfigurasi adalah pin pilihan.
- Pin 4 (Vss / GND) disambungkan ke tanah.
- Pin 5 (SDA), untuk data bersiri untuk komunikasi I2C.
- Pin 6 (SCL), untuk jam untuk I2C.
- Pin 7 (WP), perlindungan tulis atau perlindungan tulis. Sekiranya ia disambungkan ke GND, penulisan akan diaktifkan. Sekiranya ia menyambung ke Vcc, ia dilumpuhkan.
- Pin 8 (Vcc), disambungkan ke kuasa.
Sebagai Spesifikasi teknikal cip ini:
- 512K (64 × 8)
- Penyangga 128-bait untuk menulis
- Voltan operasi: 1.8v hingga 5.5v
- Bacaan semasa: 40uA
- Bas komunikasi: I2C
- Kitaran tulis: 5ms
- Keserasian jam: 100-400Khz
- Ketahanan: 10.000.000 kitaran
- Boleh dilambung hingga 8 peranti
- Pembungkusan: 8-pin DIP, SOIJ, SOIC dan TSSOP.
Di mana untuk membeli
kepada beli kerepek EEPROM, anda boleh melihat cadangan berikut:
- 95040Kb ST 4 siri SPI
- ST M28C64C selari 64Kb
- ST M24C02C bersiri I2C 2Kb
- Siri ST M8571B6 2Kb I1C
- ST 24LC256 bersiri I2C 256Kb
- Microchip 24LC256-i / sn bersiri I2C 256Kb
Menggunakan EEPROM Arduino
Sekiranya anda ingin mula bekerja dengan EEPROM, anda juga boleh mencuba yang ada di papan anda Arduino. Ia dapat diprogramkan dengan cara yang mudah untuk memahami pada tahap logik dan pengaturcaraan bagaimana ia dapat berfungsi.
Contoh untuk menyimpan pemboleh ubah
//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 }
Contoh untuk membaca data dari 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() { }
Contoh untuk mengemas kini nilai, menjadualkan semula
//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 }
Maklumat lanjut - Kursus Arduino percuma
Menjadi yang pertama untuk komen