onewire.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /********************************* (C) РОТЕК ***********************************
  2. * @module onewire
  3. * @file onewire.h
  4. * @version 1.0.0
  5. * @date XX.XX.XXXX
  6. * $brief DS18B20 temperature sensor driver
  7. *******************************************************************************
  8. * @history Version Author Comment
  9. * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
  10. *******************************************************************************
  11. */
  12. #ifndef ONEWIRE_H
  13. #define ONEWIRE_H
  14. #include <stdint.h>
  15. #include "common_config.h"
  16. //#define DALLAS_TWO_LINE_SWITCH //двупроводное подключение
  17. /* Первый параметр функции OW_Send */
  18. #define DALLAS_SEND_RESET 1
  19. #define DALLAS_NO_RESET 2
  20. /* Статус возврата функций */
  21. #define DALLAS_OK 1
  22. #define DALLAS_ERROR 2
  23. #define DALLAS_NO_DEVICE 3
  24. #define DALLAS_NO_READ 0xff
  25. #define DALLAS_READ_SLOT 0xff
  26. /**
  27. * @brief Настройка USART
  28. */
  29. void DALLAS_Init();
  30. /**
  31. * @brief Настройка DMA
  32. */
  33. void DALLAS_DmaInit(void);
  34. /**
  35. * @brief Сброс и проверка наличия устройства на шине 1-wire
  36. */
  37. uint8_t DALLAS_SensorReset(t_sensor_list_t sensor);
  38. /**
  39. * @brief Настроить TX пин как питающий выход
  40. */
  41. void DALLAS_OutSetAsPower(t_sensor_list_t sensor);
  42. /**
  43. * @brief Настроить TX пин как передатчик
  44. */
  45. void DALLAS_OutSetAsTX(t_sensor_list_t sensor);
  46. /**
  47. * @brief Отправка и прием данных
  48. * @param sendReset посылать RESET в начале общения.
  49. * OW_SEND_RESET
  50. * OW_NO_RESET
  51. * @param *command - массив байт, отсылаемых в шину.
  52. * Если нужно чтение - отправляем OW_READ_SLOTH
  53. * @param cLen - длина буфера команд, столько байт отошлется в шину
  54. * @param *data - если требуется чтение, то ссылка на буфер для чтения
  55. * @param dLen - длина буфера для чтения. Прочитается не более этой длины
  56. * @param readStart - с какого символа передачи начинать чтение (нумеруются с 0)
  57. * можно указать OW_NO_READ, тогда можно не задавать data и dLen
  58. */
  59. uint8_t DALLAS_Send(t_sensor_list_t sensor, uint8_t sendReset, uint8_t *command,
  60. uint8_t cLen, uint8_t *data, uint8_t dLen, uint8_t readStart);
  61. /**
  62. * @brief Функция преобразует один байт в восемь, для передачи через USART
  63. * @param ow_byte - байт, который надо преобразовать
  64. * @param ow_bits - ссылка на буфер, размером не менее 8 байт
  65. */
  66. void DALLAS_ToBits(uint8_t ow_byte, uint8_t *ow_bits);
  67. /**
  68. * @brief Обратное преобразование - из того, что получено через USART опять собирается байт
  69. * @param ow_bits - ссылка на буфер, размером не менее 8 байт
  70. * @param ow_byte - собранный байт данных
  71. */
  72. uint8_t DALLAS_ToByte(uint8_t *ow_bits);
  73. #endif /* ONEWIRE_H */