ds3231.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. #ifndef _DS_3231_H_
  2. #define _DS_3231_H_
  3. #include "mbed.h"
  4. #include "main.h"
  5. #define DS3231_ADDR 0x68
  6. typedef union {
  7. struct {
  8. uint8_t Value : 7;
  9. uint8_t : 1;
  10. };
  11. uint8_t AS_BYTE;
  12. } T_SECOND;
  13. typedef union {
  14. struct {
  15. uint8_t Value : 7;
  16. uint8_t : 1;
  17. };
  18. uint8_t AS_BYTE;
  19. } T_MINUTE;
  20. typedef union {
  21. struct {
  22. uint8_t Value : 5;
  23. uint8_t nAM : 1;
  24. uint8_t n24 : 1;
  25. uint8_t : 1;
  26. };
  27. uint8_t AS_BYTE;
  28. } T_HOUR;
  29. typedef union {
  30. struct {
  31. uint8_t Value : 3;
  32. uint8_t : 5;
  33. };
  34. uint8_t AS_BYTE;
  35. } T_DAY;
  36. typedef union {
  37. struct {
  38. uint8_t Value : 6;
  39. uint8_t : 2;
  40. };
  41. uint8_t AS_BYTE;
  42. } T_DATE;
  43. typedef union {
  44. struct {
  45. uint8_t Value : 5;
  46. uint8_t : 2;
  47. uint8_t Century : 1;
  48. };
  49. uint8_t AS_BYTE;
  50. } T_MONTH;
  51. typedef union {
  52. struct {
  53. uint8_t Value : 8;
  54. };
  55. uint8_t AS_BYTE;
  56. } T_YEAR;
  57. typedef union {
  58. struct {
  59. uint8_t Value : 7;
  60. uint8_t M1 : 1;
  61. };
  62. uint8_t AS_BYTE;
  63. } A_SECOND;
  64. typedef union {
  65. struct {
  66. uint8_t Value : 7;
  67. uint8_t M2 : 1;
  68. };
  69. uint8_t AS_BYTE;
  70. } A_MINUTE;
  71. typedef union {
  72. struct {
  73. uint8_t Value : 5;
  74. uint8_t nAM : 1;
  75. uint8_t n24 : 1;
  76. uint8_t M3 : 1;
  77. };
  78. uint8_t AS_BYTE;
  79. } A_HOUR;
  80. typedef union {
  81. struct {
  82. union {
  83. struct {
  84. uint8_t Value : 4;
  85. uint8_t : 2;
  86. } Day;
  87. struct {
  88. uint8_t Value : 6;
  89. } Date;
  90. };
  91. uint8_t nDT : 1;
  92. uint8_t M4 : 1;
  93. };
  94. uint8_t AS_BYTE;
  95. } A_DAY_DATE;
  96. typedef union {
  97. struct {
  98. uint8_t A1IE : 1;
  99. uint8_t A2IE : 1;
  100. uint8_t INTCN : 1;
  101. uint8_t RS1 : 1;
  102. uint8_t RS2 : 1;
  103. uint8_t CONV : 1;
  104. uint8_t BBSQW : 1;
  105. uint8_t nEOSC : 1;
  106. };
  107. uint8_t AS_BYTE;
  108. } CONTROL_1;
  109. typedef union {
  110. struct {
  111. uint8_t A1F : 1;
  112. uint8_t A2F : 1;
  113. uint8_t BSY : 1;
  114. uint8_t EN32KHZ : 1;
  115. uint8_t : 3;
  116. uint8_t OSF : 1;
  117. };
  118. uint8_t AS_BYTE;
  119. } CONTROL_2;
  120. typedef union {
  121. struct {
  122. uint8_t Value : 7;
  123. uint8_t Sign : 1;
  124. };
  125. uint8_t AS_BYTE;
  126. } AGING_OFFSET;
  127. typedef union {
  128. struct {
  129. uint8_t Value : 7;
  130. uint8_t Sign : 1;
  131. };
  132. uint8_t AS_BYTE;
  133. } TEMP_MSB;
  134. typedef union {
  135. struct {
  136. uint8_t : 6;
  137. uint8_t Value : 2;
  138. };
  139. uint8_t AS_DATA;
  140. } TEMP_LSB;
  141. typedef union {
  142. struct {
  143. T_SECOND Second; // 0x00
  144. T_MINUTE Minute; // 0x01
  145. T_HOUR Hour; // 0x02
  146. T_DAY Day; // 0x03
  147. T_DATE Date; // 0x04
  148. T_MONTH Month; // 0x05
  149. T_YEAR Year; // 0x06
  150. A_SECOND A1_Second; // 0x07
  151. A_MINUTE A1_Minute; // 0x08
  152. A_HOUR A1_Hour; // 0x09
  153. A_DAY_DATE A1_Day_Date; // 0x0A
  154. A_MINUTE A2_Minute; // 0x0B
  155. A_HOUR A2_Hour; // 0x0C
  156. A_DAY_DATE A2_Day_Date; // 0x0D
  157. CONTROL_1 Control_1; // 0x0E
  158. CONTROL_2 Control_2; // 0x0F
  159. AGING_OFFSET Aging_Offset; // 0x10
  160. TEMP_MSB Temp_MSB; // 0x11
  161. TEMP_LSB Temp_LSB; // 0x12
  162. };
  163. } DS3231_REGS;
  164. void DS3231_Init(void);
  165. #endif