สารบัญ:

Bus Pirate 3EEPROM Explorer Board: 5 ขั้นตอน
Bus Pirate 3EEPROM Explorer Board: 5 ขั้นตอน

วีดีโอ: Bus Pirate 3EEPROM Explorer Board: 5 ขั้นตอน

วีดีโอ: Bus Pirate 3EEPROM Explorer Board: 5 ขั้นตอน
วีดีโอ: มาเก๊า 3 วัน 2 คืน แบบไม่ซ้ำที่เดิมๆ | VLOG 2024, พฤศจิกายน
Anonim
รถบัสโจรสลัด 3EEPROM Explorer Board
รถบัสโจรสลัด 3EEPROM Explorer Board

หากคุณมีหนึ่งใน Hack a Day's Bus Pirates คุณจะทำอย่างไรกับมัน? เรียนรู้เกี่ยวกับ 1-wire, I2C และ SPI EEPROM ด้วยบอร์ดสำรวจ 3EEPROM (เราเรียกว่า THR-EE-PROM)EEPROM เป็นชิปหน่วยความจำประเภทหนึ่งที่จัดเก็บข้อมูลโดยไม่ต้องใช้แหล่งจ่ายไฟอย่างต่อเนื่อง มีประโยชน์สำหรับการจัดเก็บข้อมูลถาวรในวงจรตัวตัดไม้ขนาดเล็ก หรือการถือเพจที่กำหนดเองในเว็บเซิร์ฟเวอร์ขนาดเล็ก EEPROM มีหลายขนาดและโปรโตคอล 3EEPROM มีชิป EEPROM ทั่วไปสามตัว: DS2431 (1-Wire), 24AA- (I2C) และ 25AA- (SPI) ทั้งสามได้รับการสาธิตก่อนหน้านี้ใน Hack a Day แต่การสาธิตแต่ละครั้งใช้ฮาร์ดแวร์และเฟิร์มแวร์ Bus Pirate เวอร์ชันอื่น ซึ่งยากสำหรับผู้เริ่มต้นที่จะปฏิบัติตามโดยใช้ Bus Pirate v2go โปรดอ่านข้อมูลอัปเดตทีละขั้นตอนเพื่อใช้งาน DS2431, 24AA- และ 25AA- EEPROMs พร้อม Bus Pirate v2go นอกจากนี้เรายังมีบันทึกเซสชันแบบเต็มเป็นไฟล์ข้อความ ดังนั้นคุณจะไม่พลาดทุกรายละเอียด เราสามารถมี 3EEPROM explorer board PCBs หรือชุดอุปกรณ์ที่ผลิตขึ้นที่ Seeed Studio PCBs อยู่ที่ประมาณ $10 ชุดคิทประมาณ $15 จัดส่งทั่วโลก เราจำเป็นต้องจัดซื้อกลุ่ม 10 PCBs หรือ 20 ชุดเพื่อเริ่มต้น หากคุณสนใจ Bus Pirate เวอร์ชัน 3 กำลังจะมาถึง ฉันไม่สามารถรวมองค์ประกอบการจัดรูปแบบและตาราง HTML ใน Instructable ได้ คุณสามารถดูโพสต์ต้นฉบับได้ที่บล็อก Dangerous Prototypes

ขั้นตอนที่ 1: ภาพรวมฮาร์ดแวร์ 3EEPROM

ภาพรวมฮาร์ดแวร์ 3EEPROM
ภาพรวมฮาร์ดแวร์ 3EEPROM
ภาพรวมฮาร์ดแวร์ 3EEPROM
ภาพรวมฮาร์ดแวร์ 3EEPROM
ภาพรวมฮาร์ดแวร์ 3EEPROM
ภาพรวมฮาร์ดแวร์ 3EEPROM

เป้าหมายของต้นแบบนี้คือการเรียนรู้เกี่ยวกับ EEPROM และโปรโตคอลบัสทั่วไปสามตัว ก่อนอื่นเราดูที่ 3EEPROM PCB จากนั้นเราสาธิต EEPROM แต่ละตัวโดยใช้เครื่องมืออินเทอร์เฟซอนุกรมสากลของ Bus Pirate หากคุณไม่มี Bus Pirate คุณยังสามารถทำตามได้ เนื่องจากลำดับการทำงานของอินเทอร์เฟซพื้นฐานยังคงเหมือนเดิมไม่ว่าคุณจะใช้งานอย่างไร แผนผังวงจรขนาดเต็ม [PNG] เราสร้างวงจรและ PCB โดยใช้ Cadsoft Eagle เวอร์ชันฟรีแวร์ คุณสามารถดาวน์โหลดแผนผังและ PCB ได้จากไฟล์เก็บถาวร Bus Pirate SVN 3EEPROM PCB มี DS2431 1-Wire EEPROM (IC1), 24AA- I2C EEPROM (IC4) และ 25AA- SPI EEPROM (IC5) DS2431 (IC1) ดึงพลังงานแบบปรสิตจากบัส 1-Wire มันไม่มีพินของพาวเวอร์ซัพพลายภายนอกและไม่ต้องการตัวเก็บประจุแบบแยกคัปปลิ้ง IC2 และ IC3 เป็นจุดว่างสำหรับอุปกรณ์ 1-Wire เพิ่มเติม เช่น DS2431 อื่นหรือเซ็นเซอร์อุณหภูมิ DS1822 C1 (0.01uF) เป็นทางเลือกและจำเป็นเฉพาะในกรณีที่มีการติดตั้ง IC2 หรือ IC3 ด้วยอุปกรณ์ 1-Wire ที่จ่ายไฟ 1-Wire ต้องใช้ตัวต้านทานแบบดึงขึ้นที่แข็งแกร่ง สูงสุด 2.2K โอห์ม ตัวต้านทานแบบดึงขึ้นบนบอร์ดของ Bus Pirate อยู่ที่ 10K ซึ่งอ่อนเกินไปที่จะจ่ายไฟให้กับ DS2431 อย่างเหมาะสมระหว่างการเขียน บอร์ดสำรวจ 3EEPROM ประกอบด้วยตัวต้านทานดึงขึ้น 1.8k ohm 1/8 วัตต์ (R1) บนบัส 1-Wire เพื่อไม่ให้มีตัวต้านทานแบบดึงขึ้นเพิ่มเติม 24AA- (IC4) และ 25AA- (IC5) แต่ละตัวจะได้รับตัวเก็บประจุ 0.1uF เพื่อแยกพวกมันออกจากแหล่งจ่ายไฟ (C2, C3) คุณอาจไม่ต้องการตัวเก็บประจุในวงจรง่ายๆ เช่นนี้ เราละเว้นจากบอร์ดต้นแบบในการสาธิต บัส I2C ที่ใช้โดย 24AA- ยังต้องการตัวต้านทานแบบดึงขึ้น แต่ตัวต้านทานแบบดึงขึ้น 10K ohm บนบอร์ดของ Bus Pirate ก็เพียงพอแล้ว ส่วนประกอบทั้งหมดจะทำงานจาก 2.8 โวลต์ถึง 5 โวลต์ DC วงจรนี้ขับเคลื่อนผ่านพิน VCC และ GND ของจัมเปอร์ 3 มีพิน VCC สองตัว อันหนึ่งใช้สำหรับจ่ายไฟ อีกอันสำหรับพินอินพุตแรงดันไฟฟ้าตัวต้านทานแบบดึงขึ้นของ Bus Pirate (Vpullup) PCB เราทำวงจรและ PCB โดยใช้ Cadsoft Eagle เวอร์ชันฟรีแวร์ คุณสามารถดาวน์โหลดแผนผังและ PCB ได้จากไฟล์เก็บถาวร Bus Pirate SVN หากคุณต้องการชุด PCB หรือ 3EEPROM ที่จัดเตรียมอย่างมืออาชีพ เราอาจจัดซื้อเป็นกลุ่มได้หากมีผู้สนใจ 10 หรือ 20 คน รายการชิ้นส่วน R1 ตัวต้านทาน 1800 โอห์ม (วัตต์ 1/8) C2, ตัวเก็บประจุ 3 0.1uF/10 โวลต์+JP1-4 0.1" หัวเสียบขาชายIC1 DS2431 1K 1-wire EEPROM TO-92IC4** 24AA014-I/P I2C EEPROM DIP8IC5** 25AA010A-I/P SPI EEPROM DIP8ICS4, 5 8 พิน DIP socket สำหรับ IC5, 6**IC4, IC5 มีขนาดใดก็ได้ เราเชื่อมโยงกับชิปขนาดเล็ก เราใช้ 128bytes และ 128Kbytes ฉันไม่สามารถรวมการจัดรูปแบบและตาราง HTML บางส่วน ใน Instructable คุณสามารถดูโพสต์ต้นฉบับได้ที่บล็อก Dangerous Prototypes

ขั้นตอนที่ 2: 25AA- / 25LC- SPI EEPROM

25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM
25AA- / 25LC- SPI EEPROM

การสาธิตการสาธิต EEPROM ทั้งหมดดูค่อนข้างเหมือนกัน เราจะเขียนตัวเลขสองสามตัวลงบนชิปแล้วอ่าน อุปกรณ์แต่ละเครื่องมีเงื่อนไขที่ใช้เมื่อคุณต้องการเขียนค่ามากกว่าสองสามค่า เช่น ขนาดหน้าและข้อจำกัดขอบเขต อ่านเพิ่มเติมเกี่ยวกับสิ่งเหล่านี้ในเอกสารข้อมูลสำหรับอุปกรณ์เฉพาะของคุณ หากคุณไม่สามารถสาธิตการใช้งานได้ ให้ดาวน์โหลดบันทึกเทอร์มินัลทั้งหมด เพื่อให้คุณไม่พลาดสิ่งที่เราทำ ตัวต้านทานแบบดึงขึ้นเป็นปัญหาที่พบบ่อยที่สุด ตรวจสอบแรงดันพินแบบดึงขึ้นโดยใช้เมนู 'v' ในเทอร์มินัล Bus Pirate ชิป: 25AA, SPI EEPROM (1Kbyte) รถบัส:SPI ตัวต้านทานแบบดึงขึ้นจำเป็นสำหรับการเชื่อมต่อแรงดันไฟฟ้าแบบผสมเท่านั้น ข้อกำหนดด้านพลังงาน: 1.8 โวลต์ถึง 5.5 โวลต์ (AA), 2.5 โวลต์ถึง 5.5 โวลต์ (LC) ข้อมูลอ้างอิง: แผ่นข้อมูล การสาธิตการแฮ็กวัน บันทึกเซสชัน Bus Pirate ที่สมบูรณ์สำหรับการสาธิตนี้ ฉันไม่สามารถรวมการจัดรูปแบบและตาราง HTML ใน Instructable ได้ คุณสามารถดูต้นฉบับได้ที่บล็อก Dangerous Prototypes IC5 คือ 25AA- series I2C EEPROM จาก Microchip EEPROM เหล่านี้มีหลายขนาด ชิ้นส่วน AA ทำงานตั้งแต่ 1.8 โวลต์ถึง 5.5 โวลต์ ในขณะที่ชิ้นส่วน 25LC- มีข้อกำหนดขั้นต่ำ 2.5 โวลต์ C3 (0.1uF) จะแยก SPI EEPROM ออกจากแหล่งจ่ายไฟ ไมโครคอนโทรลเลอร์ควบคุมการเขียน (WP) และหมุดยึดไว้ได้ แต่เราปิดการใช้งานโดยถือหมุดเหล่านี้ไว้สูง หมุดบัส SPI, CS, DO, CLK และ DI ถูกนำไปที่ส่วนหัว JP4 ตั้งค่า หากคุณกำลังใช้ Bus Pirate ให้เชื่อมต่อกับ 3EEPROM หรือ 25AA- IC ดังที่แสดงในภาพแผนภูมิด้านล่าง โดยปกติแล้ว SPI จะไม่ต้องการตัวต้านทานแบบดึงขึ้น การเชื่อมต่อในเทอร์มินัล Bus Pirate กด 'm' สำหรับเมนูโหมดและเลือก SPI กำหนดค่าไลบรารี SPI สำหรับเอาต์พุตพินปกติ ใช้ค่าเริ่มต้นสำหรับการตั้งค่าโหมด SPI อื่นๆ ทั้งหมด เปิดใช้งานอุปกรณ์จ่ายไฟ ('W' ขนาดใหญ่) ที่ข้อความแจ้งโหมด SPI สุดท้าย รับรายงานแรงดันไฟฟ้าเพื่อให้แน่ใจว่าอุปกรณ์จ่ายไฟทำงาน ('v') เราจะสาธิตวิธีเชื่อมต่อ EEPROM โดยตรงที่ 3.3 โวลต์โดยใช้ไลบรารี SPI ในโหมดพินปกติ ไม่จำเป็นต้องใช้ตัวต้านทานแบบดึงขึ้นสำหรับการสาธิตนี้ หากคุณต้องการเชื่อมต่อ EEPROM ที่ใช้พลังงาน 5 โวลต์ ให้ใช้ไลบรารี SPI ในโหมดพิน open collector (HiZ) และเปิดใช้งานตัวต้านทานแบบดึงขึ้นด้วยพิน Vpullup (Vpu) ที่เชื่อมต่อกับแหล่งจ่ายไฟของ EEPROM ขั้นตอนที่ 1 ปิดการป้องกันการเขียน' SPI>[0b110]CS ENABLED <<<chip select enableWRITE: 0x06 <<<disable write protect commandCS DISABLED <<25AA- มีการป้องกันการเขียนเมื่อเปิดเครื่อง เลือกชิปตัวล่าง (CS) ([) ส่งคำสั่งปิดการป้องกันการเขียน (0x06) แล้วเพิ่ม CS (]) เพื่อเปิดใช้งานการเขียนไปยัง EEPROM คำสั่งปิดใช้งานการป้องกันการเขียนคือ 0b00000110 ในรูปแบบไบนารี แต่เราสามารถย่อให้สั้นลงได้ 0b110 และ Bus Pirate ยังคงเข้าใจ ขั้นตอนที่ 2 เขียนค่า SPI>[0b10 0 3 2 1]CS ENABLED <<<chip select enableWRITE: 0x02 <<<write commandWRITE: 0x00 <<<write start addressWRITE: 0x03 <<<3 ค่าที่จะเขียน (3, 2, 1) เขียน: 0x02WRITE: 0x01CS ปิดการใช้งาน <<ตอนนี้ EEPROM สามารถเขียนได้ ขั้นแรก ลด CS เพื่อเปิดใช้งาน 25AA- ([) ถัดไป ส่งคำสั่งเขียน (0x02) และตำแหน่งที่จะเริ่มต้นเขียน (0) ส่งข้อมูลไปเก็บ (3 2 1) แล้วเพิ่ม CS (]) เพื่อบันทึกค่า หมายเหตุ: เราใช้ EEPROM ขนาด 128 ไบต์ ชิปที่ใหญ่กว่าจะใช้ที่อยู่แบบ 16 บิต (2 ไบต์) คำสั่งนี้จะเป็น [0b10 0 '''0''' 3 2 1] สำหรับ EEPROM ที่ใหญ่กว่า 256bytes ให้สังเกต 0 อันที่สอง ตรวจสอบแผ่นข้อมูลสำหรับ EEPROM ของคุณเพื่อให้แน่ใจ ขั้นตอนที่ 3 อ่านค่าย้อนกลับ SPI>[0b11 0 r:3]CS ENABLED <<<chip select enableWRITE: 0x03 <<<read commandWRITE: 0x00 <<<read start addressBULK READ 0x03 BYTES: <<<read 3 values0x03 0x02 0x01CS พิการ <<สุดท้าย อ่านข้อมูลย้อนกลับเพื่อตรวจสอบว่าการเขียนสำเร็จหรือไม่ เลือก 25AA- ([) ส่งคำสั่งอ่าน (0x03) และที่อยู่เริ่มต้น (0) จากนั้นอ่านค่าสามค่า (r:3) เพิ่ม CS เพื่อทำธุรกรรมให้เสร็จสิ้น (]) ค่าตรงกัน เขียนได้สำเร็จ หมายเหตุ: เราใช้ EEPROM ขนาด 128 ไบต์ ชิปที่ใหญ่กว่าจะใช้ที่อยู่แบบ 16 บิต (2 ไบต์) คำสั่งนี้จะเป็น [0b11 0 '''0''' r:3] สำหรับ EEPROM ที่ใหญ่กว่า 256bytes ให้สังเกต 0 อันที่สอง ตรวจสอบแผ่นข้อมูลสำหรับ EEPROM ของคุณเพื่อให้แน่ใจ

ขั้นตอนที่ 3: 24AA- / 24LC I2C EEPROM

24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM
24AA- / 24LC I2C EEPROM

ชิป: 24AA, I2C EEPROM (1Kbyte) บัส:I2C ต้องใช้ตัวต้านทานแบบดึงขึ้น ข้อกำหนดด้านพลังงาน: 1.8 โวลต์ถึง 5.5 โวลต์ (24AA) 2.5 โวลต์ถึง 5.5 โวลต์ (24LC) ข้อมูลอ้างอิง: แผ่นข้อมูล การสาธิตการแฮ็กวัน บันทึกเซสชัน Bus Pirate ที่สมบูรณ์สำหรับการสาธิตนี้ ฉันไม่สามารถรวมการจัดรูปแบบและตาราง HTML บางส่วนใน Instructable ได้ คุณสามารถดูต้นฉบับได้ที่บล็อก Dangerous Prototypes IC4 คือ I2C EEPROM ของ I2C ซีรีส์ 24AA จาก Microchip EEPROM เหล่านี้มาในรูปแบบ ขนาดตัน ชิ้นส่วน AA ทำงานตั้งแต่ 1.8 โวลต์ถึง 5.5 โวลต์ ในขณะที่ชิ้นส่วน 24LC- มีข้อกำหนดขั้นต่ำ 2.5 โวลต์ ตัวเก็บประจุ 0.1uF (C2) จะแยก IC4 ออกจากแหล่งจ่ายไฟ หมุดป้องกันการเขียน (WP) สามารถควบคุมได้จากไมโครคอนโทรลเลอร์ แต่สำหรับการสาธิตง่ายๆ นี้ เราปิดการใช้งานด้วยการเชื่อมต่อกับกราวด์ หมุดบัส I2C, SDA และ SCL ถูกนำออกมาที่ส่วนหัว JP2 ที่อยู่ของ 24AA EEPROM ส่วนใหญ่คือ 1010AAAS โดยสี่บิตสุดท้ายกำหนดโดยหมุดที่อยู่ (A0, A1, A2) และบิตเลือกโหมดอ่าน/เขียน (NS). บิตที่อยู่ทั้งหมดถูกต่อสายดินในตัวอย่างนี้ ดังนั้นที่อยู่เขียนของ EEPROM คือ 10100000 (แผ่นข้อมูล หน้า 6) ตั้งค่า หากคุณกำลังใช้ Bus Pirate ให้เชื่อมต่อกับ 3EEPROM หรือ 24AA- IC ดังแสดงในภาพแผนภูมิด้านล่าง I2C เป็นบัสแบบสองทิศทางที่ต้องใช้ตัวต้านทานแบบดึงขึ้นบนพินทั้งสอง คุณสามารถใช้ตัวต้านทานแบบดึงขึ้นบนบอร์ดของ Bus Pirate ได้โดยเชื่อมต่อพิน Vpullup (Vpu) กับแหล่งจ่ายไฟ 3.3 โวลต์และเปิดใช้งานในเทอร์มินัล หมายเหตุการเชื่อมต่อ: I2C EEPROM บางตัวอาจไม่ทำงานเหมือนกัน ตัวอย่างเช่น 24AA01 ขนาดเล็กมีระบบการกำหนดที่อยู่และคำสั่งที่แตกต่างไปจากเดิมอย่างสิ้นเชิง อย่าลืมตรวจสอบแผ่นข้อมูลสำหรับชิปของคุณ กด 'm' ในเทอร์มินัล Bus Pirate และเลือก I2C จากเมนูโหมด เปิดใช้งานอุปกรณ์จ่ายไฟ ('W' ขนาดใหญ่) และตัวต้านทานแบบดึงขึ้น ('p' ตัวเลือก 2) ที่พรอมต์ I2C รับรายงานแรงดันไฟฟ้า ('v') เพื่อให้แน่ใจว่าอุปกรณ์จ่ายไฟเปิดอยู่และพิน Vpullup เชื่อมต่อกับแรงดันไฟฟ้า I2C>(0) <<(1) <<< ใช้มาโครค้นหาที่อยู่ค้นหาพื้นที่ที่อยู่ I2C 7 บิต พบอุปกรณ์ที่:0xA0 0xA1 <<เรารู้อยู่แล้วว่าที่อยู่ I2C คือ 10100000 แต่เราสามารถใช้มาโครการค้นหา I2C ของ Bus Pirate (1) เพื่อค้นหา 24AA- มาโครการค้นหาพบอุปกรณ์ที่ที่อยู่การเขียนที่คาดไว้ (0xA0) และการอ่าน (0xA1) ขั้นตอนที่ 1 เขียนบางค่า I2C>[0b10100000 0 0 3 2 1]I2C START CONDITION <<<I2C start conditionWRITE: 0xA0 GOT ACK: YES <<<24AA- write addressWRITE: 0x00 GOT ACK: YES <<<write address byte 1WRITE: 0x00 GOT ACK: ใช่ <<<เขียนไบต์ที่อยู่ 2WRITE: 0x03 GOT ACK: ใช่ <<<3 ค่าที่จะเขียน (3, 2, 1)WRITE: 0x02 GOT ACK: YESWRITE: 0x01 GOT ACK: YESI2C STOP CONDITION < <เริ่มต้นการเขียนด้วยเงื่อนไขการเริ่มต้น I2C ([) ตามด้วยที่อยู่การเขียน 24AA- (0xa0) จากนั้นส่งที่อยู่ 16 บิตไปเขียนที่ (0 0) และข้อมูลที่จะเขียน (3 2 1) สิ้นสุดธุรกรรม I2C ด้วยเงื่อนไขการหยุด (]) ขั้นตอนที่ 2 วางตำแหน่งตัวชี้การอ่าน I2C>[0b10100000 0 0]I2C START CONDITION <<<I2C start conditionWRITE: 0xA0 GOT ACK: YES <<<24AA- write addressWRITE: 0x00 GOT ACK: YES <<<write address byte 1WRITE: 0x00 GOT ACK: ใช่ <<< เขียนที่อยู่ไบต์ 2I2C STOP CONDITION <<การอ่านจาก 24AA- ต้องใช้การดำเนินการสองครั้ง ตำแหน่งหนึ่งวางตัวชี้อ่าน/เขียน อีกตำแหน่งหนึ่งส่งกลับค่า เริ่มต้นด้วยเงื่อนไขการเริ่มต้น I2C ([) และที่อยู่การเขียน (0xa0) ส่งที่อยู่ 16 บิตเพื่ออ่าน (0 0) จากนั้นเงื่อนไขการหยุด (]) เราไม่ได้ส่งข้อมูลใดๆ เพื่อเขียนในครั้งนี้ เราเพิ่งวางตำแหน่งตัวชี้อ่าน/เขียนกลับไปที่จุดเริ่มต้นของข้อมูลที่เราเขียนในขั้นตอนที่ 1 ขั้นตอนที่ 3 อ่านค่าบางค่า I2C>[0b10100001 r:3]I2C START CONDITION <<<เงื่อนไขการเริ่มต้น I2C เขียน: 0xA1 GOT ACK: ใช่ <<<24AA- อ่านที่อยู่ BULK READ 0x03 BYTES: <<< อ่าน 3 ค่า0x03 0x02 0x01I2C เงื่อนไขการหยุด <<ขั้นตอนที่ 2 ตั้งค่าตัวชี้อ่าน/เขียนเป็นจุดเริ่มต้นของข้อมูลที่เราต้องการอ่าน ตอนนี้ เราสามารถอ่านข้อมูลโดยใช้ที่อยู่สำหรับอ่าน 24AA- เริ่มต้นด้วยเงื่อนไขการเริ่มต้น I2C ([) และที่อยู่สำหรับอ่าน 24AA- (0xa1) อ่านค่าสามค่าที่เราเขียนไว้ในขั้นตอนที่ 1 (r:3) และลงท้ายด้วยเงื่อนไขการหยุด (]) หากค่าตรงกัน แสดงว่าการเขียนของคุณสำเร็จ

ขั้นตอนที่ 4: DS2431 1-Wire EEPROM

DS2431 1-Wire EEPROM
DS2431 1-Wire EEPROM
DS2431 1-Wire EEPROM
DS2431 1-Wire EEPROM
DS2431 1-Wire EEPROM
DS2431 1-Wire EEPROM

ชิป: DS2431, EEPROM 1 สาย (1Kbyte) Bus: 1-Wire, <2.2Kohm ต้องมีตัวต้านทานแบบดึงขึ้น ข้อกำหนดด้านพลังงาน: 2.8volts ถึง 5.25volts. References: แผ่นข้อมูล, การสาธิต Hack a Day บันทึกเซสชัน Bus Pirate ที่สมบูรณ์ สำหรับการสาธิตนี้ ฉันไม่สามารถรวมการจัดรูปแบบและตาราง HTML ใน Instructable ได้ คุณสามารถดูต้นฉบับได้ที่บล็อก Dangerous Prototypes DS2431 ดึงพลังงานจากตัวต้านทานแบบดึงขึ้นและไม่ต้องการแหล่งจ่ายภายนอกหรือตัวเก็บประจุแบบแยกส่วน. 1-Wire ต้องการตัวต้านทานแบบดึงขึ้นที่แข็งแกร่ง สูงสุด 2.2Kohms ตัวต้านทานแบบดึงขึ้นบนบอร์ดของ Bus Pirate อยู่ที่ 10K ซึ่งอ่อนเกินไปที่จะจ่ายไฟให้กับ DS2431 อย่างเหมาะสมระหว่างการเขียน คุณต้องใช้ตัวต้านทานภายนอก 2.2Kohm หรือเล็กกว่าระหว่างกำลังไฟฟ้ากับพินบัส 1-Wire หากคุณมีปัญหาในการเขียนข้อมูล ตรวจสอบให้แน่ใจว่าตัวต้านทานแบบดึงขึ้นของคุณมีขนาดใหญ่เพียงพอ บอร์ดสำรวจ 3EEPROM มีตัวต้านทานดึงขึ้น 1800 โอห์ม (R1) บนบัส 1-Wire ดังนั้นจึงไม่จำเป็นต้องใช้ตัวต้านทานภายนอก ตั้งค่า หากคุณกำลังใช้ Bus Pirate ให้เชื่อมต่อกับบอร์ด 3EEPROM หรือ DS2431 ตามที่แสดงในแผนภูมิด้านล่าง DS2431 ไม่ต้องใช้พินของพาวเวอร์ซัพพลาย แต่ใช้กับบอร์ด 3EEPROM เพื่อจ่ายไฟให้กับตัวต้านทานแบบดึงขึ้นขนาดใหญ่สำหรับบัส 1-Wire การเชื่อมต่อ กด 'm' ในเทอร์มินัล Bus Pirate และเลือกโหมด 1-Wire เปิดใช้งานแหล่งจ่ายไฟออนบอร์ด ('W' ขนาดใหญ่) และตรวจสอบแรงดันไฟฟ้า (v) ขั้นตอนที่ 1 ค้นหาที่อยู่อุปกรณ์ 1-WIRE>(0xf0) <<<มาโครค้นหา 1-Wire 1WIRE ROM COMMAND: SEARCH (0xF0) พบอุปกรณ์ที่: Macro 1WIRE address1.0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B <<<DS2431 ID เฉพาะ * DS2431 1K EEPROM <<อุปกรณ์ 1-Wire แต่ละเครื่องมี ID 8 ไบต์ที่ไม่ซ้ำกัน 1-Wire มีขั้นตอนการค้นหาที่ตรวจจับ ID ของอุปกรณ์ที่เชื่อมต่อทั้งหมด Bus Pirate ใช้การค้นหาแบบ 1-Wire เป็นมาโคร (240) พิมพ์ '(240)' ในเทอร์มินัล Bus Pirate เพื่อเริ่มการค้นหา 1-Wire ที่อยู่อุปกรณ์แต่ละอันถูกพิมพ์ ระบุอุปกรณ์ที่รู้จัก ที่อยู่อุปกรณ์ 1-Wire สิบรายการแรกจะถูกจัดเก็บเป็นมาโคร ในตัวอย่างนี้ ที่อยู่ DS2431 ของเราสามารถใช้ได้โดยการพิมพ์ '(1)' ในเทอร์มินัล ขั้นตอนที่ 2 เขียน 8 ไบต์ไปยังแผ่นรอยขีดข่วน 1-WIRE>(0x55) (1) 0x0f 0 0 8 7 6 5 4 3 2 11WIRE BUS RESET ตกลง <<< ยัง { คำสั่ง 1WIRE WRITE ROM คำสั่ง: MATCH (0x55) * ตามด้วยที่อยู่ 64 บิต1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2B ' WRITE: 0x0F <<<DS2431 เขียนคำสั่ง scratch pad เขียน: 0x00 <<<DS2431 เขียนที่อยู่ไบต์ 1 เขียน: 0x00 <<<DS2431 เขียนที่อยู่ไบต์ 2WRITE: 0x08 <<ต่อไป เราจะเขียน 8 ไบต์ไปยังตำแหน่งชั่วคราวใน DS2431 ที่เรียกว่า scratch pad เริ่มการทำธุรกรรมด้วยคำสั่ง 1-Wire bus reset และ MATCH (0x55) ทั้งสองมีให้ใช้งานในรูปแบบมาโคร '(0x55)' นอกจากนี้ยังสามารถทำได้โดยไม่ต้องใช้มาโครโดยพิมพ์ '{ 0x55', { ส่งการรีเซ็ต 1-Wire, 0x55 คือคำสั่ง 1-Wire MATCH หลังจากคำสั่ง MATCH ให้ส่ง ID 8 ไบต์ของอุปกรณ์ไปยังที่อยู่ เราใช้มาโคร (1) ซึ่งเติมด้วย DS2431 ID ในขั้นตอนที่ 1 คุณยังสามารถป้อน ID 8 ไบต์ด้วยตนเองได้อีกด้วย ณ จุดนี้ DS2431 ควรได้รับที่อยู่แล้วและพร้อมสำหรับ commands.0x0f คือคำสั่งเขียนแผ่นขีด ซึ่งจะบอกให้ DS2431 คาดหวังข้อมูล สองไบต์ถัดไปจะบอกว่าจะวางข้อมูลไว้ที่ใด เราจะบันทึกไว้ที่จุดเริ่มต้น (0 0) สุดท้าย เราจะส่งค่า 8 ไบต์ไปเก็บ ตัวเลข 8 ถึง 1 คุณต้องเขียน 8 ไบต์เต็มไปยัง DS2431 นอกจากนี้ ที่อยู่สำหรับเขียนต้องอยู่บนขอบเขต 8 ไบต์ ดูแผ่นข้อมูลสำหรับภาพรวมที่สมบูรณ์ของข้อจำกัดในการเขียน ขั้นตอนที่ 3 ตรวจสอบแผ่นรอยขีดข่วนและรับรหัสอนุญาต 1-WIRE>(0x55)(1) 0xaa r:3 r:8 r:2 r:21WIRE BUS RESET ตกลง <<< ระบุคำสั่งอุปกรณ์1WIRE WRITE ROM: MATCH (0x55) *ตามด้วยที่อยู่ 64 บิต1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0xAA <<<อ่านคำสั่ง scratch pad BULK READ 0x03 BYTES: <<<รหัสการอนุญาต0x00 0x00 0x07BULK READ 0x08 BYTES ที่เราส่ง: 0x07 0x06 0x05 0x04 0x03 0x02 0x01BULK อ่าน 0x02 ไบต์: <<<CRC สำหรับ data0xC8 0x86BULK อ่าน 0x02 ไบต์: <<ตรวจสอบว่าได้รับข้อมูลอย่างถูกต้อง และรับรหัสการให้สิทธิ์ในการเขียน เริ่มต้นอีกครั้งด้วยมาโครการรีเซ็ตแบบ 1 สายและ MATCH (0x55) และมาโครที่อยู่อุปกรณ์ (1) คราวนี้ส่งคำสั่ง DS2431 read scratch pad (0xAA) แล้วอ่านทั้งหมด 15 ไบต์ 3 ไบต์แรกที่อ่าน (r:3) คือรหัสการให้สิทธิ์ในการเขียน เราต้องการมันในขั้นตอนต่อไปเพื่อคัดลอก แผ่นรอยขีดข่วนไปยัง EEPROM 8 ไบต์ถัดไป (r:8) ควรตรงกับข้อมูลที่เราส่งในขั้นตอนที่ 2 2 ไบต์สุดท้าย (r:2) คือ CRC16 สำหรับข้อมูล อ่านหลังจาก CRC ส่งคืน 1s ทั้งหมด ขั้นตอนที่ 4 เขียน scratch pad ไปที่ EEPROM 1-WIRE>(0x55)(1) 0x55 0x00 0x00 0x071WIRE BUS RESET OK <<<ระบุที่อยู่อุปกรณ์1WIRE WRITE ROM COMMAND: MATCH (0x55) *ตามด้วยที่อยู่ 64 บิต1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0x55 <<< คัดลอกคำสั่งแผ่นรอยขีดข่วนWRITE: 0x00 <<< รหัสการให้สิทธิ์ 3 ไบต์จากขั้นตอนที่ 3WRITE: 0x00WRITE: 0x071-WIRE>เรามีทุกอย่างที่จำเป็นในการจัดเก็บข้อมูลแผ่นรอยขีดข่วนอย่างถาวรใน EEPROM ระบุที่อยู่อุปกรณ์ จากนั้นส่งคำสั่ง DS2431 copy scratch pad (0x55) ตามด้วยรหัสอนุญาตสามไบต์ที่เราดึงมาในขั้นตอนที่ 3 (0x00 0x00 0x07) หากรหัสการให้สิทธิ์ถูกต้อง ข้อมูลจะถูกย้ายไปยัง EEPROM ขั้นตอนที่ 5 ตรวจสอบ scratch pad เขียน 1-WIRE>(0x55)(1) 0xaa r:31WIRE BUS RESET OK <<<ระบุที่อยู่อุปกรณ์1WIRE WRITE ROM COMMAND: MATCH (0x55) *ตามด้วย 64bit address1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0xAA <<< อ่านคำสั่ง scratch pad BULK READ 0x03 BYTES:0x00 0x00 0x87 <<DS2431 ตั้งค่าบิตบนสุดของรหัสอนุญาตการเขียนหลังจากคำสั่งคัดลอกแผ่นเริ่มต้นสำเร็จ ส่งคำสั่ง read scratch pad อื่น (0xAA) เพื่อรับรหัสการอนุญาตที่อัปเดต แต่เพียงแค่อ่านสามไบต์แรก (r:3) ค่าก่อนหน้า 0x07 เปลี่ยนเป็น 0x87 ได้รับคำสั่งคัดลอกสำเร็จแล้วขั้นตอนที่ 6 อ่านค่าย้อนหลัง 1-WIRE>(0x55)(1) 0xf0 0x00 0x00 r:8 r:81WIRE BUS RESET OK <<<ระบุที่อยู่อุปกรณ์1WIRE WRITE ROM COMMAND: MATCH (0x55) *ตามด้วยที่อยู่ 64 บิต1WIRE ADDRESS MACRO 1: 0x2D 0x54 0xD2 0xEF 0x00 0x00 0x00 0x2BWRITE: 0xF0 <<< DS2431 read commandWRITE: 0x00 <<<ที่อยู่อ่าน 2 ไบต์เขียน: 0x00BULK READ 0x08 READ BYTES: <<< อ่าน 8 ไบต์ที่เราเขียน 0x08 0x07 0x06 0x03 0x 0x04 0x08 ไบต์: <<ตรวจสอบว่าการเขียนทำงานอย่างถูกต้องโดยการดึงค่า ระบุที่อยู่ DS2431 จากนั้นส่งคำสั่งอ่าน (0xf0) และที่อยู่ที่จะอ่านจาก (0x00 0x00) เป็นไปได้ที่จะอ่านช่วงหน่วยความจำทั้งหมดด้วยคำสั่งเดียว เราอ่านแปดไบต์ที่เราเขียนไว้ก่อนหน้านี้ (r:8) ซึ่งคืนค่าที่คาดไว้ แปดไบต์ที่เกินค่าเหล่านี้ยังไม่ได้เขียนและส่งกลับ 0

ขั้นตอนที่ 5: บทสรุป

บทสรุป
บทสรุป

บทสรุป ต้นแบบนี้สอนเกี่ยวกับหน่วยความจำ EEPROM และสาธิตวิธีใช้ Bus Pirate กับโปรโตคอลทั่วไปสามแบบ: 1-Wire, I2C และ SPI บอร์ดสำรวจ 3EEPROM ช่วยให้มั่นใจถึงการเชื่อมต่อที่เหมาะสมกับ EEPROM แต่ละตัว และให้ตัวต้านทานแบบดึงขึ้นภายนอกสำหรับ บัส 1-Wire ที่มีความต้องการมากขึ้นพร้อมส่วนประกอบที่ขับเคลื่อนด้วยปรสิต เราสามารถมี 3EEPROM explorer board PCBs หรือชุดอุปกรณ์ที่ผลิตขึ้นที่ Seeed Studio PCBs อยู่ที่ประมาณ $10 ชุดคิทประมาณ $15 จัดส่งทั่วโลก เราจำเป็นต้องจัดซื้อกลุ่ม 10 PCB หรือ 20 ชุดเพื่อเริ่มต้น

แนะนำ: