1 # esp32-owb |
1 # esp32-owb |
2 |
2 |
3 This is a ESP32-compatible C component for the Maxim Integrated "1-Wire" protocol. |
3 This is a ESP32-compatible C component for the Maxim Integrated "1-Wire" protocol. |
4 |
4 |
5 It is written and tested for version 3.0 of the [ESP-IDF](https://github.com/espressif/esp-idf) environment, using the xtensa-esp32-elf toolchain (gcc version 5.2.0, crosstool-ng-1.22.0-80-g6c4433a). |
5 It is written for the `idf.py` target `esp32`, although it may work on other ESP-32 devices with minor modifications. |
6 |
6 |
7 Support for v2.1 is available on the [ESP-IDF_v2.1](https://github.com/DavidAntliff/esp32-owb/tree/ESP-IDF_v2.1) branch. |
7 It is tested for version 4.4.4 and 5.0.1 of the [ESP-IDF](https://github.com/espressif/esp-idf) environment. |
|
8 |
|
9 Legacy support for v2.1 is available on the [ESP-IDF_v2.1](https://github.com/DavidAntliff/esp32-owb/tree/ESP-IDF_v2.1) branch. This is no longer maintained. |
|
10 |
|
11 Legacy support for v3.0-v3.3 and v4.1-beta1 is available on the [ESP-IDF_v3.0-3.3_4.1-beta1](https://github.com/DavidAntliff/esp32-owb/tree/ESP-IDF_v3.0-3.3_4.1-beta1) branch. This is no longer maintained. |
8 |
12 |
9 ## Features |
13 ## Features |
10 |
14 |
11 This library includes: |
15 This library includes: |
12 |
16 |
13 * External power supply mode (parasitic mode not yet supported). |
17 * External power supply mode. |
|
18 * Parasitic power mode. |
14 * Static (stack-based) or dynamic (malloc-based) memory model. |
19 * Static (stack-based) or dynamic (malloc-based) memory model. |
15 * No globals - support any number of 1-Wire buses simultaneously. |
20 * No globals - support any number of 1-Wire buses simultaneously. |
16 * 1-Wire device detection and validation, including search for multiple devices on a single bus. |
21 * 1-Wire device detection and validation, including search for multiple devices on a single bus. |
17 * Addressing optimisation for a single (solo) device on a bus. |
22 * Addressing optimisation for a single (solo) device on a bus. |
18 * 1-Wire bus operations including multi-byte read and write operations. |
23 * 1-Wire bus operations including multi-byte read and write operations. |
21 This component includes two methods of bus access - delay-driven GPIO and RMT-driven slots. |
26 This component includes two methods of bus access - delay-driven GPIO and RMT-driven slots. |
22 The original implementation used CPU delays to construct the 1-Wire read/write timeslots |
27 The original implementation used CPU delays to construct the 1-Wire read/write timeslots |
23 however this proved to be too unreliable. A second method, using the ESP32's RMT peripheral, |
28 however this proved to be too unreliable. A second method, using the ESP32's RMT peripheral, |
24 results in very accurate read/write timeslots and more reliable operation. |
29 results in very accurate read/write timeslots and more reliable operation. |
25 |
30 |
26 Therefore I highly recommend that you use the RMT driver. The GPIO driver should be considered deprecated. |
31 Therefore I highly recommend that you use the RMT driver. *The GPIO driver is deprecated and will be removed.* |
|
32 |
|
33 See documentation for [esp32-ds18b20](https://www.github.com/DavidAntliff/esp32-ds18b20#parasitic-power-mode) |
|
34 for further information about parasitic power mode, including strong pull-up configuration. |
27 |
35 |
28 ## Documentation |
36 ## Documentation |
29 |
37 |
30 Automatically generated API documentation (doxygen) is available [here](https://davidantliff.github.io/esp32-owb/index.html). |
38 Automatically generated API documentation (doxygen) is available [here](https://davidantliff.github.io/esp32-owb/index.html). |
31 |
39 |
37 |
45 |
38 The code in this project is licensed under the MIT license - see LICENSE for details. |
46 The code in this project is licensed under the MIT license - see LICENSE for details. |
39 |
47 |
40 ## Links |
48 ## Links |
41 |
49 |
42 * [esp32-ds18b20](https://github.com/DavidAntliff/esp32-ds18b20) - ESP32-compatible DS18B20 Digital Thermometer component for ESP32 |
50 * [esp32-ds18b20](https://github.com/DavidAntliff/esp32-ds18b20) - ESP32-compatible DS18B20 Digital Thermometer |
|
51 component for ESP32 |
43 * [1-Wire Communication Through Software](https://www.maximintegrated.com/en/app-notes/index.mvp/id/126) |
52 * [1-Wire Communication Through Software](https://www.maximintegrated.com/en/app-notes/index.mvp/id/126) |
44 * [1-Wire Search Algorithm](https://www.maximintegrated.com/en/app-notes/index.mvp/id/187) |
53 * [1-Wire Search Algorithm](https://www.maximintegrated.com/en/app-notes/index.mvp/id/187) |
45 * [Espressif IoT Development Framework for ESP32](https://github.com/espressif/esp-idf) |
54 * [Espressif IoT Development Framework for ESP32](https://github.com/espressif/esp-idf) |
46 |
55 |
47 ## Acknowledgements |
56 ## Acknowledgements |
48 |
57 |
49 Thank you to [Chris Morgan](https://github.com/chmorgan) for his contribution of adding RMT peripheral support for more reliable operation. |
58 Thank you to [Chris Morgan](https://github.com/chmorgan) for his contribution of adding RMT peripheral support for more |
|
59 reliable operation. |
50 |
60 |
51 Parts of this code are based on references provided to the public domain by Maxim Integrated. |
61 Parts of this code are based on references provided to the public domain by Maxim Integrated. |
52 |
62 |
53 "1-Wire" is a registered trademark of Maxim Integrated. |
63 "1-Wire" is a registered trademark of Maxim Integrated. |
54 |
|