onewire — protocolul de magistrală 1-Wire

Modulul onewire implementează protocolul master al magistralei 1-Wire utilizat de dispozitive precum senzorul de temperatură DS18x20. Acesta folosește un singur machine.Pin configurat ca open-drain pentru a comunica cu unul sau mai multe dispozitive slave de pe magistrala partajată.

Exemplu:

from machine import Pin
from onewire import OneWire

ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
    print(rom)

Clase

class onewire.OneWire(pin: machine.Pin)

Construiește un master de magistrală 1-Wire pe machine.Pin dat. Pinul este configurat automat ca open-drain cu pull-up.

Constante pentru comenzi ROM:

SEARCH_ROM: int

Comanda Search ROM (0xF0). Utilizată intern de scan() pentru a descoperi dispozitivele de pe magistrală.

MATCH_ROM: int

Comanda Match ROM (0x55). Utilizată intern de select_rom() pentru a adresa un dispozitiv specific prin codul său ROM pe 64 de biți.

SKIP_ROM: int

Comanda Skip ROM (0xCC). Adresează simultan toate dispozitivele de pe magistrală, omițând potrivirea ROM.

Resetarea magistralei:

reset(required: bool = False) bool

Emite un impuls de resetare pe magistrală. Returnează True dacă cel puțin un dispozitiv slave a răspuns cu un impuls de prezență, în caz contrar False. Dacă required este True și niciun dispozitiv nu răspunde, generează OneWireError.

I/O pe biți/octeți:

readbit() int

Citește un singur bit de pe magistrală și îl returnează ca 0 sau 1.

readbyte() int

Citește un singur octet de pe magistrală și îl returnează ca număr întreg (0–255).

readinto(buf: bytearray) None

Citește len(buf) octeți de pe magistrală în tamponul prealocat dat.

writebit(value: int) None

Scrie un singur bit (0 sau 1) pe magistrală.

writebyte(value: int) None

Scrie un singur octet (0–255) pe magistrală.

write(buf: bytes | bytearray) None

Scrie octeții din buf pe magistrală.

Adresarea dispozitivelor:

select_rom(rom: bytes | bytearray) None

Emite o resetare urmată de o comandă MATCH ROM pentru a adresa dispozitivul al cărui cod ROM pe 64 de biți se află în rom (un tampon de 8 octeți).

scan() list[bytearray]

Caută pe magistrală și returnează o listă de coduri ROM de 8 octeți (câte un bytearray pentru fiecare dispozitiv detectat). Returnează o listă goală dacă nu este prezent niciun dispozitiv.

Verificare prin redundanță ciclică:

crc8(data: bytes | bytearray) int

Calculează CRC-ul Maxim/Dallas pe 8 biți peste data. Rezultatul este 0 atunci când data include deja un octet CRC final valid, ceea ce poate fi folosit pentru a valida conținutul scratchpad-ului recepționat.

Excepții

exception onewire.OneWireError

Generată când o operație 1-Wire eșuează. În prezent este generată de OneWire.reset() când required este True și niciun slave nu răspunde la impulsul de resetare.