ds1307.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 Freie Universit├Ąt Berlin
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
20 #ifndef DS1307_H
21 #define DS1307_H
22 
23 #include <stdbool.h>
24 #include <time.h>
25 
26 #include "nvram.h"
27 #include "periph/i2c.h"
28 #include "periph/gpio.h"
29 
30 #ifdef __cplusplus
31 extern "C" {
32 #endif
33 
37 #ifndef DS1307_I2C_ADDRESS
38 #define DS1307_I2C_ADDRESS (0x68)
39 #endif
40 
44 #ifndef DS1307_I2C_MAX_CLK
45 #define DS1307_I2C_MAX_CLK (I2C_SPEED_FAST)
46 #endif
47 
51 #define DS1307_NVRAM_MAX_SIZE (56U)
52 
56 typedef struct {
59 } ds1307_t;
60 
64 typedef struct {
68 
72 typedef enum {
80 
90 int ds1307_init(ds1307_t *dev, const ds1307_params_t *params);
91 
101 int ds1307_set_time(const ds1307_t *dev, const struct tm *time);
102 
112 int ds1307_get_time(const ds1307_t *dev, struct tm *time);
113 
124 int ds1307_halt(const ds1307_t *dev);
125 
137 int ds1307_set_sqw_mode(const ds1307_t *dev, ds1307_sqw_mode_t mode);
138 
150 int ds1307_get_sqw_mode(const ds1307_t *dev);
151 
152 #ifdef __cplusplus
153 }
154 #endif
155 
156 #endif /* DS1307_H */
157 
Device descriptor for DS1307 devices.
Definition: ds1307.h:56
SQW: 8.192 kHz.
Definition: ds1307.h:76
Generic non-volatile RAM driver interface.
Set of configuration parameters for DS1307 devices.
Definition: ds1307.h:64
int ds1307_get_time(const ds1307_t *dev, struct tm *time)
Get current RTC time.
OUT: 1.
Definition: ds1307.h:78
Low-level GPIO peripheral driver interface definitions.
SQW: 1kHz.
Definition: ds1307.h:74
unsigned int i2c_t
Default i2c_t type definition.
Definition: i2c.h:108
int ds1307_init(ds1307_t *dev, const ds1307_params_t *params)
Initialize the given DS1307 device.
int ds1307_set_time(const ds1307_t *dev, const struct tm *time)
Set RTC to a given time.
nvram_t nvram
on-chip NVRAM (see nvram.h)
Definition: ds1307.h:58
int ds1307_halt(const ds1307_t *dev)
Halt clock.
Device descriptor for generic NVRAM devices.
Definition: nvram.h:48
ds1307_sqw_mode_t
Modes for the DS1307 square wave / output driver.
Definition: ds1307.h:72
SQW: 4.096 kHz.
Definition: ds1307.h:75
Datatype to represent time.
SQW: 32.768 kHz.
Definition: ds1307.h:77
OUT: 0.
Definition: ds1307.h:73
int ds1307_set_sqw_mode(const ds1307_t *dev, ds1307_sqw_mode_t mode)
Set mode of square wave / output driver.
i2c_t i2c
I2C bus the device is connected to.
Definition: ds1307.h:65
int ds1307_get_sqw_mode(const ds1307_t *dev)
Get current mode of square wave / output driver.
i2c_t i2c
I2C bus the device is connected to.
Definition: ds1307.h:57
i2c_speed_t clk
clock speed to use on the I2C bus
Definition: ds1307.h:66
Low-level I2C peripheral driver interface definition.