TM STM32F4xx Libraries  v1.0.0
Libraries for STM32F4xx devices from Tilen Majerle
tm_stm32f4_onewire.h
1 
30 #ifndef TM_ONEWIRE_H
31 #define TM_ONEWIRE_H 210
32 
33 /* C++ detection */
34 #ifdef __cplusplus
35 extern C {
36 #endif
37 
85 #include "stm32f4xx.h"
86 #include "stm32f4xx_rcc.h"
87 #include "stm32f4xx_gpio.h"
88 #include "defines.h"
89 #include "tm_stm32f4_delay.h"
90 #include "tm_stm32f4_gpio.h"
91 
98 /* OneWire delay */
99 #define ONEWIRE_DELAY(x) Delay(x)
100 
101 /* Pin settings */
102 #define ONEWIRE_LOW(structure) TM_GPIO_SetPinLow((structure)->GPIOx, (structure)->GPIO_Pin)
103 #define ONEWIRE_HIGH(structure) TM_GPIO_SetPinHigh((structure)->GPIOx, (structure)->GPIO_Pin)
104 #define ONEWIRE_INPUT(structure) TM_GPIO_SetPinAsInput(structure->GPIOx, (structure)->GPIO_Pin)
105 #define ONEWIRE_OUTPUT(structure) TM_GPIO_SetPinAsOutput(structure->GPIOx, (structure)->GPIO_Pin)
106 
107 /* OneWire commands */
108 #define ONEWIRE_CMD_RSCRATCHPAD 0xBE
109 #define ONEWIRE_CMD_WSCRATCHPAD 0x4E
110 #define ONEWIRE_CMD_CPYSCRATCHPAD 0x48
111 #define ONEWIRE_CMD_RECEEPROM 0xB8
112 #define ONEWIRE_CMD_RPWRSUPPLY 0xB4
113 #define ONEWIRE_CMD_SEARCHROM 0xF0
114 #define ONEWIRE_CMD_READROM 0x33
115 #define ONEWIRE_CMD_MATCHROM 0x55
116 #define ONEWIRE_CMD_SKIPROM 0xCC
117 
132 typedef struct {
133  GPIO_TypeDef* GPIOx;
134  uint16_t GPIO_Pin;
135  uint8_t LastDiscrepancy;
137  uint8_t LastDeviceFlag;
138  uint8_t ROM_NO[8];
139 } TM_OneWire_t;
140 
158 void TM_OneWire_Init(TM_OneWire_t* OneWireStruct, GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
159 
167 uint8_t TM_OneWire_Reset(TM_OneWire_t* OneWireStruct);
168 
174 uint8_t TM_OneWire_ReadByte(TM_OneWire_t* OneWireStruct);
175 
182 void TM_OneWire_WriteByte(TM_OneWire_t* OneWireStruct, uint8_t byte);
183 
190 void TM_OneWire_WriteBit(TM_OneWire_t* OneWireStruct, uint8_t bit);
191 
199 uint8_t TM_OneWire_ReadBit(TM_OneWire_t* OneWireStruct);
200 
209 uint8_t TM_OneWire_Search(TM_OneWire_t* OneWireStruct, uint8_t command);
210 
216 void TM_OneWire_ResetSearch(TM_OneWire_t* OneWireStruct);
217 
236 uint8_t TM_OneWire_First(TM_OneWire_t* OneWireStruct);
237 
246 uint8_t TM_OneWire_Next(TM_OneWire_t* OneWireStruct);
247 
254 uint8_t TM_OneWire_GetROM(TM_OneWire_t* OneWireStruct, uint8_t index);
255 
262 void TM_OneWire_GetFullROM(TM_OneWire_t* OneWireStruct, uint8_t *firstIndex);
263 
270 void TM_OneWire_Select(TM_OneWire_t* OneWireStruct, uint8_t* addr);
271 
278 void TM_OneWire_SelectWithPointer(TM_OneWire_t* OneWireStruct, uint8_t* ROM);
279 
287 uint8_t TM_OneWire_CRC8(uint8_t* addr, uint8_t len);
288 
301 /* C++ detection */
302 #ifdef __cplusplus
303 }
304 #endif
305 
306 #endif
307 
uint8_t TM_OneWire_CRC8(uint8_t *addr, uint8_t len)
Calculates 8-bit CRC for 1-wire devices.
uint8_t LastDeviceFlag
Definition: tm_stm32f4_onewire.h:137
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_stm32f4_onewire.h:132
void TM_OneWire_Select(TM_OneWire_t *OneWireStruct, uint8_t *addr)
Selects specific slave on bus.
uint8_t LastFamilyDiscrepancy
Definition: tm_stm32f4_onewire.h:136
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_stm32f4_onewire.h:135
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_stm32f4_onewire.h:133
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_stm32f4_onewire.h:134
void TM_OneWire_WriteBit(TM_OneWire_t *OneWireStruct, uint8_t bit)
Writes single bit to onewire bus.