MAXIM DS2431 1K EEPROM เป็น 1-Wire Gadget ที่เพิ่มที่เก็บข้อมูลไปยังงานที่ใช้ PIN ไมโครคอนโทรลเลอร์เดียว ก่อนหน้านี้เรามักจะเชื่อมต่อเทอร์โมมิเตอร์ 1 สายอย่างไรก็ตาม EEPROM นี้ค่อนข้างแตกต่างกันเนื่องจากมันดึงพลังงานโดยตรงจากรถบัส 1 สาย รับแผ่นข้อมูล (PDF) รวมถึงการปฏิบัติตามในขณะที่เราเช็คเอาท์เช่นเดียวกับการเขียนหน่วยความจำ 1 สายง่ายนี้
DS2431 1-Wire 1K EEPROM (Digikey # DS2431 + -nd, $ 1.67)
เราใช้อินเตอร์เฟส Serial Serial ของรถบัสของเราเพื่อแสดงให้เห็นถึง DS2431 EEPROM เราครอบคลุมการเชื่อมต่อที่เหมาะสมรวมถึงตัวเลือกการกำหนดค่าในโพสต์ 1 สายก่อนหน้าของเรา DS2431 ต้องการการเชื่อมต่อเพียงสองตัว: Ground (PIN 1) เช่นเดียวกับ 1-wire / Power (PIN 2) PIN 3 ยังไม่ได้เชื่อมต่อ เช่นเดียวกับครั้งที่แล้วเราใช้ตัวต้านทานแบบดึงขึ้น 2K กับรถบัส 1 สาย
ก่อนอื่นเราใช้คำสั่ง Brows ROM ของ BUS ROM เพื่อกำหนดอุปกรณ์ 1 สายที่เชื่อมโยง
1-wire> (240) <-Search ROM คำสั่ง macro 1wire rom สั่ง: เรียกดู (0xf0) พบแกดเจ็ตที่: ที่อยู่ Macro 1-Wire 1.0x2d 0x54 0xd2 0xef 0x00 0x00 0x00 0x2b <-Address * DS2431 1K EEPROM <- ประเภท 2.0x2d 0xfe 0x8d 0x43 0x01 0x00 0x00 0x52 * DS2431 1K EEPROM 3.0x2d 0x2b 0xed 0xef 0x00 0x00 0x00 0x7c * DS2431 1K EEPROM พบอุปกรณ์ 0x03 ids 10 Gadget แรกที่นำเสนอโดยมาโครดู (0) 1-wire>
คำสั่งเรียกดู ROM แสดงให้เห็นว่ามี 3 EEPROMS ที่เชื่อมโยงกับรถบัส 1 สาย รถบัสโจรสลัดเก็บที่อยู่ 64bit 1-wire ในมาโครดังนั้นเราจึงไม่ต้องพิมพ์ทุกครั้ง เราจะทำงานกับอุปกรณ์แรกที่กำหนดโดยมาโคร (1)
การเขียนถึง DS2431 ใช้เวลาสามขั้นตอน:
เขียนข้อมูลไปยังบัฟเฟอร์ EEPROM ‘Scratch Pad’ ของ DS2431
ตรวจสอบเนื้อหาของ Scratch Pad เช่นเดียวกับการเขียนการเข้าถึงการเข้าถึงคีย์
คัดลอกข้อมูลจากแผ่นรอยขีดข่วนไปยัง EEPROM สำหรับที่เก็บข้อมูลระยะยาว
คำสั่ง 0x0f ประกอบด้วยแผ่นรอยขีดข่วน The Scratch Pad เป็นบัฟเฟอร์ 8Byte ที่เก็บข้อมูลก่อนที่จะบันทึกอย่างถาวรใน EEPROM
1-wire> (85) (1) 0x0f 0x00 0x00 0 1 2 3 4 5 6 7 <-Command 1 เกียร์รีเซ็ตบัสตกลง 1wire compose command: จับคู่ (0x55) * ติดตามกับที่อยู่ 64 บิต 1wire ที่อยู่ macro 1: 0x2d 0x54 0xd2 0xef 0x00 0x00 0x00 0x2b 1wire write: 0x0f <-Write to Scratch Pad 1wire เขียน: 0x00 <-Begin ที่อยู่ไบต์ 1 1wire เขียน: 0x00 <-Begin ที่อยู่ไบต์ 2 1wire เขียน: 0x00 <-Data 1wire เขียน: 0x01 1wire เขียน: 0x02 1wire เขียน: 0x03 1wire เขียน: 0x04 1wire เขียน: 0x05 1wire เขียน: 0x06 1wire เขียน: 0x07 1-wire>
แมโครการจับคู่ ROM, (85), แยกอุปกรณ์เครื่องแรกมาก (1) 0x0F เป็นคำสั่งให้เขียนไปยังแผ่นรอยขีดข่วนปฏิบัติตามโดยที่อยู่เริ่มต้น 00 ในที่สุดเราส่งข้อมูลแปดไบต์เพื่อบันทึกในแผ่นรอยขีดข่วน แผ่นรอยขีดข่วนมีความยาวแปดไบต์เช่นเดียวกับทั้งแปดไบต์จะถูกคัดลอกจากแผ่นรอยขีดข่วนไปยัง EEPROM ในครั้งเดียว
1-wire> (85) (1) 0XAA R: 3 R: 8 R: 2 R: 2 <-Command 1 เกียร์รีเซ็ตบัสตกลง 1wire compose command: จับคู่ (0x55) * ติดตามกับที่อยู่ 64 บิต 1wire ที่อยู่ macro 1: 0x2d 0x54 0xd2 0xef 0x00 0x00 0x00 0x2b 1wire เขียน: 0xaa <-Read Scratch Pad 1 เคียวอ่านจำนวนมาก 0x03 ไบต์: <- รหัสที่เข้าถึงได้ 0x00 0x00 0x07 1 เคียวอ่านจำนวนมาก 0x08 ไบต์: <- ยืนยันข้อมูลของเรา 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 1 เคียวอ่านจำนวนมาก 0x02 ไบต์: <- CRC ผกผัน 0x44 0x67 1wire อ่านเป็นกลุ่ม 0x02 ไบต์: <- ทั้งหมด 1 ใบจากที่นี่ 0xff 0xff 1-wire>
ในการคัดลอกข้อมูลจากแผ่นรอยขีดข่วนไปยัง EEPROM เราควรดึงข้อมูลสามไบต์สามไบต์เข้าถึงรหัสจากแผ่นรอยขีดข่วนด้วยคำสั่ง 0xAA ไบต์สามไบต์แรกคือการเข้าถึงรหัส (0x00 0x00 0x07) ซึ่งเป็นไปตามข้อมูลที่มีอยู่ในแผ่นรอยขีดข่วน
1-wire> (85) (1) 0x55 0x00 0x00 0x07
1 เกียร์รีเซ็ตบัสตกลง
1wire compose command: จับคู่ (0x55) * ติดตามกับที่อยู่ 64 บิต
1wire ที่อยู่ macro 1: 0x2d 0x54 0xd2 0xef 0x00 0x00 0x00 0x2b
1wire เขียน: 0x55 <-Copy ถึงคำสั่ง eeprom
1Wire Write: 0x00 <-CASS รหัส (3 ไบต์)
1wire เขียน: 0x00
1wire เขียน: 0x07
1-wire> !!!! <- อ่านบิต
1wire เช็คเอาท์บิต: 0
1 วอร์ตเช็คเอาท์บิต: 1 <-bits สลับกันทำเสร็จแล้ว
1wire เช็คเอาท์บิต: 0
1 เช็คเอาท์บิต: 1
1-wire>
คำสั่ง 0x55 ด้วยการเข้าถึงการเข้าถึงที่เหมาะสมกับรหัสจะคัดลอกแผ่นรอยขีดข่วนไปยังข้อมูล EEPROM อ่านบิต (!!!!) สลับระหว่าง 0 เช่นเดียวกับ 1 เมื่อการคัดลอกเสร็จสมบูรณ์
1-wire> (85) (1) 0xf0 0x00 0x00 R: 8 R: 8
1 เกียร์รีเซ็ตบัสตกลง
1wire compose command: จับคู่ (0x55) * ติดตามกับที่อยู่ 64 บิต
1wire ที่อยู่ macro 1: 0x2d 0x54 0xd2 0xef 0x00 0x00 0x00 0x2b
1wire เขียน: 0xf0 <-Read Memory
1wire เขียน: 0x00 <-Start ที่อยู่ (2 ไบต์)
1wire เขียน: 0x00
1wire อ่านเป็นกลุ่ม 0x08 ไบต์: <- อ่านข้อมูลกลับ
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07
1 เคียวอ่านจำนวนมาก 0x08 ไบต์: <- อ่านเกินข้อมูลของเรา
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
1-wire>
คำสั่ง 0xf0 เป็นไปตามที่อยู่หน่วยความจำไบต์สองตัว (0x00 0x00) เริ่มต้นกระบวนการตรวจสอบข้อมูล แปดไบต์แรก (R: 8) เป็นค่าที่เราแต่งก่อนหน้านี้ การอ่านไม่รวมแผ่นรอยขีดข่วนรวมถึงไม่มีข้อ จำกัด 8Byte ดังนั้นการอ่านเพิ่มเติมต่อไปยังจุดสิ้นสุดของหน่วยความจำ
อย่าฟ้าหากต้องการอย่าลืมติดตามข้อความชิ้นส่วนทุกประเภทที่คุณอาจพลาดไป