ชิ้นส่วน: เซ็นเซอร์อุณหภูมิ 1 สาย (DS1822)

ดาวน์โหลด: buspirate.v0d.zip

โปรโตคอล 1-Wire ของ Dallas / Maxim เป็นส่วนเสริมมากที่สุดกับโจรสลัดรถบัส เรามีชิ้นส่วน 1 สายและวันนี้เราจะแสดงให้เห็นถึงเครื่องวัดอุณหภูมิดิจิตอล DS1822 1 สาย คว้าแผ่นข้อมูล (PDF) และปฏิบัติตามด้วย

สิ่งพิมพ์นี้หายไปพร้อมกับการเปิดตัว V.0D ของเฟิร์มแวร์โจรสลัดของรถบัสสำหรับฮาร์ดแวร์เวอร์ชัน 0 ซึ่งรวมถึงห้องสมุดโปรโตคอล 1 สายใหม่ตัวเลือกการกำหนดค่าเพิ่มเติมและการปรับปรุงอื่น ๆ

เครื่องวัดอุณหภูมิดิจิตอล DS1822 ภาวะเศรษฐกิจเครื่องวัดอุณหภูมิดิจิตอล (Digikey # DS1822 + -nd, $ 3.87) เราค้นพบรอยเท้าในห้องสมุด 1 สายสำหรับ Eagle บนหน้าดาวน์โหลด Cadsoft

โปรโตคอล 1 สายใช้สายเคเบิลเดียวสำหรับการถ่ายโอนข้อมูลและบางครั้งพลัง ข้อมูลถูกถ่ายโอนใน ‘สล็อต’ ที่ละเอียดอ่อนเนื่องจากไม่มีนาฬิกาแยกต่างหากในการแยกระยะเวลาบิต

โจรสลัดรถบัส

DS1822

SDA

DQ

+ 5volts
vdd

พื้น

gnd

การเชื่อมต่อ DS1822 จะแสดงในตาราง เราใช้อุปทาน 5volt ของรถบัสโจรสลัดเพื่อเพิ่มพลัง DS1822 อย่างไรก็ตามมันยังทำงานได้ที่ 3.3volts ตัวต้านทาน (R1, ~ 5k) ถือรถบัสสูง

คำสั่ง 1-wire ทั้งหมดเริ่มต้นด้วยขั้นตอนการรีเซ็ตเป็นไปตามคำสั่งหนึ่งในห้า ROM

สั่งการ
คำอธิบาย

0x33
อ่านรอม ตรวจสอบที่อยู่แกดเจ็ตเดี่ยว

0x55
จับคู่ ROM จับคู่ที่อยู่ Gadget ปฏิบัติตามที่อยู่ 64 บิต

0xcc
ข้ามรอม จัดการกับแกดเจ็ตทั้งหมดด้วยกัน

0xec
ค้นหาการเตือนภัย เรียกดูสภาพการเตือนภัย

0xf0
ค้นหา ROM ส่วนหนึ่งของขั้นตอนการแจงนับที่อยู่

คำสั่ง ROM อธิบายไว้ในหน้า 10 ของแผ่นข้อมูล คำสั่งทั้งหมด ROM นำเสนอเป็นมาโครในห้องสมุด Bus Pirate 1-Wire ดู (0) สำหรับเมนู มาโครคำสั่ง ROM รวมถึงขั้นตอนการรีเซ็ตบัสแบบ 1 สาย

อุปกรณ์เดียว

แกดเจ็ต 1 สายทั้งหมดมีที่อยู่ 64 บิต (8 ไบต์) ที่ไม่ซ้ำกันและอุปกรณ์ 1 สายบางสายถูกนำไปใช้เพียงเพื่อให้หมายเลขอิเล็กทรอนิกส์เป็นหมายเลขติดตามที่ไม่เหมือนใคร เมื่อแกดเจ็ตเดียวเชื่อมโยงกับรถบัส 1 สายคำสั่ง checked Out ROM จะแตกที่อยู่

1-wire> {0x33 r: 8 <-command XXX 1wire รถบัสรีเซ็ตตกลง XXX 1wire เขียน: 0x33 <-Read ROM XXX 1 รับอ่านจำนวนมาก 0x08 ไบต์: 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 <-id # 1-wire>

คำสั่งส่งรีเซ็ตบัส ({), คำสั่ง rom ที่ตรวจสอบแล้ว (0x33) และอ่านที่อยู่ 64bit (r: 8, 8 ไบต์ * 8bits / byte = 64bits)

ไบต์แรก (0x22) เป็นตัวกำหนดให้เป็นเทอร์โมมิเตอร์ DS1822 6 ไบต์ถัดไปนั้นไม่ซ้ำกับอุปกรณ์นี้และไบต์สุดท้ายเป็น CRC ของ 7 ไบต์ก่อนหน้า

ตอนนี้เราสามารถจัดการกับแกดเจ็ตด้วยคำสั่งการจับคู่ ROM และส่งคำแนะนำเพิ่มเติม

1-wire> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0x44
XXX 1wire รถบัสรีเซ็ตตกลง
XXX 1Wire เขียน: 0x55 <-Match ROM คำสั่ง XXX 1wire เขียน: 0x22 <-Start ที่อยู่ XXX 1wire เขียน: 0x47 xxx 1wire เขียน: 0x45 xxx 1wire เขียน: 0x22 xxx 1wire เขียน: 0x00 xxx 1wire เขียน: 0x00 xxx 1wire เขียน: 0x00 XXX 1wire เขียน: 0x29 XXX 1wire เขียน: 0x44 <การแปลงการเริ่มต้น 1-wire>

ก่อนอื่นเราส่งคำสั่งการจับคู่ ROM (0x55) และที่อยู่ Gadget (8 ไบต์) ถัดไปคือคำสั่งแปลง T (0x44, แผ่นข้อมูลหน้า 11) ที่เริ่มการแปลงอุณหภูมิ

ลำดับคำสั่งที่สองดึงการอ่านอุณหภูมิจาก DS1822

1-wire> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0xbe r: 9
XXX 1wire รถบัสรีเซ็ตตกลง
xxx 1wire เขียน: 0x55
xxx 1wire เขียน: 0x22
… ที่อยู่สายยาว 1 สาย …
XXX 1wire เขียน: 0x29
XXX 1Wire เขียน: 0xbe <-Read Scratchpad คำสั่ง XXX 1wire อ่านเป็นกลุ่ม 0x09 ไบต์: 0x71 0x01 0xff 0x00 0x7f 0xff 0x0f 0x10 0xf8 1-wire>

คำสั่ง scratchpad ที่ตรวจสอบแล้ว (0xbe, แผ่นข้อมูล, หน้า 11) ส่งคืน 9 ไบต์ เราใส่ใจเกี่ยวกับสองไบต์แรกเท่านั้นส่วนที่เหลือสามารถถอดรหัสได้ตามตารางในหน้า 7 ของแผ่นข้อมูล อุณหภูมิถูกคำนวณตามหน้า 4 ของแผ่นข้อมูล: 0x0171 hex = 369 ธ.ค. , 369 * 0.0625 = 23c (74F)

อุปกรณ์หลายเครื่อง

เมื่อแกดเจ็ต 1 สายหลายตัวแชร์รถบัสมันยากกว่าที่จะกำหนดที่อยู่ทั้งหมด วิธีการที่เร็วที่สุดในการค้นหาแกดเจ็ตที่เชื่อมต่ออยู่กับคำสั่งเรียกดู ROM (0xF0) และขั้นตอนการแตกกิ่งไบนารี รถบัสโจรสลัดอัตโนมัติด้วยมาโคร (240)

1-wire> (240) <-Macro 240 คำสั่ง xxx 1wire rom: เรียกดู (0xf0) พบแกดเจ็ตที่: ที่อยู่ Macro 1-Wire 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a <-Address * DS1822 Econ ขุดความร้อน <-type ตามรหัสครัวเรือน 2.0 × 22 0xD0 0xc7 0x1a 0x00 0x00 0x00 0x01 * DS1822 Econ Dig Therm 3.0 × 22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 * DS1822 Econ Dig Therm พบอุปกรณ์ 0x03 ids 10 Gadget แรกที่นำเสนอโดยมาโครดู (0) 1-wire>

คำสั่งเรียกดู ROM แสดงแกดเจ็ตที่พบและประเภทตามรหัสครัวเรือน

เราเชื่อว่าการพิมพ์ที่อยู่ 1-Wire 8 ไบต์นั้นน่าเบื่ออย่างแท้จริงดังนั้นที่อยู่ 10 Gadget แรกจะถูกเก็บไว้ในหน่วยความจำและสามารถเข้าถึงได้ด้วยมาโคร (1) … (10) บัฟเฟอร์สำหรับที่อยู่ 50 Gadget สามารถกำหนดได้ในห้องสมุด 1 สายในเวลาคอมไพล์ เป็นการดีที่ข้อมูลนี้จะถูกเก็บไว้ในบัฟเฟอร์ Scratch ทั่วโลกที่ใช้ร่วมกันโดยโมดูลทั้งหมดในการอัพเดตเฟิร์มแวร์ในอนาคต

1-wire> (0) <-show รายการมาโคร 0.Macro เมนู มาโครo 1-wire ที่อยู่ <-Enumerated Gadget ที่อยู่ 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a * DS1822 Econ Dig Therm 2.0 × 22 0xD0 0xc7 0x1a 0x00 0x00 0x00 0x01 * DS1822 Econ Dig Therm 3.0 × 22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 * DS1822 Econ Dig Therm แมโครคำสั่ง 1-Wire ROM: <- คำสั่งปกติ 51. อ่าน ROM (0x33) * สำหรับรถบัสแกดเจ็ตเดียว 85.Match ROM (0x55) * ตามด้วยที่อยู่ 64 บิต 204.skip rom (0xcc) * ตามด้วยคำสั่ง 236. หมวดหมู่ (0xec) 240. ค้นหารอม (0xf0) 1-wire>

เมนูมาโคร (0) จะรวมถึงที่อยู่ Gadget ที่เก็บไว้ในบัญชีรายชื่อ ตอนนี้เราสามารถจัดการกับแกดเจ็ตได้จากแมโครแทนที่จะพิมพ์ที่อยู่ทั้ง 64 บิตทั้งหมดทุกครั้ง

1-wire> (85) (1) 0x44 <-Start Conversion XXX 1wire รถบัสรีเซ็ตตกลง xxx 1wire compose command: จับคู่ (0x55) * ติดตามกับที่อยู่ 64 บิต XXX 1wire ที่อยู่ macro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a XXX 1wire เขียน: 0x44 1-wire> (85) (1) 0xbe r: 9 <-fetch reading XXX 1wire รถบัสรีเซ็ตตกลง xxx 1wire compose command: จับคู่ (0x55) * ติดตามกับที่อยู่ 64 บิต XXX 1wire ที่อยู่ macro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a xxx 1wire เขียน: 0xbe XXX 1wire อ่านเป็นกลุ่ม 0x09 ไบต์: 0x81 0x01 0x4b 0x46 0x7f 0xff 0x0f 0x10 0x71 1-wire>

(85) เป็นทางลัดสำหรับการรีเซ็ตบัสและคำสั่งการจับคู่ ROM (1) เป็นแมโครที่อยู่แกดเจ็ตและ 0x44 เป็นคำสั่งเพื่อเริ่มการแปลงอุณหภูมิ การเรียกคืนการอ่านรวมถึงแมโครเดียวกันที่แน่นอนอย่างไรก็ตามแทนที่คำสั่งเพื่อตรวจสอบแกดเจ็ต (0xbe) และคว้า 9 ไบต์ (R: 9) อุณหภูมิคือ 0x0181 หรือ 24C ถัดจากพัดลมพีซี

รับมันต่อไป

เราใช้รถบัสโจรสลัดเพื่อให้การนำเสนอภาพของโปรโตคอล 1 สายอย่างไรก็ตามความยากลำบากของแท้กำลังรวมเข้ากับการออกแบบของคุณเอง Maxim ให้รหัสตัวอย่าง Microchip มีแอปบันทึก (PDF) และคุณสามารถตรวจสอบรหัสตัวอย่างที่เราใช้

ดาวน์โหลดเฟิร์มแวร์: buspirate.vod.zip

Author: found

Leave a Reply

Your email address will not be published. Required fields are marked *