onewire --- 1-Wire 总线协议¶
onewire 模块实现了 1-Wire 总线主机协议,供 DS18x20 温度传感器等设备使用。它使用一个配置为开漏模式的 machine.Pin 来与共享总线上的一个或多个从设备通信。
示例:
from machine import Pin
from onewire import OneWire
ow = OneWire(Pin("P7"))
devices = ow.scan()
for rom in devices:
print(rom)
类¶
- class onewire.OneWire(pin: machine.Pin)¶
在给定的
machine.Pin上构造一个 1-Wire 总线主机。该引脚会自动配置为带上拉的开漏模式。ROM 命令常量:
- MATCH_ROM: int¶
Match ROM 命令(
0x55)。由select_rom()在内部使用,以通过 64 位 ROM 码寻址特定设备。
总线复位:
- reset(required: bool = False) bool¶
在总线上发出一个复位脉冲。如果至少有一个从设备以存在脉冲响应,则返回
True,否则返回False。如果 required 为True且没有设备响应,则抛出OneWireError。
位/字节 I/O:
设备寻址:
- select_rom(rom: bytes | bytearray) None¶
先发出一次复位,再发出 MATCH ROM 命令,以寻址其 64 位 ROM 码在 rom(一个 8 字节缓冲区)中的设备。
循环冗余校验:
异常¶
- exception onewire.OneWireError¶
当 1-Wire 操作失败时抛出。目前由
OneWire.reset()在 required 为True且没有从设备响应复位脉冲时抛出。