LibDriver DS3231
Loading...
Searching...
No Matches
driver_ds3231.h
Go to the documentation of this file.
1
37
38#ifndef DRIVER_DS3231_H
39#define DRIVER_DS3231_H
40
41#include <stdio.h>
42#include <stdint.h>
43#include <string.h>
44
45#ifdef __cplusplus
46extern "C"{
47#endif
48
54
59
63typedef enum
64{
68
72typedef enum
73{
77
81typedef enum
82{
83 DS3231_AM = 0x00,
84 DS3231_PM = 0x01,
86
95
99typedef enum
100{
104
108typedef enum
109{
113
117
122
135
147
151
156
160typedef struct ds3231_time_s
161{
162 uint16_t year;
163 uint8_t month;
164 uint8_t week;
165 uint8_t date;
166 uint8_t hour;
167 uint8_t minute;
168 uint8_t second;
172
176typedef struct ds3231_handle_s
177{
178 uint8_t (*iic_init)(void);
179 uint8_t (*iic_deinit)(void);
180 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
181 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
182 void (*debug_print)(const char *const fmt, ...);
183 void (*receive_callback)(uint8_t type);
184 void (*delay_ms)(uint32_t ms);
185 uint8_t inited;
187
203
207
214
221#define DRIVER_DS3231_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
222
229#define DRIVER_DS3231_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
230
237#define DRIVER_DS3231_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
238
245#define DRIVER_DS3231_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
246
253#define DRIVER_DS3231_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
254
261#define DRIVER_DS3231_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
262
269#define DRIVER_DS3231_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
270
277#define DRIVER_DS3231_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
278
282
289
298uint8_t ds3231_info(ds3231_info_t *info);
299
310uint8_t ds3231_init(ds3231_handle_t *handle);
311
322uint8_t ds3231_deinit(ds3231_handle_t *handle);
323
334uint8_t ds3231_irq_handler(ds3231_handle_t *handle);
335
349
362
375
387uint8_t ds3231_get_oscillator(ds3231_handle_t *handle, ds3231_bool_t *enable);
388
400uint8_t ds3231_get_status(ds3231_handle_t *handle, uint8_t *status);
401
405
412
424uint8_t ds3231_set_pin(ds3231_handle_t *handle, ds3231_pin_t pin);
425
437uint8_t ds3231_get_pin(ds3231_handle_t *handle, ds3231_pin_t *pin);
438
451
464
477
490
503uint8_t ds3231_get_temperature(ds3231_handle_t *handle, int16_t *raw, float *s);
504
516uint8_t ds3231_set_aging_offset(ds3231_handle_t *handle, int8_t offset);
517
529uint8_t ds3231_get_aging_offset(ds3231_handle_t *handle, int8_t *offset);
530
542uint8_t ds3231_aging_offset_convert_to_register(ds3231_handle_t *handle, float offset, int8_t *reg);
543
555uint8_t ds3231_aging_offset_convert_to_data(ds3231_handle_t *handle, int8_t reg, float *offset);
556
560
567
581
595
609
623
637
651
664
668
675
689uint8_t ds3231_set_reg(ds3231_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
690
704uint8_t ds3231_get_reg(ds3231_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
705
709
713
714#ifdef __cplusplus
715}
716#endif
717
718#endif
uint8_t ds3231_get_32khz_output(ds3231_handle_t *handle, ds3231_bool_t *enable)
get the 32KHz output status
uint8_t ds3231_get_pin(ds3231_handle_t *handle, ds3231_pin_t *pin)
get the chip pin function
uint8_t ds3231_set_aging_offset(ds3231_handle_t *handle, int8_t offset)
set the chip aging offset
uint8_t ds3231_get_temperature(ds3231_handle_t *handle, int16_t *raw, float *s)
get the chip temperature
uint8_t ds3231_set_pin(ds3231_handle_t *handle, ds3231_pin_t pin)
set the chip pin function
uint8_t ds3231_aging_offset_convert_to_data(ds3231_handle_t *handle, int8_t reg, float *offset)
convert a register raw data to a converted aging offset data
uint8_t ds3231_get_aging_offset(ds3231_handle_t *handle, int8_t *offset)
get the chip aging offset
uint8_t ds3231_aging_offset_convert_to_register(ds3231_handle_t *handle, float offset, int8_t *reg)
convert a aging offset value to a register raw data
uint8_t ds3231_set_32khz_output(ds3231_handle_t *handle, ds3231_bool_t enable)
enable or disable the 32KHz output
uint8_t ds3231_set_square_wave(ds3231_handle_t *handle, ds3231_bool_t enable)
enable or disable the square wave output
uint8_t ds3231_get_square_wave(ds3231_handle_t *handle, ds3231_bool_t *enable)
get the square wave output status
uint8_t ds3231_get_alarm_interrupt(ds3231_handle_t *handle, ds3231_alarm_t alarm, ds3231_bool_t *enable)
get the alarm interrupt status
uint8_t ds3231_set_alarm_interrupt(ds3231_handle_t *handle, ds3231_alarm_t alarm, ds3231_bool_t enable)
enable or disable the alarm interrupt
ds3231_alarm2_mode_t
ds3231 alarm2 enumeration definition
uint8_t ds3231_get_alarm1(ds3231_handle_t *handle, ds3231_time_t *t, ds3231_alarm1_mode_t *mode)
get the alarm1 time
ds3231_alarm1_mode_t
ds3231 alarm1 enumeration definition
uint8_t ds3231_set_alarm2(ds3231_handle_t *handle, ds3231_time_t *t, ds3231_alarm2_mode_t mode)
set the alarm2 time
uint8_t ds3231_alarm_clear(ds3231_handle_t *handle, ds3231_alarm_t alarm)
clear the alarm flag
uint8_t ds3231_set_alarm1(ds3231_handle_t *handle, ds3231_time_t *t, ds3231_alarm1_mode_t mode)
set the alarm1 time
uint8_t ds3231_get_alarm2(ds3231_handle_t *handle, ds3231_time_t *t, ds3231_alarm2_mode_t *mode)
get the alarm2 time
@ DS3231_ALARM2_MODE_ONCE_A_MINUTE
@ DS3231_ALARM2_MODE_WEEK_HOUR_MINUTE_MATCH
@ DS3231_ALARM2_MODE_HOUR_MINUTE_MATCH
@ DS3231_ALARM2_MODE_MINUTE_MATCH
@ DS3231_ALARM2_MODE_DATE_HOUR_MINUTE_MATCH
@ DS3231_ALARM1_MODE_WEEK_HOUR_MINUTE_SECOND_MATCH
@ DS3231_ALARM1_MODE_ONCE_A_SECOND
@ DS3231_ALARM1_MODE_MINUTE_SECOND_MATCH
@ DS3231_ALARM1_MODE_SECOND_MATCH
@ DS3231_ALARM1_MODE_HOUR_MINUTE_SECOND_MATCH
@ DS3231_ALARM1_MODE_DATE_HOUR_MINUTE_SECOND_MATCH
ds3231_am_pm_t
ds3231 am pm enumeration definition
uint8_t ds3231_set_oscillator(ds3231_handle_t *handle, ds3231_bool_t enable)
enable or disable the oscillator
uint8_t ds3231_set_time(ds3231_handle_t *handle, ds3231_time_t *t)
set the current time
uint8_t ds3231_get_oscillator(ds3231_handle_t *handle, ds3231_bool_t *enable)
get the chip oscillator status
struct ds3231_time_s ds3231_time_t
ds3231 time structure definition
ds3231_alarm_t
ds3231 alarm enumeration definition
ds3231_format_t
ds3231 format enumeration definition
ds3231_pin_t
ds3231 pin enumeration definition
uint8_t ds3231_info(ds3231_info_t *info)
get chip's information
uint8_t ds3231_irq_handler(ds3231_handle_t *handle)
irq handler
struct ds3231_handle_s ds3231_handle_t
ds3231 handle structure definition
uint8_t ds3231_init(ds3231_handle_t *handle)
initialize the chip
struct ds3231_info_s ds3231_info_t
ds3231 information structure definition
uint8_t ds3231_get_time(ds3231_handle_t *handle, ds3231_time_t *t)
get the current time
ds3231_status_t
ds3231 alarm1 enumeration definition
uint8_t ds3231_deinit(ds3231_handle_t *handle)
close the chip
ds3231_bool_t
ds3231 bool enumeration definition
uint8_t ds3231_get_status(ds3231_handle_t *handle, uint8_t *status)
get the chip status
@ DS3231_PM
@ DS3231_AM
@ DS3231_ALARM_2
@ DS3231_ALARM_1
@ DS3231_FORMAT_24H
@ DS3231_FORMAT_12H
@ DS3231_PIN_INTERRUPT
@ DS3231_PIN_SQUARE_WAVE
@ DS3231_STATUS_ALARM_1
@ DS3231_STATUS_ALARM_2
@ DS3231_BOOL_TRUE
@ DS3231_BOOL_FALSE
uint8_t ds3231_set_reg(ds3231_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
uint8_t ds3231_get_reg(ds3231_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
ds3231 handle structure definition
void(* delay_ms)(uint32_t ms)
void(* receive_callback)(uint8_t type)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_deinit)(void)
ds3231 information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]
ds3231 time structure definition
ds3231_am_pm_t am_pm
ds3231_format_t format