ds3231.h 3.6 KB

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