/** ****************************************************************************** * @file : onewire_uart.h * @brief : 1-Wire driver * @author : MicroTechnics (microtechnics.ru) *****************************************************************************/ #ifndef ONEWIRE_UART_H #define ONEWIRE_UART_H /* Includes ----------------------------------------------------------------*/ #include "stm32f1xx_hal.h" /* Declarations and definitions --------------------------------------------*/ #define ONEWIRE_BAUDRATE 115200 #define ONEWIRE_RESET_BAUDRATE 9600 #define ONEWIRE_UART_TIMEOUT 10 /** * @brief Комманды OneWire * @details Определяет байты для uart, которые будут * формировать необходимую длину импульса для разных комманд */ typedef enum { ONEWIRE_RESET = 0xF0, /*!< @brief Импульс длиной 520мкс для команды Reset (9600bod) @details 1-Wire требует импульс длительностью >480мкс */ ONEWIRE_PULSE_SHORT = 0xFF, /*!< @brief Импульс длиной 8.7 мкс для записи "1"/чтения бита (115200bod) @details 1-Wire требует импульс длительностью 1-15мкс */ ONEWIRE_PULSE_LONG = 0x00, /*!< @brief импульс длиной 78.3 мкс для записи "0" (115200bod) @details 1-Wire требует импульс длительностью 60-120мкс */ // ONEWIRE_PULSE_1_15US = 0xFF, // ONEWIRE_PULSE_60_120US = 0x00, }ONEWIRE_Commands; /* Functions ---------------------------------------------------------------*/ /* Выполняет 1-Wire Reset и проверяет наличие устройств на шине */ HAL_StatusTypeDef OneWireUART_Reset(UART_HandleTypeDef *huart); /* Передает и принимает байт через 1-Wire */ uint8_t OneWireUART_ProcessByte(UART_HandleTypeDef *huart, uint8_t byte); /* Передает и принимает один бит через 1-Wire */ uint8_t OneWireUART_ProcessBit(UART_HandleTypeDef *huart, uint8_t bit); #endif // #ifndef ONEWIRE_UART_H