/********************************* (C) РОТЕК *********************************** * @module onewire * @file onewire.h * @version 1.0.0 * @date XX.XX.XXXX * $brief DS18B20 temperature sensor driver ******************************************************************************* * @history Version Author Comment * XX.XX.XXXX 1.0.0 Telenkov D.A. First release. ******************************************************************************* */ #ifndef ONEWIRE_H #define ONEWIRE_H #include #include "common_config.h" //#define DALLAS_TWO_LINE_SWITCH //двупроводное подключение /* Первый параметр функции OW_Send */ #define DALLAS_SEND_RESET 1 #define DALLAS_NO_RESET 2 /* Статус возврата функций */ #define DALLAS_OK 1 #define DALLAS_ERROR 2 #define DALLAS_NO_DEVICE 3 #define DALLAS_NO_READ 0xff #define DALLAS_READ_SLOT 0xff /** * @brief Настройка USART */ void DALLAS_Init(); /** * @brief Настройка DMA */ void DALLAS_DmaInit(void); /** * @brief Сброс и проверка наличия устройства на шине 1-wire */ uint8_t DALLAS_SensorReset(t_sensor_list_t sensor); /** * @brief Настроить TX пин как питающий выход */ void DALLAS_OutSetAsPower(t_sensor_list_t sensor); /** * @brief Настроить TX пин как передатчик */ void DALLAS_OutSetAsTX(t_sensor_list_t sensor); /** * @brief Отправка и прием данных * @param sendReset посылать RESET в начале общения. * OW_SEND_RESET * OW_NO_RESET * @param *command - массив байт, отсылаемых в шину. * Если нужно чтение - отправляем OW_READ_SLOTH * @param cLen - длина буфера команд, столько байт отошлется в шину * @param *data - если требуется чтение, то ссылка на буфер для чтения * @param dLen - длина буфера для чтения. Прочитается не более этой длины * @param readStart - с какого символа передачи начинать чтение (нумеруются с 0) * можно указать OW_NO_READ, тогда можно не задавать data и dLen */ uint8_t DALLAS_Send(t_sensor_list_t sensor, uint8_t sendReset, uint8_t *command, uint8_t cLen, uint8_t *data, uint8_t dLen, uint8_t readStart); /** * @brief Функция преобразует один байт в восемь, для передачи через USART * @param ow_byte - байт, который надо преобразовать * @param ow_bits - ссылка на буфер, размером не менее 8 байт */ void DALLAS_ToBits(uint8_t ow_byte, uint8_t *ow_bits); /** * @brief Обратное преобразование - из того, что получено через USART опять собирается байт * @param ow_bits - ссылка на буфер, размером не менее 8 байт * @param ow_byte - собранный байт данных */ uint8_t DALLAS_ToByte(uint8_t *ow_bits); #endif /* ONEWIRE_H */