TM STM32F4xx Libraries  v1.0.0
Libraries for STM32F4xx devices from Tilen Majerle
tm_stm32f4_ds1307.h
1 
30 #ifndef TM_DS1307_H
31 #define TM_DS1307_H 120
32 
91 #include "stm32f4xx.h"
92 #include "tm_stm32f4_i2c.h"
93 #include "defines.h"
94 
101 /* I2C settings for I2C library */
102 #ifndef DS1307_I2C
103 #define DS1307_I2C I2C1
104 #define DS1307_I2C_PINSPACK TM_I2C_PinsPack_1
105 #endif
106 
107 /* DS1307 I2C clock */
108 #ifndef DS1307_I2C_CLOCK
109 #define DS1307_I2C_CLOCK 100000
110 #endif
111 
112 /* I2C slave address for DS1307 */
113 #define DS1307_I2C_ADDR 0xD0
114 
115 /* Registers location */
116 #define DS1307_SECONDS 0x00
117 #define DS1307_MINUTES 0x01
118 #define DS1307_HOURS 0x02
119 #define DS1307_DAY 0x03
120 #define DS1307_DATE 0x04
121 #define DS1307_MONTH 0x05
122 #define DS1307_YEAR 0x06
123 #define DS1307_CONTROL 0x07
124 
125 /* Bits in control register */
126 #define DS1307_CONTROL_OUT 7
127 #define DS1307_CONTROL_SQWE 4
128 #define DS1307_CONTROL_RS1 1
129 #define DS1307_CONTROL_RS0 0
130 
144 typedef enum {
149 
153 typedef struct {
154  uint8_t seconds;
155  uint8_t minutes;
156  uint8_t hours;
157  uint8_t day;
158  uint8_t date;
159  uint8_t month;
160  uint8_t year;
162 
166 typedef enum {
174 
191 
197 uint8_t TM_DS1307_GetSeconds(void);
198 
204 uint8_t TM_DS1307_GetMinutes(void);
205 
211 uint8_t TM_DS1307_GetHours(void);
212 
218 uint8_t TM_DS1307_GetDay(void);
219 
225 uint8_t TM_DS1307_GetDate(void);
226 
232 uint8_t TM_DS1307_GetMonth(void);
233 
239 uint8_t TM_DS1307_GetYear(void);
240 
241 
247 void TM_DS1307_SetSeconds(uint8_t seconds);
248 
254 void TM_DS1307_SetMinutes(uint8_t minutes);
255 
261 void TM_DS1307_SetHours(uint8_t hours);
262 
268 void TM_DS1307_SetDay(uint8_t day);
269 
275 void TM_DS1307_SetDate(uint8_t date);
276 
282 void TM_DS1307_SetMonth(uint8_t month);
283 
289 void TM_DS1307_SetYear(uint8_t year);
290 
297 
304 
318 
326 void TM_DS1307_DisableOutputPin(void);
327 
328 
334 uint8_t TM_DS1307_Bcd2Bin(uint8_t bcd);
335 
341 uint8_t TM_DS1307_Bin2Bcd(uint8_t bin);
342 
350 uint8_t TM_DS1307_CheckMinMax(uint8_t val, uint8_t min, uint8_t max);
351 
364 /* C++ detection */
365 #ifdef __cplusplus
366 }
367 #endif
368 
369 #endif
370 
uint8_t TM_DS1307_GetMonth(void)
Gets month from DS1307.
void TM_DS1307_SetDateTime(TM_DS1307_Time_t *time)
Sets full date and time to DS1307.
uint8_t seconds
Definition: tm_stm32f4_ds1307.h:154
uint8_t year
Definition: tm_stm32f4_ds1307.h:160
uint8_t date
Definition: tm_stm32f4_ds1307.h:158
TM_DS1307_Result_t TM_DS1307_Init(void)
Initializes DS1307 RTC library.
uint8_t TM_DS1307_CheckMinMax(uint8_t val, uint8_t min, uint8_t max)
Checks for min and max values, which can be stored to DS1307.
void TM_DS1307_SetMinutes(uint8_t minutes)
Sets minutes to DS1307.
void TM_DS1307_SetMonth(uint8_t month)
Sets month to DS1307.
uint8_t TM_DS1307_GetMinutes(void)
Gets minutes from DS1307.
void TM_DS1307_GetDateTime(TM_DS1307_Time_t *time)
Gets full date and time from DS1307.
uint8_t minutes
Definition: tm_stm32f4_ds1307.h:155
uint8_t month
Definition: tm_stm32f4_ds1307.h:159
void TM_DS1307_SetSeconds(uint8_t seconds)
Sets seconds to DS1307.
Definition: tm_stm32f4_ds1307.h:145
Definition: tm_stm32f4_ds1307.h:147
Definition: tm_stm32f4_ds1307.h:169
void TM_DS1307_SetDay(uint8_t day)
Sets day to DS1307.
TM_DS1307_Result_t
Result enumeration.
Definition: tm_stm32f4_ds1307.h:144
Definition: tm_stm32f4_ds1307.h:170
void TM_DS1307_EnableOutputPin(TM_DS1307_OutputFrequency_t frequency)
DS1307 has SQW/OUT pin, which can be enabled in various modes. It can output 32768Hz, 8192Hz, 4096Hz, 1Hz, Low or High state. This is useful if you need interrupts on MCU. 1Hz can be used to increment time by software each time. This is faster than look for date and time each time.
uint8_t TM_DS1307_GetHours(void)
Gets hours from DS1307.
uint8_t TM_DS1307_GetYear(void)
Gets year from DS1307.
Definition: tm_stm32f4_ds1307.h:168
TM_DS1307_OutputFrequency_t
Enumeration for SQW/OUT pin.
Definition: tm_stm32f4_ds1307.h:166
Structure for date/time.
Definition: tm_stm32f4_ds1307.h:153
uint8_t TM_DS1307_Bcd2Bin(uint8_t bcd)
Converts BCD to BIN data.
uint8_t TM_DS1307_GetSeconds(void)
Gets seconds from DS1307.
uint8_t TM_DS1307_Bin2Bcd(uint8_t bin)
Converts BIN to BCD data.
void TM_DS1307_SetHours(uint8_t hours)
Sets hours to DS1307.
Definition: tm_stm32f4_ds1307.h:146
uint8_t TM_DS1307_GetDate(void)
Gets date from DS1307.
Definition: tm_stm32f4_ds1307.h:167
Definition: tm_stm32f4_ds1307.h:172
void TM_DS1307_SetDate(uint8_t date)
Sets date to DS1307.
uint8_t TM_DS1307_GetDay(void)
Gets day in a week from DS1307.
uint8_t hours
Definition: tm_stm32f4_ds1307.h:156
void TM_DS1307_SetYear(uint8_t year)
Sets year to DS1307.
uint8_t day
Definition: tm_stm32f4_ds1307.h:157
Definition: tm_stm32f4_ds1307.h:171
void TM_DS1307_DisableOutputPin(void)
Disables SQW/OUT pin.