2025-03-24
One-Wire是由Dallas Semiconductor(现为Maxim Integrated)开发的一种通信协议,允许主设备(如微控制器或嵌入式Linux 系统)通过单根线与一个或多个从设备进行低速数据交换。它通常用于嵌入式系统中连接传感器、存储设备和其他外设。
单线通信:仅使用一根数据线(和一根地线)进行通信,减少了布线复杂性。
低功耗:设备通常可以直接从数据线获取电源(寄生供电)。
唯一地址:每个One-Wire设备都有一个唯一的 64 位地址,允许多个设备共享同一总线。
简单协议:协议相对简单,易于在软件或硬件中实现。
raspberry pi3b
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux
编译程序:make
启用one-wire设备树配置:sudo dtoverlay w1-gpio gpiopin=26 pullup=0
[78850.997099] Driver for 1-wire Dallas network protocol.
[78851.023600] gpio-26 (onewire@1a): enforced open drain please flag it properly in DT/ACPI DSDT/board file
[78853.012698] w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, will continue next search.
[78901.013952] w1_master_driver w1_bus_master1: Attaching one wire slave 00.800000000000 crc 8c
...
ls /sys/bus/w1/
devices drivers drivers_autoprobe drivers_probe uevent
cat /sys/bus/w1/devices/28-8000002ac2bc/temperature