52 lines
1.9 KiB
C
52 lines
1.9 KiB
C
/**
|
|
******************************************************************************
|
|
* @file onewire.h
|
|
* @brief This file contains all the constants parameters for the OneWire
|
|
******************************************************************************
|
|
* @attention
|
|
* Usage:
|
|
* Uncomment LL Driver for HAL driver
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
#ifndef ONEWIRE_IT_DRIVER_H
|
|
#define ONEWIRE_IT_DRIVER_H
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
#include "stm32f1xx.h"
|
|
#include "onewire.h"
|
|
|
|
#define ONE_WIRE_TIMER_PERIOD_US 1 // Ïåðèîä òàéìåðà â ìèêðîñåêóíäàõ (1 ìêñ)
|
|
#define OP_QUEUE_SIZE 10 // Áóôåð îïåðàöèé OneWire
|
|
typedef enum {
|
|
OW_RESET,
|
|
OW_READ_BIT,
|
|
OW_SET_BIT,
|
|
OW_RESET_BIT,
|
|
OW_IDLE
|
|
} OneWire_State;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
OneWire_t *onewire;
|
|
uint8_t *data; // Áóôåð äëÿ äàííûõ (äëÿ çàïèñè è ÷òåíèÿ)
|
|
uint8_t data_len; // Äëèíà äàííûõ
|
|
uint8_t current_byte_idx; // Èíäåêñ òåêóùåãî áàéòà äëÿ çàïèñè/÷òåíèÿ
|
|
uint8_t current_bit_idx; // Èíäåêñ òåêóùåãî áèòà äëÿ çàïèñè/÷òåíèÿ
|
|
uint8_t head; // Èíäåêñ ïåðâîé îïåðàöèè â î÷åðåäè
|
|
uint8_t tail; // Èíäåêñ ïîñëåäíåé îïåðàöèè â î÷åðåäè
|
|
uint8_t op_done; // Èíäåêñ ïîñëåäíåé îïåðàöèè â î÷åðåäè
|
|
void (*operation_queue[OP_QUEUE_SIZE])(OneWire_t*); // Î÷åðåäü îïåðàöèé
|
|
}OneWire_ITHandleTypeDef;
|
|
extern OneWire_ITHandleTypeDef honewire;
|
|
|
|
void OneWireTIMHandler(TIM_HandleTypeDef *htim, OneWire_ITHandleTypeDef *OW);
|
|
void OneWireIT_Init(OneWire_ITHandleTypeDef *OW_IT);
|
|
HAL_StatusTypeDef OneWire_ReadBit_ITHandle(OneWire_t *OW, uint8_t *bit);
|
|
HAL_StatusTypeDef OneWire_WriteBit_ITHandle(OneWire_t *OW, uint8_t bit);
|
|
HAL_StatusTypeDef OneWire_Reset_ITHandle(OneWire_t *OW);
|
|
|
|
#endif /* ONEWIRE_IT_DRIVER_H */
|