LibDriver DS1302
Loading...
Searching...
No Matches
driver_ds1302.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_DS1302_H
38#define DRIVER_DS1302_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62typedef enum
63{
67
71typedef enum
72{
73 DS1302_AM = 0x00,
74 DS1302_PM = 0x01,
76
80typedef enum
81{
85
89typedef enum
90{
91 DS1302_CHARGE_ENABLE = (0xA << 4),
92 DS1302_CHARGE_DISABLE = (0x0 << 0),
95 DS1302_CHARGE_2K = (1 << 0),
96 DS1302_CHARGE_4K = (2 << 0),
97 DS1302_CHARGE_8K = (3 << 0),
99
103typedef struct ds1302_time_s
104{
105 uint16_t year;
106 uint8_t month;
107 uint8_t week;
108 uint8_t date;
109 uint8_t hour;
110 uint8_t minute;
111 uint8_t second;
115
119typedef struct ds1302_handle_s
120{
121 uint8_t (*ce_gpio_init)(void);
122 uint8_t (*ce_gpio_deinit)(void);
123 uint8_t (*ce_gpio_write)(uint8_t value);
124 uint8_t (*sclk_gpio_init)(void);
125 uint8_t (*sclk_gpio_deinit)(void);
126 uint8_t (*sclk_gpio_write)(uint8_t value);
127 uint8_t (*io_gpio_init)(void);
128 uint8_t (*io_gpio_deinit)(void);
129 uint8_t (*io_gpio_write)(uint8_t value);
130 uint8_t (*io_gpio_read)(uint8_t *value);
131 void (*debug_print)(const char *const fmt, ...);
132 void (*delay_ms)(uint32_t ms);
133 void (*delay_us)(uint32_t us);
134 uint8_t inited;
136
152
156
163
170#define DRIVER_DS1302_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
171
178#define DRIVER_DS1302_LINK_CE_GPIO_INIT(HANDLE, FUC) (HANDLE)->ce_gpio_init = FUC
179
186#define DRIVER_DS1302_LINK_CE_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->ce_gpio_deinit = FUC
187
194#define DRIVER_DS1302_LINK_CE_GPIO_WRITE(HANDLE, FUC) (HANDLE)->ce_gpio_write = FUC
195
202#define DRIVER_DS1302_LINK_SCLK_GPIO_INIT(HANDLE, FUC) (HANDLE)->sclk_gpio_init = FUC
203
210#define DRIVER_DS1302_LINK_SCLK_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->sclk_gpio_deinit = FUC
211
218#define DRIVER_DS1302_LINK_SCLK_GPIO_WRITE(HANDLE, FUC) (HANDLE)->sclk_gpio_write = FUC
219
226#define DRIVER_DS1302_LINK_IO_GPIO_INIT(HANDLE, FUC) (HANDLE)->io_gpio_init = FUC
227
234#define DRIVER_DS1302_LINK_IO_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->io_gpio_deinit = FUC
235
242#define DRIVER_DS1302_LINK_CS_GPIO_WRITE(HANDLE, FUC) (HANDLE)->io_gpio_write = FUC
243
250#define DRIVER_DS1302_LINK_CS_GPIO_READ(HANDLE, FUC) (HANDLE)->io_gpio_read = FUC
251
258#define DRIVER_DS1302_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
259
266#define DRIVER_DS1302_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
267
274#define DRIVER_DS1302_LINK_DELAY_US(HANDLE, FUC) (HANDLE)->delay_us = FUC
275
279
286
295uint8_t ds1302_info(ds1302_info_t *info);
296
307uint8_t ds1302_init(ds1302_handle_t *handle);
308
319uint8_t ds1302_deinit(ds1302_handle_t *handle);
320
334
347
360
372uint8_t ds1302_get_oscillator(ds1302_handle_t *handle, ds1302_bool_t *enable);
373
386
399
411uint8_t ds1302_set_charge(ds1302_handle_t *handle, uint8_t charge);
412
424uint8_t ds1302_get_charge(ds1302_handle_t *handle, uint8_t *charge);
425
441uint8_t ds1302_read_ram(ds1302_handle_t *handle, uint8_t addr, uint8_t *buf, uint8_t len);
442
458uint8_t ds1302_write_ram(ds1302_handle_t *handle, uint8_t addr, uint8_t *buf, uint8_t len);
459
463
470
484uint8_t ds1302_clock_burst_write(ds1302_handle_t *handle, uint8_t *buf, uint8_t len);
485
499uint8_t ds1302_clock_burst_read(ds1302_handle_t *handle, uint8_t *buf, uint8_t len);
500
514uint8_t ds1302_ram_burst_write(ds1302_handle_t *handle, uint8_t *buf, uint8_t len);
515
529uint8_t ds1302_ram_burst_read(ds1302_handle_t *handle, uint8_t *buf, uint8_t len);
530
534
541
555uint8_t ds1302_set_reg(ds1302_handle_t *handle, uint8_t reg, uint8_t *buf, uint8_t len);
556
570uint8_t ds1302_get_reg(ds1302_handle_t *handle, uint8_t reg, uint8_t *buf, uint8_t len);
571
575
579
580#ifdef __cplusplus
581}
582#endif
583
584#endif
uint8_t ds1302_clock_burst_read(ds1302_handle_t *handle, uint8_t *buf, uint8_t len)
clock burst read
uint8_t ds1302_ram_burst_write(ds1302_handle_t *handle, uint8_t *buf, uint8_t len)
ram burst write
uint8_t ds1302_clock_burst_write(ds1302_handle_t *handle, uint8_t *buf, uint8_t len)
clock burst write
uint8_t ds1302_ram_burst_read(ds1302_handle_t *handle, uint8_t *buf, uint8_t len)
ram burst read
uint8_t ds1302_init(ds1302_handle_t *handle)
initialize the chip
uint8_t ds1302_set_write_protect(ds1302_handle_t *handle, ds1302_bool_t enable)
enable or disable write protect
struct ds1302_time_s ds1302_time_t
ds1302 time structure definition
ds1302_bool_t
ds1302 bool enumeration definition
uint8_t ds1302_deinit(ds1302_handle_t *handle)
close the chip
ds1302_format_t
ds1302 format enumeration definition
struct ds1302_info_s ds1302_info_t
ds1302 information structure definition
uint8_t ds1302_set_oscillator(ds1302_handle_t *handle, ds1302_bool_t enable)
enable or disable the oscillator
uint8_t ds1302_get_write_protect(ds1302_handle_t *handle, ds1302_bool_t *enable)
get write protect status
ds1302_am_pm_t
ds1302 am pm enumeration definition
uint8_t ds1302_get_time(ds1302_handle_t *handle, ds1302_time_t *t)
get the current time
ds1302_charge_t
ds1302 charge enumeration definition
uint8_t ds1302_info(ds1302_info_t *info)
get chip's information
uint8_t ds1302_read_ram(ds1302_handle_t *handle, uint8_t addr, uint8_t *buf, uint8_t len)
read ram
uint8_t ds1302_get_oscillator(ds1302_handle_t *handle, ds1302_bool_t *enable)
get the chip oscillator status
struct ds1302_handle_s ds1302_handle_t
ds1302 handle structure definition
uint8_t ds1302_write_ram(ds1302_handle_t *handle, uint8_t addr, uint8_t *buf, uint8_t len)
write ram
uint8_t ds1302_set_charge(ds1302_handle_t *handle, uint8_t charge)
set charge
uint8_t ds1302_set_time(ds1302_handle_t *handle, ds1302_time_t *t)
set the current time
uint8_t ds1302_get_charge(ds1302_handle_t *handle, uint8_t *charge)
get charge
@ DS1302_BOOL_FALSE
@ DS1302_BOOL_TRUE
@ DS1302_FORMAT_24H
@ DS1302_FORMAT_12H
@ DS1302_PM
@ DS1302_AM
@ DS1302_CHARGE_ENABLE
@ DS1302_CHARGE_DISABLE
@ DS1302_CHARGE_2K
@ DS1302_CHARGE_1_DIODE
@ DS1302_CHARGE_8K
@ DS1302_CHARGE_2_DIODE
@ DS1302_CHARGE_4K
uint8_t ds1302_set_reg(ds1302_handle_t *handle, uint8_t reg, uint8_t *buf, uint8_t len)
set the chip register
uint8_t ds1302_get_reg(ds1302_handle_t *handle, uint8_t reg, uint8_t *buf, uint8_t len)
get the chip register
ds1302 handle structure definition
uint8_t(* ce_gpio_deinit)(void)
uint8_t(* io_gpio_init)(void)
void(* delay_ms)(uint32_t ms)
uint8_t(* sclk_gpio_write)(uint8_t value)
uint8_t(* sclk_gpio_deinit)(void)
uint8_t(* io_gpio_write)(uint8_t value)
void(* debug_print)(const char *const fmt,...)
void(* delay_us)(uint32_t us)
uint8_t(* sclk_gpio_init)(void)
uint8_t(* ce_gpio_init)(void)
uint8_t(* ce_gpio_write)(uint8_t value)
uint8_t(* io_gpio_deinit)(void)
uint8_t(* io_gpio_read)(uint8_t *value)
ds1302 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]
ds1302 time structure definition
ds1302_am_pm_t am_pm
ds1302_format_t format