Unduh: Buspirate.v0d.zip
Protokol 1-Wire Dallas / Maxim adalah tambahan yang paling banyak diminta untuk bajak laut bus. Kami terakhir kali mendapat beberapa bagian 1-kawat, dan hari ini kami akan menunjukkan termometer digital 1-kawat DS1822. Raih datasheet (PDF) dan patuhi bersama.
Publikasikan ini hilang bersama dengan rilis v.0d firmware bajak laut bus untuk versi perangkat keras 0. Ini termasuk pustaka protokol 1-wire baru, lebih banyak opsi konfigurasi, dan peningkatan lainnya.
DS1822 Iklim Ekonomi Termometer Digital (Digikey # DS1822 + -ND, $ 3,87) Kami menemukan jejak di perpustakaan 1-kawat untuk Eagle di halaman unduhan CADSOFT.
Protokol 1-wire menggunakan satu kabel untuk transfer data, dan terkadang daya. Data ditransfer dalam ‘slot’ sensitif waktu karena tidak ada jam terpisah untuk menggambarkan titik bit.
Bajak laut bus.
Ds1822.
SDA.
Dq.
+ 5volts.
Vdd.
Tanah
Gnd.
Koneksi DS1822 ditunjukkan dalam tabel. Kami memanfaatkan pasokan 5volt bus bajak laut untuk memberi daya pada DS1822, namun juga berfungsi pada 3.3Volts. Resistor (R1, ~ 5K) memegang bus tinggi.
Semua perintah 1-kawat dimulai dengan prosedur reset, dipenuhi oleh salah satu dari lima perintah ROM.
Memerintah
Keterangan
0x33.
Baca rom. Memeriksa alamat gadget tunggal.
0x55.
Cocok dengan rom. Cocokkan alamat gadget, dipenuhi dengan alamat 64bit.
0xcc.
Lewati rom. Alamat semua gadget bersama.
0xec.
Pencarian alarm. Jelajahi kondisi alarm.
0xf0.
Cari ROM. bagian dari prosedur enumerasi alamat.
Perintah ROM dijelaskan pada halaman 10 dari lembar data. Semua perintah ROM ditawarkan sebagai makro di pirat bus bajak laut 1-kawat, lihat (0) untuk menu. Command Macro ROM meliputi prosedur reset bus 1-kawat.
Perangkat tunggal
Semua gadget 1-kawat memiliki alamat 64bit (8 byte) yang unik, dan beberapa gadget 1-kawat digunakan semata-mata untuk menyediakan elektronik nomor pelacakan yang unik. Ketika satu gadget terhubung ke bus 1-wire, perintah ROM yang diperiksa akan mengekstrak alamatnya.
1-kawat> {0x33 R: 8 <-Command XXX 1Wire Bus Reset OK XXX 1WIRE Tulis: 0x33 <-ROAD ROM XXX 1Wire Massal Baca, 0x08 byte: 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 <-id # 1-kawat>
Perintah tersebut mengirim reset bus ({), perintah ROM yang diperiksa (0x33), dan membaca alamat 64bit (R: 8, 8 byte * 8bits / byte = 64bits).
Byte pertama (0x22) menentukan ini sebagai termometer DS1822. 6 byte berikutnya adalah unik untuk perangkat ini, dan byte terakhir adalah CRC dari 7 byte sebelumnya.
Sekarang kita dapat mengatasi gadget dengan perintah pertandingan ROM dan mengirimkannya instruksi lebih lanjut.
1-kawat> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0x44
XXX 1Wire Bus Reset OK
XXX 1WIRE Tulis: 0x55 <-Match Command ROM
XXX 1WIRE Tulis: 0x22 <-MSTART ALAMAT
XXX 1WIRE Tulis: 0x47
XXX 1WIRE Tulis: 0x45
XXX 1WIRE Tulis: 0x22
XXX 1WIRE Tulis: 0x00
XXX 1WIRE Tulis: 0x00
XXX 1WIRE Tulis: 0x00
XXX 1WIRE Tulis: 0x29
XXX 1WIRE Tulis: 0x44 <-Start Conversion
1-kawat>
Pertama, kami mengirim perintah pertandingan ROM (0x55) dan alamat gadget (8 byte). Berikutnya adalah perintah T Convert T (0x44, Datasheet Page 11) yang memulai konversi suhu.
Urutan perintah kedua mengambil bacaan suhu dari DS1822.
1-kawat> {0x55 0x22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 0xbe R: 9
XXX 1Wire Bus Reset OK
XXX 1WIRE Tulis: 0x55
XXX 1WIRE Tulis: 0x22
… Alamat 1-kawat panjang …
XXX 1WIRE Tulis: 0x29
XXX 1WIRE Tulis: 0xbe <-Read perintah ScratchPad
XXX 1Wire Massal Baca, 0x09 Bytes:
0x71 0x01 0xff 0x00 0x7F 0xff 0x0f 0x10 0xf8
1-kawat>
Perintah ScratchPad yang diperiksa (0xBE, DataHeet Page 11) Mengembalikan 9 byte. Kami hanya peduli dengan dua byte pertama, sisanya dapat diterjemahkan sesuai dengan tabel pada halaman 7 dari lembar data. Suhu dihitung sesuai dengan halaman 4 dari lembar data: 0x0171 hex = 369 Des, 369 * 0,0625 = 23c (74F).
Beberapa perangkat
Ketika beberapa gadget 1-kawat berbagi bus, lebih sulit untuk menentukan semua alamat. Metode tercepat untuk menemukan gadget yang terhubung adalah dengan perintah Browse ROM (0xF0) dan prosedur bercabang biner. Bus bajak laut mengotomatiskan ini dengan makro (240).
1-kawat> (240) <-macro 240 Perintah XXX 1Wire ROM: Browse (0xF0) Menemukan gadget di: Alamat Makro 1-Kawat 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a <-Address * DS1822 ECON menggali therm <-type menurut kode rumah tangga 2.0 × 22 0xd0 0xc7 0x1A 0x00 0x00 0x00 0x01 * DS1822 ECON menggali therm 3.0 × 22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 * DS1822 ECON menggali Therm Menemukan perangkat 0x03. 10 ID Gadget pertama ditawarkan oleh makro, lihat (0). 1-kawat>
Perintah ARMSE ROM menunjukkan gadget yang ditemukan, dan jenisnya sesuai dengan kode rumah tangga.
Kami percaya mengetik alamat 8 byte 1-wire benar-benar membosankan, jadi 10 alamat gadget pertama disimpan dalam memori dan dapat diakses dengan makro (1) (10). Buffer sebanyak 50 alamat gadget dapat didefinisikan di perpustakaan 1-kawat pada waktu kompilasi. Idealnya, data ini akan disimpan dalam buffer awal di seluruh dunia yang dibagikan oleh semua modul dalam pembaruan firmware di masa depan.
1-wire> (0) <-Show Makro Daftar 0.Macro Menu. MACR.o Alamat 1-kawat <-enumerasi alamat gadget 1.0 × 22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a * DS1822 ECON menggali Therm 2.0 × 22 0xd0 0xc7 0x1A 0x00 0x00 0x00 0x01 * DS1822 ECON menggali Therm 3.0 × 22 0x47 0x45 0x22 0x00 0x00 0x00 0x29 * DS1822 ECON menggali Therm 1-Wire ROM Command Macro: <- Perintah Normal 51.read rom (0x33) * untuk bus gadget tunggal 85.match ROM (0x55) * Diikuti oleh alamat 64bit 204.skip rom (0xcc) * diikuti oleh perintah 236.Alarm Browse (0xec) 240.Search ROM (0xF0) 1-kawat>
Menu makro (0) juga akan mencakup alamat gadget yang disimpan di daftar. Sekarang kita bisa menangani gadget dengan makro, daripada mengetik seluruh alamat 64bit setiap saat.
1-Wire> (85) (1) 0x44 <-Start Conversion XXX 1Wire Bus Reset OK XXX 1Wire Compose ROM perintah: cocok (0x55) * ikuti dengan alamat 64bit XXX 1Wire Alamat Makro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a XXX 1WIRE Tulis: 0x44 1-Wire> (85) (1) 0xbe R: 9 <-ggunakan membaca XXX 1Wire Bus Reset OK XXX 1Wire Compose ROM perintah: cocok (0x55) * ikuti dengan alamat 64bit XXX 1Wire Alamat Makro 1: 0x22 0x50 0x28 0x22 0x00 0x00 0x00 0x0a XXX 1WIRE Tulis: 0xbe XXX 1Wire Massal Baca, 0x09 Bytes: 0x81 0x01 0x4b 0x46 0x7f 0xff 0x0f 0x10 0x71 1-kawat>
(85) adalah pintasan untuk reset bus dan cocok dengan perintah ROM. (1) Apakah Alamat Gadget Makro, dan 0x44 adalah perintah untuk memulai konversi suhu. Mengambil bacaan termasuk makro yang sama persis, namun menggantikan perintah untuk memeriksa gadget (0xBE) dan merebut 9 byte (R: 9). Suhu adalah 0x0181, atau 24C di sebelah kipas PC.
Membawanya lebih jauh
Kami memanfaatkan bajak laut bus untuk memberikan presentasi visual dari protokol 1-kawat, namun kesulitan sejati mengintegrasikannya ke dalam desain Anda sendiri. Maxim memberikan contoh kode, Microchip memiliki catatan aplikasi (PDF), dan Anda dapat memeriksa contoh kode yang kami gunakan.
Unduh firmware: buspirate.vod.zip