DavidAntliff / esp32-owb

Maxim One Wire Bus driver for ESP32.
MIT License
157 stars 52 forks source link
c component esp-idf esp32 maxim one-wire

esp32-owb

This is a ESP32-compatible C component for the Maxim Integrated "1-Wire" protocol.

It is written for the idf.py target esp32, although it may work on other ESP-32 devices with minor modifications.

It is tested for version 4.4.4 and 5.0.1 of the ESP-IDF environment.

Legacy support for v2.1 is available on the ESP-IDF_v2.1 branch. This is no longer maintained.

Legacy support for v3.0-v3.3 and v4.1-beta1 is available on the ESP-IDF_v3.0-3.3_4.1-beta1 branch. This is no longer maintained.

Features

This library includes:

This component includes two methods of bus access - delay-driven GPIO and RMT-driven slots. The original implementation used CPU delays to construct the 1-Wire read/write timeslots however this proved to be too unreliable. A second method, using the ESP32's RMT peripheral, results in very accurate read/write timeslots and more reliable operation.

Therefore I highly recommend that you use the RMT driver. The GPIO driver is deprecated and will be removed.

See documentation for esp32-ds18b20 for further information about parasitic power mode, including strong pull-up configuration.

Documentation

Automatically generated API documentation (doxygen) is available here.

Source Code

The source is available from GitHub.

License

The code in this project is licensed under the MIT license - see LICENSE for details.

Links

Acknowledgements

Thank you to Chris Morgan for his contribution of adding RMT peripheral support for more reliable operation.

Parts of this code are based on references provided to the public domain by Maxim Integrated.

"1-Wire" is a registered trademark of Maxim Integrated.