สารบัญ:

การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due: 3 ขั้นตอน
การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due: 3 ขั้นตอน

วีดีโอ: การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due: 3 ขั้นตอน

วีดีโอ: การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due: 3 ขั้นตอน
วีดีโอ: (Arduino) P2/2 Calibrate Keypad w/Auto opitmization function (eeprom + tft lcd 1.8" ) 2024, พฤศจิกายน
Anonim
การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due
การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due

Arduino เนื่องจากไม่มี eeprom คำแนะนำนี้เพิ่มหนึ่งรายการและช่วยให้คุณสามารถเก็บค่าในหน่วยความจำแบบไม่ลบเลือนที่จะคงอยู่จากการอัพเดตเฟิร์มแวร์ Arduino

ขั้นตอนที่ 1: เขียงหั่นขนม

เขียงหั่นขนม
เขียงหั่นขนม

มีคำแนะนำดีๆ อยู่บ้างที่นี่: https://www.hobbytronics.co.uk/arduino-external-eepromฉันเพิ่งทำตาม รูปภาพแสดงวงจรเขียงหั่นขนม พิน 1 ถึง 4 และพิน 7 ต่อสายดิน พิน 8 เชื่อมต่อกับแหล่งจ่ายไฟ 3.3V บนบอร์ด เนื่องจากสายสีเหลือง (พิน 6) และสีขาว (พิน 5) เชื่อมต่อกับพิน i2c SDA (ข้อมูล) และ SCL (นาฬิกา) บนบอร์ดกำหนดส่ง (หมายเลข 21 และ 20)).

ขั้นตอนที่ 2: รหัสเวลา

รหัสเวลา
รหัสเวลา

นี่คือตัวอย่างโค้ดบางส่วนที่ฉันใช้ในสเก็ตช์ ประการแรก รวมส่วนหัวของไลบรารี Wire ไว้ที่ใดที่หนึ่งใกล้กับด้านบนสุดของร่างของคุณ: /* ใช้ 24LC256 EEPROM เพื่อบันทึกการตั้งค่า */ #include จากนั้นเพิ่มฟังก์ชันบางอย่างเพื่ออ่านและเขียนไบต์จาก EEPROM (ฉันสนใจเฉพาะไบต์แต่ละรายการ แต่มี คุณสมบัติการเขียนหน้าในชิปด้วย) โปรดทราบว่ามีคำจำกัดความมาโคร 0x50.. นี่คือที่อยู่ของชิปบนบัส i2c (คุณสามารถเชื่อมต่อ i2c ได้มากกว่าหนึ่งรายการบนบัส i2c และเลือกรายการที่คุณต้องการคุยด้วยโดยเปลี่ยนที่อยู่) /* ฟังก์ชันทั้งสองนี้ช่วยให้เราเขียนไปยังชิป EEPROM 24LC256 */ #define EEPROM_ADDR 0x50 เป็นโมฆะ EEPROM_write (int addr ที่ไม่ได้ลงนาม ข้อมูลไบต์) { 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 เขียน: addr: "); //Serial.print(addr); //Serial.print(" "); //Serial.println(ข้อมูล); ล่าช้า(5); } ไบต์ EEPROM_read (ไม่มีเครื่องหมาย int addr) { ข้อมูลไบต์ = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write((int)(addr >> 8)); // MSB Wire.write((int)(addr & 0xFF)); // LSB Wire.endTransmission(); Wire.requestFrom(EEPROM_ADDR, 1); ถ้า (Wire.available()) data = Wire.read(); //Serial.print("EEPROM อ่าน: addr: "); //Serial.print(addr); //Serial.print(" "); //Serial.println(ข้อมูล); ล่าช้า(5); ส่งคืนข้อมูล; } คุณสามารถยกเลิกหมายเหตุบรรทัด Serial.print(…) หากคุณต้องการดูผลลัพธ์การดีบัก ในฟังก์ชั่นการตั้งค่า Arduinos () คุณเริ่มไลบรารีสายและสามารถอ่านค่าเริ่มต้นได้ ที่นี่ฉันอ่านในสองไบต์ (flags และ max_cc) สองคำ (lean_min และ lean_max) และอาร์เรย์ของคำ sd_max[3]: // อ่านค่าที่บันทึกไว้ใน EEPROM Wire.begin(); แฟล็ก=EEPROM_read(0); max_cc=EEPROM_read(1); lean_min=word(EEPROM_read(3), EEPROM_read(2)); lean_max=word(EEPROM_read(5), EEPROM_read(4)); สำหรับ(int j=0;j<3;j) { sd_max[j]=word(EEPROM_read(7 j*2), EEPROM_read(6 j*2)); } นี่คือโค้ดบางส่วนที่เขียนลงใน EEPROM: EEPROM_write(0, flags); EEPROM_write (1, max_cc); EEPROM_write(2, lowByte(lean_min)); EEPROM_write(3, ไบต์สูง(lean_min)); EEPROM_write (4, ไบต์ต่ำ (lean_max)); EEPROM_write (5, ไบต์สูง (lean_max)); สำหรับ(int j=0;j<3;j) { EEPROM_write(6 j*2, lowByte(sd_max[j])); EEPROM_write(7 j*2, highByte(sd_max[j])); } แค่นั้นจริงๆ

ขั้นตอนที่ 3: วางสาย

วางสาย
วางสาย

ต่อเข้ากับเวโรบอร์ดเพื่อขันสกรูเข้ากับตู้และงานที่ทำเสร็จแล้ว

แนะนำ: