OneWire Library
The OneWire library provides routines for communication via the Dallas OneWire protocol, e.g. with DS18x20 digital thermometer. OneWire is a Master/Slave protocol, and all communication cabling required is a single wire. OneWire enabled devices should have open collector drivers (with single pull-up resistor) on the shared data line.
Slave devices on the OneWire bus can even get their power supply from data line. For detailed schematic see device datasheet.
Some basic characteristics of this protocol are:
- single master system,
- low cost,
- low transfer rates (up to 16 kbps),
- fairly long distances (up to 300 meters),
- small data transfer packages.
Each OneWire device also has a unique 64-bit registration number (8-bit device type, 48-bit serial number and 8-bit CRC), so multiple slaves can co-exist on the same bus.
- Oscillator frequency Fosc needs to be at least 4MHz in order to use the routines with Dallas digital thermometers.
- This library implements time-based activities, so interrupts need to be disabled when using OneWire library.
Library Routines
Ow_Reset
Prototype |
function Ow_Reset(var port: dword; pin: byte): dword; |
---|---|
Description |
Issues OneWire reset signal for DS18x20. |
Parameters |
|
Returns |
|
Requires |
Devices compliant with the Dallas OneWire protocol. |
Example |
Stellaris// Issue Reset signal on One-Wire Bus connected to pin GPIO_PORTF.B6 Ow_Reset(GPIO_PORTF, 6); MSP432// Issue Reset signal on One-Wire Bus connected to pin DIO_P6OUT.B6 Ow_Reset(DIO_P6OUT, 6); STM32// Issue Reset signal on One-Wire Bus connected to pin GPIOB_ODR.B10 Ow_Reset(GPIOB_ODR, 10); CEC1x02// Issue Reset signal on One-Wire Bus Ow_Reset(GPIO_PORT_130_137, 6); |
Notes |
None. |
Ow_Read
Prototype |
function Ow_Read(var port : dword; pin : byte): byte; |
---|---|
Description |
Reads one byte of data via the OneWire bus. |
Parameters |
|
Returns |
Data read from an external device over the OneWire bus. |
Requires |
Devices compliant with the Dallas OneWire protocol. |
Example |
Stellaris// Read a byte from the One-Wire Bus connected to pin GPIO_PORTF.B6 var read_data : byte; ... read_data := Ow_Read(GPIO_PORTF, 6); MSP432// Read a byte from the One-Wire Bus connected to pin DIO_P6OUT.B6 var read_data : byte; ... read_data := Ow_Read(DIO_P6OUT, 6); STM32// Read a byte from the One-Wire Bus connected to pin GPIOB_ODR.10 var read_data : byte; ... read_data := Ow_Read(GPIOB_ODR, 10); CEC1x02// Read a byte from the One-Wire Bus var read_data : byte; ... read_data := Ow_Read(GPIO_PORT_130_137, 6); |
Notes |
None. |
Ow_Write
Prototype |
procedure Ow_Write(var port: dword; pin, data_ : byte); |
---|---|
Description |
Writes one byte of data via the OneWire bus. |
Parameters |
|
Returns |
Nothing. |
Requires |
Devices compliant with the Dallas OneWire protocol. |
Example |
Stellaris// Send a byte to the One-Wire Bus connected to pin GPIO_PORTF.B6 Ow_Write(GPIO_PORTF, 6, 0xCC); Stellaris// Send a byte to the One-Wire Bus connected to pin P6OUT.B6 Ow_Write(P6OUT, 6, 0xCC); STM32// Send a byte to the One-Wire Bus connected to pin GPIOB_ODR.10 Ow_Write(GPIOB_ODR, 10, 0xCC); CEC1x02// Send a byte to the One-Wire Bus Ow_Write(GPIO_PORT_130_137, 6); |
Notes |
None. |