TM STM32Fxxx HAL Libraries  v1.0.0
Libraries for STM32Fxxx (F0, F4 and F7 series) devices based on HAL drivers from ST from Tilen Majerle
tm_stm32_onewire.h
1 
37 #ifndef TM_ONEWIRE_H
38 #define TM_ONEWIRE_H 100
39 
40 /* C++ detection */
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
71 #include "stm32fxxx_hal.h"
72 #include "defines.h"
73 #include "tm_stm32_delay.h"
74 #include "tm_stm32_gpio.h"
75 
82 /* OneWire delay */
83 #define ONEWIRE_DELAY(x) Delay(x)
84 
85 /* Pin settings */
86 #define ONEWIRE_LOW(structure) TM_GPIO_SetPinLow((structure)->GPIOx, (structure)->GPIO_Pin)
87 #define ONEWIRE_HIGH(structure) TM_GPIO_SetPinHigh((structure)->GPIOx, (structure)->GPIO_Pin)
88 #define ONEWIRE_INPUT(structure) TM_GPIO_SetPinAsInput(structure->GPIOx, (structure)->GPIO_Pin)
89 #define ONEWIRE_OUTPUT(structure) TM_GPIO_SetPinAsOutput(structure->GPIOx, (structure)->GPIO_Pin)
90 
91 /* OneWire commands */
92 #define ONEWIRE_CMD_RSCRATCHPAD 0xBE
93 #define ONEWIRE_CMD_WSCRATCHPAD 0x4E
94 #define ONEWIRE_CMD_CPYSCRATCHPAD 0x48
95 #define ONEWIRE_CMD_RECEEPROM 0xB8
96 #define ONEWIRE_CMD_RPWRSUPPLY 0xB4
97 #define ONEWIRE_CMD_SEARCHROM 0xF0
98 #define ONEWIRE_CMD_READROM 0x33
99 #define ONEWIRE_CMD_MATCHROM 0x55
100 #define ONEWIRE_CMD_SKIPROM 0xCC
101 
116 typedef struct {
117  GPIO_TypeDef* GPIOx;
118  uint16_t GPIO_Pin;
119  uint8_t LastDiscrepancy;
121  uint8_t LastDeviceFlag;
122  uint8_t ROM_NO[8];
123 } TM_OneWire_t;
124 
142 void TM_OneWire_Init(TM_OneWire_t* OneWireStruct, GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
143 
151 uint8_t TM_OneWire_Reset(TM_OneWire_t* OneWireStruct);
152 
158 uint8_t TM_OneWire_ReadByte(TM_OneWire_t* OneWireStruct);
159 
166 void TM_OneWire_WriteByte(TM_OneWire_t* OneWireStruct, uint8_t byte);
167 
174 void TM_OneWire_WriteBit(TM_OneWire_t* OneWireStruct, uint8_t bit);
175 
183 uint8_t TM_OneWire_ReadBit(TM_OneWire_t* OneWireStruct);
184 
193 uint8_t TM_OneWire_Search(TM_OneWire_t* OneWireStruct, uint8_t command);
194 
200 void TM_OneWire_ResetSearch(TM_OneWire_t* OneWireStruct);
201 
220 uint8_t TM_OneWire_First(TM_OneWire_t* OneWireStruct);
221 
230 uint8_t TM_OneWire_Next(TM_OneWire_t* OneWireStruct);
231 
238 uint8_t TM_OneWire_GetROM(TM_OneWire_t* OneWireStruct, uint8_t index);
239 
246 void TM_OneWire_GetFullROM(TM_OneWire_t* OneWireStruct, uint8_t *firstIndex);
247 
254 void TM_OneWire_Select(TM_OneWire_t* OneWireStruct, uint8_t* addr);
255 
262 void TM_OneWire_SelectWithPointer(TM_OneWire_t* OneWireStruct, uint8_t* ROM);
263 
271 uint8_t TM_OneWire_CRC8(uint8_t* addr, uint8_t len);
272 
285 /* C++ detection */
286 #ifdef __cplusplus
287 }
288 #endif
289 
290 #endif
291 
uint8_t TM_OneWire_CRC8(uint8_t *addr, uint8_t len)
Calculates 8-bit CRC for 1-wire devices.
uint8_t LastDeviceFlag
Definition: tm_stm32_onewire.h:121
void TM_OneWire_ResetSearch(TM_OneWire_t *OneWireStruct)
Resets search states.
uint8_t TM_OneWire_First(TM_OneWire_t *OneWireStruct)
Starts search, reset states first.
void TM_OneWire_GetFullROM(TM_OneWire_t *OneWireStruct, uint8_t *firstIndex)
Gets all 8 bytes ROM value from device from search.
uint8_t TM_OneWire_ReadBit(TM_OneWire_t *OneWireStruct)
Reads single bit from one wire bus.
OneWire working struct.
Definition: tm_stm32_onewire.h:116
void TM_OneWire_Select(TM_OneWire_t *OneWireStruct, uint8_t *addr)
Selects specific slave on bus.
uint8_t LastFamilyDiscrepancy
Definition: tm_stm32_onewire.h:120
uint8_t TM_OneWire_Search(TM_OneWire_t *OneWireStruct, uint8_t command)
Searches for OneWire devices on specific Onewire port.
uint8_t LastDiscrepancy
Definition: tm_stm32_onewire.h:119
uint8_t TM_OneWire_ReadByte(TM_OneWire_t *OneWireStruct)
Reads byte from one wire bus.
uint8_t TM_OneWire_Next(TM_OneWire_t *OneWireStruct)
Reads next device.
uint8_t TM_OneWire_Reset(TM_OneWire_t *OneWireStruct)
Resets OneWire bus.
GPIO_TypeDef * GPIOx
Definition: tm_stm32_onewire.h:117
uint8_t TM_OneWire_GetROM(TM_OneWire_t *OneWireStruct, uint8_t index)
Gets ROM number from device from search.
void TM_OneWire_SelectWithPointer(TM_OneWire_t *OneWireStruct, uint8_t *ROM)
Selects specific slave on bus with pointer address.
void TM_OneWire_WriteByte(TM_OneWire_t *OneWireStruct, uint8_t byte)
Writes byte to bus.
void TM_OneWire_Init(TM_OneWire_t *OneWireStruct, GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
Initializes OneWire bus.
uint16_t GPIO_Pin
Definition: tm_stm32_onewire.h:118
void TM_OneWire_WriteBit(TM_OneWire_t *OneWireStruct, uint8_t bit)
Writes single bit to onewire bus.