สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ข้อมูลเบื้องต้นเกี่ยวกับ EEPROM
- ขั้นตอนที่ 2: ความแปลกประหลาดของ EEPROM
- ขั้นตอนที่ 3: การเชื่อมต่อฮาร์ดแวร์ Arduino
- ขั้นตอนที่ 4: การอ่านและการเขียน
- ขั้นตอนที่ 5: แผนผังและโค้ด
วีดีโอ: การอ่านและเขียนข้อมูลไปยัง EEPROM ภายนอกโดยใช้ Arduino: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
EEPROM ย่อมาจากหน่วยความจำแบบอ่านอย่างเดียวที่ตั้งโปรแกรมได้ที่สามารถลบได้ด้วยไฟฟ้า
EEPROM มีความสำคัญและมีประโยชน์มากเพราะเป็นหน่วยความจำรูปแบบที่ไม่ลบเลือน ซึ่งหมายความว่าแม้ในขณะที่ปิดบอร์ด ชิป EEPROM ยังคงเก็บโปรแกรมที่เขียนไว้ ดังนั้นเมื่อคุณปิดบอร์ดแล้วเปิดขึ้นมาใหม่ โปรแกรมที่เขียนลงใน EEPROM ก็สามารถทำงานได้ โดยพื้นฐานแล้ว EEPROM จะจัดเก็บและรันโปรแกรมไม่ว่าจะเกิดอะไรขึ้น ซึ่งหมายความว่าคุณสามารถปิดอุปกรณ์ ปิดเครื่องเป็นเวลา 3 วัน แล้วกลับมาเปิดใหม่อีกครั้ง และยังสามารถเรียกใช้โปรแกรมที่ตั้งโปรแกรมไว้ได้ นี่คือการทำงานของอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภคส่วนใหญ่
โครงการนี้ได้รับการสนับสนุนโดย LCSC ฉันใช้ชิ้นส่วนอิเล็กทรอนิกส์จาก LCSC.com LCSC มีความมุ่งมั่นอย่างแรงกล้าที่จะนำเสนอชิ้นส่วนอิเล็กทรอนิกส์ของแท้คุณภาพสูงที่มีให้เลือกมากมายในราคาที่ดีที่สุดพร้อมเครือข่ายการจัดส่งทั่วโลกไปยังกว่า 200 ประเทศ ลงทะเบียนวันนี้และรับส่วนลด $8 สำหรับการสั่งซื้อครั้งแรกของคุณ
EEPROM ยังมีประสิทธิภาพมากในแต่ละไบต์ใน EEPROM แบบเดิมที่สามารถอ่าน ลบ และเขียนใหม่ได้อย่างอิสระ ในหน่วยความจำแบบไม่ลบเลือนประเภทอื่นๆ ส่วนใหญ่ วิธีนี้ไม่สามารถทำได้ อุปกรณ์ EEPROM แบบอนุกรม เช่น EEPROM ซีรีส์ 24 ของ Microchip ช่วยให้คุณเพิ่มหน่วยความจำให้กับอุปกรณ์ใดๆ ก็ตามที่สามารถพูด I²C ได้
เสบียง
- EEPROM - 24LC512
- ATmega328P-PU
- 16 MHz คริสตัล
- เขียงหั่นขนม
- ตัวต้านทาน 4.7k โอห์ม x 2
- ตัวเก็บประจุ 22 pF x 2
ขั้นตอนที่ 1: ข้อมูลเบื้องต้นเกี่ยวกับ EEPROM
ชิป Microchip 24LC2512 สามารถซื้อได้ในแพ็คเกจ DIP 8 พิน หมุดบน 24LC512 ค่อนข้างตรงไปตรงมาและประกอบด้วยกำลัง (8), GND(4), การป้องกันการเขียน(7), SCL/SDA(6, 5) และหมุดที่อยู่สามตัว (1, 2, 3)
ประวัติโดยย่อของ ROM
คอมพิวเตอร์ประเภท "Stored-Program" ยุคแรกๆ เช่น เครื่องคิดเลขตั้งโต๊ะและตัวแปลแป้นพิมพ์ เริ่มใช้ ROM ในรูปแบบของ Diode Matrix ROM นี่คือหน่วยความจำที่ประกอบด้วยไดโอดเซมิคอนดักเตอร์แบบแยกส่วนที่วางอยู่บน PCB ที่จัดเป็นพิเศษ สิ่งนี้ทำให้เกิด Mask ROM ด้วยการกำเนิดของวงจรรวม Mask ROM นั้นเหมือนกับ Diode Matrix ROM เพียงแต่ถูกใช้งานในระดับที่เล็กกว่ามาก ซึ่งหมายความว่าคุณไม่สามารถย้ายไดโอดสองสามตัวไปรอบ ๆ ด้วยหัวแร้งแล้วตั้งโปรแกรมใหม่ได้ ผู้ผลิตต้องตั้งโปรแกรม Mask ROM และหลังจากนั้นไม่สามารถแก้ไขได้
น่าเสียดายที่ Mask ROM มีราคาแพงและใช้เวลานานในการผลิต เนื่องจากแต่ละโปรแกรมใหม่ต้องใช้อุปกรณ์ใหม่เอี่ยมเพื่อผลิตโดยโรงหล่อ อย่างไรก็ตาม ในปี ค.ศ. 1956 ปัญหานี้ได้รับการแก้ไขด้วยการประดิษฐ์ PROM (Programmable ROM) ซึ่งอนุญาตให้นักพัฒนาตั้งโปรแกรมชิปเองได้ นั่นหมายความว่าผู้ผลิตสามารถผลิตอุปกรณ์ที่ไม่ได้ตั้งโปรแกรมเดียวกันได้หลายล้านเครื่อง ซึ่งทำให้ราคาถูกลงและใช้งานได้จริงมากขึ้น อย่างไรก็ตาม PROM สามารถเขียนได้เพียงครั้งเดียวโดยใช้อุปกรณ์การเขียนโปรแกรมแรงดันสูง หลังจากที่ตั้งโปรแกรมอุปกรณ์ PROM แล้ว ไม่มีทางที่จะทำให้อุปกรณ์กลับสู่สถานะที่ไม่ได้ตั้งโปรแกรมไว้ได้
สิ่งนี้เปลี่ยนไปในปี 1971 ด้วยการประดิษฐ์ EPROM (Erasable Programmable ROM) ซึ่งนอกจากจะเพิ่มตัวอักษรอื่นลงในตัวย่อแล้ว ยังทำให้สามารถลบอุปกรณ์และกลับสู่สถานะ "ว่างเปล่า" โดยใช้แหล่งกำเนิดแสง UV ที่แรง ใช่แล้ว คุณต้องฉายแสงที่สว่างบน IC เพื่อทำการตั้งโปรแกรมใหม่ มันเจ๋งแค่ไหน? ปรากฎว่ามันค่อนข้างเจ๋งเว้นแต่คุณจะเป็นนักพัฒนาซอฟต์แวร์ที่ทำงานเกี่ยวกับเฟิร์มแวร์ ซึ่งในกรณีนี้ คุณต้องการโปรแกรมอุปกรณ์ใหม่โดยใช้สัญญาณไฟฟ้า ในที่สุดสิ่งนี้ก็กลายเป็นความจริงในปี 1983 ด้วยการพัฒนา EEPROM (Electrically Erasable Programmable ROM) และด้วยเหตุนี้เราจึงมาถึงตัวย่อที่ไม่เอื้ออำนวยในปัจจุบัน
ขั้นตอนที่ 2: ความแปลกประหลาดของ EEPROM
มีข้อเสียที่สำคัญสองประการสำหรับ EEPROM เป็นวิธีการจัดเก็บข้อมูล ในการใช้งานส่วนใหญ่ ข้อดีมีมากกว่าข้อเสีย แต่คุณควรระวังก่อนที่จะรวม EEPROM เข้ากับการออกแบบครั้งต่อไปของคุณ
ประการแรก เทคโนโลยีที่ทำให้ EEPROM ทำงานยังจำกัดจำนวนครั้งที่เขียนซ้ำได้ สิ่งนี้เกี่ยวข้องกับอิเล็กตรอนที่ติดอยู่ในทรานซิสเตอร์ที่ประกอบเป็น ROM และสร้างขึ้นจนไม่สามารถจดจำความแตกต่างของประจุระหว่าง "1" และ "0" แต่ไม่ต้องกังวล EEPROM ส่วนใหญ่มีจำนวนการเขียนซ้ำสูงสุด 1 ล้านหรือมากกว่า ตราบใดที่คุณไม่ได้เขียนถึง EEPROM อย่างต่อเนื่อง ไม่น่าจะถึงขีดจำกัดสูงสุดนี้ ประการที่สอง EEPROM จะไม่ถูกลบหากคุณถอดพลังงานออก แต่จะไม่เก็บข้อมูลของคุณไว้อย่างไม่มีกำหนด อิเล็กตรอนสามารถลอยออกจากทรานซิสเตอร์และผ่านฉนวน ลบ EEPROM เมื่อเวลาผ่านไปอย่างมีประสิทธิภาพ ที่กล่าวว่าสิ่งนี้มักเกิดขึ้นในช่วงหลายปีที่ผ่านมา (แม้ว่าจะสามารถเร่งความเร็วได้ด้วยความร้อน) ผู้ผลิตส่วนใหญ่บอกว่าข้อมูลของคุณปลอดภัยบน EEPROM เป็นเวลา 10 ปีหรือมากกว่าที่อุณหภูมิห้อง และมีอีกสิ่งหนึ่งที่คุณควรคำนึงถึงเมื่อเลือกอุปกรณ์ EEPROM สำหรับโครงการของคุณ ความจุ EEPROM วัดเป็นบิตไม่ใช่ไบต์ EEPROM 512K จะเก็บข้อมูล 512Kbits หรืออีกนัยหนึ่งคือ 64KB
ขั้นตอนที่ 3: การเชื่อมต่อฮาร์ดแวร์ Arduino
เอาล่ะ เมื่อเรารู้แล้วว่า EEPROM คืออะไร เรามาลองใช้งานกันดูว่ามันทำอะไรได้บ้าง! เพื่อให้อุปกรณ์ของเราพูดได้ เราจะต้องเชื่อมต่อสายไฟและสายซีเรียล I²C โดยเฉพาะอุปกรณ์นี้ทำงานที่ 5VDC ดังนั้นเราจะเชื่อมต่อกับเอาต์พุต 5V ของ Arduino UNO ของเรา นอกจากนี้ สายI²Cจะต้องใช้ตัวต้านทานแบบดึงขึ้นเพื่อให้การสื่อสารเกิดขึ้นได้อย่างถูกต้อง ค่าของตัวต้านทานเหล่านี้ขึ้นอยู่กับความจุของเส้นและความถี่ที่คุณต้องการสื่อสาร แต่กฎง่ายๆ ที่ดีสำหรับการใช้งานที่ไม่สำคัญคือให้อยู่ในช่วง kΩ ในตัวอย่างนี้ เราจะใช้ตัวต้านทานแบบดึงขึ้น4.7kΩ
มีสามพินบนอุปกรณ์นี้เพื่อเลือกที่อยู่I²C ด้วยวิธีนี้ คุณจะมี EEPROM มากกว่าหนึ่งตัวบนบัสและกำหนดที่อยู่แต่ละอันต่างกัน คุณสามารถกราวด์พวกมันทั้งหมดได้ แต่เราจะเดินสายพวกมันเพื่อให้เราสามารถวางอุปกรณ์ที่มีความจุสูงกว่าได้ในภายหลังในบทช่วยสอน
เราจะใช้เขียงหั่นขนมเพื่อเชื่อมต่อทุกอย่างเข้าด้วยกัน แผนภาพด้านล่างแสดงการเชื่อมต่อที่ถูกต้องสำหรับอุปกรณ์ I²C EEPROM ส่วนใหญ่ รวมถึง Microchip 24-series EEPROM ที่เราจำหน่าย
ขั้นตอนที่ 4: การอ่านและการเขียน
ส่วนใหญ่เมื่อคุณใช้ EEPROM ร่วมกับไมโครคอนโทรลเลอร์ คุณไม่จำเป็นต้องดูเนื้อหาทั้งหมดในหน่วยความจำพร้อมกัน คุณเพียงแค่อ่านและเขียนไบต์ที่นี่และตามต้องการ อย่างไรก็ตาม ในตัวอย่างนี้ เราจะเขียนไฟล์ทั้งหมดไปยัง EEPROM แล้วอ่านทั้งหมดกลับออก เพื่อให้เราสามารถเปิดดูบนคอมพิวเตอร์ของเราได้ สิ่งนี้น่าจะทำให้เรารู้สึกสบายใจกับแนวคิดในการใช้ EEPROM และยังให้ความรู้สึกว่าข้อมูลสามารถใส่ลงในอุปกรณ์ขนาดเล็กได้มากเพียงใด
เขียนอะไรบางอย่าง
ตัวอย่างภาพสเก็ตช์ของเราจะใช้ไบต์ใดๆ ก็ตามที่เข้ามาในพอร์ตอนุกรมและเขียนลงใน EEPROM โดยจะคอยติดตามจำนวนไบต์ที่เราเขียนลงในหน่วยความจำ
การเขียนไบต์ของหน่วยความจำไปยัง EEPROM มักเกิดขึ้นในสามขั้นตอน:
- ส่งไบต์ที่สำคัญที่สุดของที่อยู่หน่วยความจำที่คุณต้องการเขียนถึง
- ส่งไบต์ที่มีนัยสำคัญน้อยที่สุดของที่อยู่หน่วยความจำที่คุณต้องการเขียนถึง
- ส่งไบต์ข้อมูลที่คุณต้องการจัดเก็บที่ตำแหน่งนี้
อาจมีคำสำคัญสองสามคำที่อธิบายไม่ได้:
ที่อยู่หน่วยความจำ
หากคุณจินตนาการถึงไบต์ทั้งหมดใน EEPROM 512 Kbit ที่เรียงต่อกันตั้งแต่ 0 ถึง 64000 - เนื่องจากมี 8 บิตเป็นไบต์ ดังนั้นคุณจึงสามารถใส่ 64000 ไบต์ลงใน EEPROM 512 Kbit ได้ ดังนั้นที่อยู่หน่วยความจำจะอยู่ในตำแหน่งนั้น บรรทัดที่คุณจะพบไบต์เฉพาะ เราจำเป็นต้องส่งที่อยู่นั้นไปยัง EEPROM เพื่อให้รู้ว่าจะวางไบต์ที่เรากำลังส่งไปไว้ที่ไหน
ไบต์ที่มีนัยสำคัญและมีค่าน้อยที่สุด
เนื่องจากมีความเป็นไปได้ 32,000 ตำแหน่งใน EEPROM 256 Kbit - และเนื่องจาก 255 เป็นจำนวนที่ใหญ่ที่สุดที่คุณสามารถเข้ารหัสได้ในหนึ่งไบต์ เราจึงต้องส่งที่อยู่นี้เป็นสองไบต์ ขั้นแรก เราส่ง Most Significant Byte (MSB) - 8 บิตแรกในกรณีนี้ จากนั้นเราจะส่งไบต์ที่มีนัยสำคัญน้อยที่สุด (LSB) - 8 บิตที่สอง ทำไม? เพราะนี่คือสิ่งที่อุปกรณ์คาดว่าจะได้รับ นั่นคือทั้งหมด
การเขียนหน้า
การเขียนทีละไบต์นั้นใช้ได้ แต่อุปกรณ์ EEPROM ส่วนใหญ่มีสิ่งที่เรียกว่า "บัฟเฟอร์การเขียนหน้า" ซึ่งช่วยให้คุณเขียนหลายไบต์พร้อมกันได้เช่นเดียวกับการเขียนไบต์เดียว เราจะใช้ประโยชน์จากสิ่งนี้ในตัวอย่างแบบร่างของเรา EEPROM ใช้ตัวนับภายในที่เพิ่มตำแหน่งหน่วยความจำโดยอัตโนมัติด้วยแต่ละไบต์ข้อมูลต่อไปนี้ที่ได้รับ เมื่อส่งที่อยู่หน่วยความจำแล้ว เราสามารถติดตามข้อมูลได้สูงสุด 64 ไบต์ EEPROM ถือว่า (ถูกต้อง) ว่าที่อยู่ 312 ตามด้วย 10 ไบต์จะบันทึกไบต์ 0 ที่ที่อยู่ 312 ไบต์ 1 ที่ที่อยู่ 313 ไบต์ 2 ที่ที่อยู่ 314 เป็นต้น
อ่านอะไรสักอย่าง
การอ่านจาก EEPROM เป็นไปตามกระบวนการสามขั้นตอนเดียวกันกับการเขียน EEPROM:
- ส่งไบต์ที่สำคัญที่สุดของที่อยู่หน่วยความจำที่คุณต้องการเขียนถึง
- ส่งไบต์ที่มีนัยสำคัญน้อยที่สุดของที่อยู่หน่วยความจำที่คุณต้องการเขียนถึง
- ขอไบต์ข้อมูลที่ตำแหน่งนั้น
ขั้นตอนที่ 5: แผนผังและโค้ด
รหัส:
#รวม
#define eeprom 0x50 //กำหนดที่อยู่พื้นฐานของ EEPROM
การตั้งค่าเป็นโมฆะ () {
Wire.begin(); //สร้างวัตถุ Wire
Serial.begin(9600);
ที่อยู่ int ที่ไม่ได้ลงชื่อ = 0; // ที่อยู่แรกของ EEPROM
Serial.println("เราเขียนรหัสไปรษณีย์ 22222 รหัสไปรษณีย์"); สำหรับ(ที่อยู่ = 0; ที่อยู่< 5; ที่อยู่++) writeEEPROM(eeprom, ที่อยู่, '2'); // เขียน 22222 ไปยัง EEPROM
สำหรับ (ที่อยู่ = 0; ที่อยู่ < 5; ที่อยู่ ++) { Serial.print (readEEPROM (eeprom, ที่อยู่), HEX); } }
วงเป็นโมฆะ () {
/* ไม่มีอะไรในฟังก์ชันลูป () เพราะเราไม่ต้องการให้ Arduino เขียนสิ่งเดียวกันซ้ำ ๆ ไปยัง EEPROM ซ้ำแล้วซ้ำอีก เราแค่ต้องการเขียนเพียงครั้งเดียว ดังนั้นจึงหลีกเลี่ยงฟังก์ชัน loop() ด้วย EEPROM*/ }
//กำหนดฟังก์ชัน writeEEPROM
เป็นโมฆะ writeEEPROM (ที่อยู่อุปกรณ์ int, eeaddress int ที่ไม่ได้ลงชื่อ, ข้อมูลไบต์) { Wire.beginTransmission (ที่อยู่อุปกรณ์); Wire.write((int)(ที่อยู่ >> 8)); //เขียน MSB Wire.write((int)(eaddress & 0xFF)); // เขียน LSB Wire.write (ข้อมูล); Wire.endTransmission(); }
//กำหนดฟังก์ชัน readEEPROM
ไบต์ readEEPROM (ที่อยู่อุปกรณ์ int, eeaddress int ที่ไม่ได้ลงชื่อ) { ไบต์ rdata = 0xFF; Wire.beginTransmission(ที่อยู่อุปกรณ์); Wire.write((int)(ที่อยู่ >> 8)); //เขียน MSB Wire.write((int)(eaddress & 0xFF)); //เขียน LSB Wire.endTransmission(); Wire.requestFrom(ที่อยู่อุปกรณ์, 1); ถ้า (Wire.available()) rdata = Wire.read(); ส่งคืน rdata; }
แนะนำ:
GPS Para Norma (เครื่องบันทึกข้อมูล EEPROM): 5 ขั้นตอน
GPS Para Norma (เครื่องบันทึกข้อมูล EEPROM): เครื่องบันทึกข้อมูลสัตว์เลี้ยง GPS แบบง่ายโดยใช้การบันทึก Arduino และ EEPROM================================ =========================================================================================================================================================================================================================================================
Arduino I²C™ EEPROM BYTEBANGER: 5 ขั้นตอน
Arduino I²C™ EEPROM BYTEBANGER: เมื่อเร็ว ๆ นี้ฉันรู้สึกทึ่งกับI²C EEProms หลังจากค้นคืนบางส่วนจากทีวีฉายภาพด้านหลังเครื่องเก่าที่ฉันเลิกใช้ ฉันค้นหาอินเทอร์เน็ตโดยพยายามค้นหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งเหล่านี้ เช่น เอกสารข้อมูล & บทช่วยสอนเกี่ยวกับวิธีการทำงานเหล่านี้
EEPROM ในตัวของ Arduino: 6 ขั้นตอน
Inbuilt EEPROM ของ Arduino ของคุณ: ในบทความนี้เราจะตรวจสอบ EEPROM ภายในในบอร์ด Arduino ของเรา EEPROM ที่พวกคุณบางคนอาจกำลังพูดถึงคืออะไร? EEPROM เป็นหน่วยความจำแบบอ่านอย่างเดียวที่สามารถตั้งโปรแกรมได้ที่สามารถลบได้ด้วยไฟฟ้า มันเป็นรูปแบบของหน่วยความจำแบบไม่ลบเลือนที่สามารถจำ
การเริ่มต้นการตั้งค่า Arduino EEPROM: 5 ขั้นตอน
การเริ่มต้นการตั้งค่า Arduino EEPROM: สวัสดีทุกคน Arduino ทุกตัวมีหน่วยความจำในตัวขนาดเล็กที่เรียกว่า EEPROM คุณสามารถใช้สิ่งนี้เพื่อจัดเก็บการตั้งค่าสำหรับโปรเจ็กต์ของคุณ โดยค่าที่เลือกจะถูกเก็บไว้ระหว่างรอบกำลัง และค่าเหล่านั้นจะอยู่ที่ค่านั้นในครั้งต่อไปที่คุณเปิดเครื่อง Arduino ฉันมี
การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due: 3 ขั้นตอน
การเพิ่ม 24LC256 EEPROM ให้กับ Arduino Due: Arduino เนื่องจากไม่มี eeprom คำแนะนำนี้เพิ่มหนึ่งรายการและช่วยให้คุณสามารถเก็บค่าในหน่วยความจำแบบไม่ลบเลือนที่จะคงอยู่จากการอัพเดตเฟิร์มแวร์ Arduino