Mündəricat:

Arduino Due -yə 24LC256 EEPROM əlavə etmək: 3 addım
Arduino Due -yə 24LC256 EEPROM əlavə etmək: 3 addım

Video: Arduino Due -yə 24LC256 EEPROM əlavə etmək: 3 addım

Video: Arduino Due -yə 24LC256 EEPROM əlavə etmək: 3 addım
Video: Подключение внешней EEPROM к Ардуино на примере памяти 24LC512 2024, Iyul
Anonim
Arduino Due -yə 24LC256 EEPROM əlavə etmək
Arduino Due -yə 24LC256 EEPROM əlavə etmək

Arduinoda eeprom yoxdur. Bu təlimat bir əlavə edir və arduino firmware yeniləməsindən sağ çıxacaq dəyərləri dəyişməz yaddaşda saxlamağa imkan verir.

Addım 1: Breadboard

Çörək taxtası
Çörək taxtası

Həqiqətən yaxşı təlimatlar var: https://www.hobbytronics.co.uk/arduino-external-eeprom 1 -dən 4 -ə qədər sancaqlar və 7 -ci pinlər torpaqlıdır. pin 8, müvafiq lövhədəki 3.3V elektrik təchizatına bağlıdır. 21 və 20 nömrəli lövhədə i2c SDA (məlumat) və SCL (saat) pinlərinə qoşulmuş sarı (pin 6) və ağ (pin 5) tellər.).

Addım 2: Kod Zamanı

Kod vaxtı
Kod vaxtı

Eskizlərimdə istifadə etdiyim bəzi kod parçaları. Birincisi, eskizin yuxarısına yaxın bir yerə Wire kitabxana başlıqlarını daxil edin: / * Ayarları saxlamaq üçün 24LC256 EEPROM istifadə edin * / #include Sonra EEPROM -dan bayt oxumaq və yazmaq üçün bəzi funksiyalar əlavə edin (yalnız fərdi baytlara əhəmiyyət verirəm, ancaq çipdə səhifə yazma xüsusiyyəti də var). 0x50 makro tərifinin olduğunu unutmayın.. bu, i2c avtobusundakı çipin ünvanıdır (i2c avtobusda birdən çox i2c şeyi birləşdirə və ünvanı dəyişdirərək hansı biri ilə danışmaq istədiyinizi seçə bilərsiniz). / * Bu iki funksiya 24LC256 EEPROM çipinə yazmağımıza kömək edir */ #define EEPROM_ADDR 0x50 boş EEPROM_write (imzasız int addr, bayt məlumatları) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM yaz: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); gecikmə (5); } bayt EEPROM_read (imzasız int addr) {bayt məlumatları = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); əgər (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM oxu: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); gecikmə (5); məlumatların qaytarılması; } Bəzi ayıklama çıxışını görmək istəyirsinizsə, Serial.print (…) sətirlərini şərh edə bilərsiniz. Arduinos setup () funksiyasında tel kitabxanasını işə salırsınız və ilkin dəyərlərdə oxuya bilərsiniz. Burada iki bayt (bayraqlar və max_cc), iki söz (lean_min və lean_max) və bir sıra sd_max [3] oxudum: // EEPROM Wire.begin () -də qeyd olunan dəyərləri oxuyun; bayraqlar = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = söz (EEPROM_read (3), EEPROM_read (2)); lean_max = söz (EEPROM_read (5), EEPROM_read (4)); for (int j = 0; j <3; j) {sd_max [j] = söz (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } EEPROM -a bunları yazan kod biti: EEPROM_write (0, bayraqlar); EEPROM_write (1, max_cc); EEPROM_write (2, lowByte (lean_min)); EEPROM_write (3, highByte (lean_min)); EEPROM_write (4, lowByte (lean_max)); EEPROM_write (5, highByte (lean_max)); for (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j])); EEPROM_write (7 j*2, highByte (sd_max [j])); } Həqiqətən bu barədə.

Addım 3: Bağlayın

Bağlayın
Bağlayın

Bir korpusa və görülən işlərə vidalaşmaq üçün bir az veroboardun üzərinə bağlayın.

Tövsiyə: