esp-open-rtos/extras/ds3231/ds3231.h

84 lines
2.5 KiB
C
Raw Normal View History

#ifndef __DS3231_H__
#define __DS3231_H__
#include <stdint.h>
#include <stdbool.h>
#include <time.h>
#define DS3231_ADDR 0x68
#define DS3231_STAT_OSCILLATOR 0x80
#define DS3231_STAT_32KHZ 0x08
#define DS3231_STAT_BUSY 0x04
#define DS3231_STAT_ALARM_2 0x02
#define DS3231_STAT_ALARM_1 0x01
#define DS3231_CTRL_OSCILLATOR 0x80
#define DS3231_CTRL_SQUAREWAVE_BB 0x40
#define DS3231_CTRL_TEMPCONV 0x20
#define DS3231_CTRL_SQWAVE_4096HZ 0x10
#define DS3231_CTRL_SQWAVE_1024HZ 0x08
#define DS3231_CTRL_SQWAVE_8192HZ 0x18
#define DS3231_CTRL_SQWAVE_1HZ 0x00
#define DS3231_CTRL_ALARM_INTS 0x04
#define DS3231_CTRL_ALARM2_INT 0x02
#define DS3231_CTRL_ALARM1_INT 0x01
#define DS3231_ALARM_NONE 0
#define DS3231_ALARM_1 1
#define DS3231_ALARM_2 2
#define DS3231_ALARM_BOTH 3
#define DS3231_ALARM1_EVERY_SECOND 0
#define DS3231_ALARM1_MATCH_SEC 1
#define DS3231_ALARM1_MATCH_SECMIN 2
#define DS3231_ALARM1_MATCH_SECMINHOUR 3
#define DS3231_ALARM1_MATCH_SECMINHOURDAY 4
#define DS3231_ALARM1_MATCH_SECMINHOURDATE 5
#define DS3231_ALARM2_EVERY_MIN 0
#define DS3231_ALARM2_MATCH_MIN 1
#define DS3231_ALARM2_MATCH_MINHOUR 2
#define DS3231_ALARM2_MATCH_MINHOURDAY 3
#define DS3231_ALARM2_MATCH_MINHOURDATE 4
#define DS3231_ALARM_WDAY 0x40
#define DS3231_ALARM_NOTSET 0x80
#define DS3231_ADDR_TIME 0x00
#define DS3231_ADDR_ALARM1 0x07
#define DS3231_ADDR_ALARM2 0x0b
#define DS3231_ADDR_CONTROL 0x0e
#define DS3231_ADDR_STATUS 0x0f
#define DS3231_ADDR_AGING 0x10
#define DS3231_ADDR_TEMP 0x11
#define DS3231_SET 0
#define DS3231_CLEAR 1
#define DS3231_REPLACE 2
#define DS3231_12HOUR_FLAG 0x40
#define DS3231_12HOUR_MASK 0x1f
#define DS3231_PM_FLAG 0x20
#define DS3231_MONTH_MASK 0x1f
bool ds3231_setTime(struct tm *time);
bool ds3231_setAlarm(uint8_t alarms, struct tm *time1, uint8_t option1, struct tm *time2, uint8_t option2);
bool ds3231_getOscillatorStopFlag(bool *flag);
bool ds3231_clearOscillatorStopFlag();
bool ds3231_getAlarmFlags(uint8_t *alarms);
bool ds3231_clearAlarmFlags(uint8_t alarm);
bool ds3231_enableAlarmInts(uint8_t alarms);
bool ds3231_disableAlarmInts(uint8_t alarms);
bool ds3231_enable32khz();
bool ds3231_disable32khz();
bool ds3231_enableSquarewave();
bool ds3231_disableSquarewave();
bool ds3231_setSquarewaveFreq(uint8_t freq);
bool ds3231_getTempInteger(int8_t *temp);
bool ds3231_getTempFloat(float *temp);
bool ds3231_getTime(struct tm *time);
void ds3231_Init(uint8_t scl, uint8_t sda);
#endif