ds3231.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #pragma once
  2. #ifndef DS3231_H
  3. #define DS3231_H
  4. /* RTC Status */
  5. typedef enum {
  6. RTC_OK = 0x00,
  7. RTC_TWI_TimeOut,
  8. RTC_TWI_Error
  9. } rtc_status_t;
  10. /**
  11. * @brief Clock sructure.
  12. * @note structure of ds3231 data.
  13. */
  14. typedef struct {
  15. /**
  16. * @brief 00h: Seconds
  17. */
  18. uint8_t Sec;
  19. /**
  20. * @brief 01h: Minutes
  21. */
  22. uint8_t Min;
  23. /**
  24. * @brief 02h: Hours
  25. */
  26. uint8_t Hr;
  27. /**
  28. * @brief 03h: Week Day
  29. */
  30. uint8_t WD;
  31. /**
  32. * @brief 04h: Day of Month
  33. */
  34. uint8_t Day;
  35. /**
  36. * @brief 05h: Month
  37. */
  38. uint8_t Mon;
  39. /**
  40. * @brief 06h: Year
  41. */
  42. uint8_t Year;
  43. /**
  44. * @brief 07h: Alarm 1 Seconds
  45. */
  46. uint8_t A1SS;
  47. /**
  48. * @brief 08h: Alarm 1 Minutes
  49. */
  50. uint8_t A1MM;
  51. /**
  52. * @brief 09h: Alarm 1 Hours
  53. */
  54. uint8_t A1HH;
  55. /**
  56. * @brief 0Ah: Alarm 1 Day / Date
  57. */
  58. uint8_t A1DD;
  59. /**
  60. * @brief 0Bh: Alarm 2 Minutes
  61. */
  62. uint8_t A2MM;
  63. /**
  64. * @brief 0Ch: Alarm 2 Hours
  65. */
  66. uint8_t A2HH;
  67. /**
  68. * @brief 0Dh: Alarm 2 Day / Date
  69. */
  70. uint8_t A2DD;
  71. /**
  72. * @brief 0Eh: Control
  73. */
  74. uint8_t Ctrl;
  75. /**
  76. * @brief 0Fh: Control/Status
  77. */
  78. uint8_t CtSt;
  79. /**
  80. * @brief 10h: Aging Offset
  81. */
  82. uint8_t AgOffset;
  83. /**
  84. * @brief 11h: MSB of Temp
  85. */
  86. uint8_t TempH;
  87. /**
  88. * @brief 12h: LSB of Temp
  89. */
  90. uint8_t TempL;
  91. } rtc_t;
  92. void RTC_Init(void);
  93. void RTC_ReadAll(rtc_t * data);
  94. void RTC_ReadTime(rtc_t * data);
  95. void RTC_WriteTimeCalendar(rtc_t * data);
  96. void RTC_WriteTime(rtc_t * data);
  97. void RTC_WriteHHMM(rtc_t * data);
  98. void RTC_WriteCalendar(rtc_t * data);
  99. uint8_t bcd2bin(uint8_t bcd);
  100. uint8_t bin2bcd(uint8_t bin);
  101. #endif // DS3231_H