pcf8563 - Driver for PCF8563 real-time clock/calendar

group pcf8563

ESP-IDF driver for PCF8563 real-time clock/calendar.

Copyright (C) 2020 Ruslan V. Uss unclerus@gmail.com

BSD Licensed as described in the file LICENSE

Defines

PCF8563_I2C_ADDR

Enums

enum pcf8563_clkout_freq_t

Frequency output at pin CLKOUT.

Values:

enumerator PCF8563_DISABLED

CLKOUT output is inhibited and set high-impedance.

enumerator PCF8563_32768HZ

32768 Hz

enumerator PCF8563_1024HZ

1024 Hz

enumerator PCF8563_32HZ

32 Hz

enumerator PCF8563_1HZ

1 Hz

enum pcf8563_timer_clock_t

Timer clock.

Values:

enumerator PCF8563_TIMER_4096HZ

4096 Hz

enumerator PCF8563_TIMER_64HZ

64 Hz

enumerator PCF8563_TIMER_1HZ

1 Hz

enumerator PCF8563_TIMER_1_60HZ

1/60 Hz

enum pcf8563_alarm_flags_t

Flags to setup alarm.

Values:

enumerator PCF8563_ALARM_MATCH_MIN

Alarm when minute matched.

enumerator PCF8563_ALARM_MATCH_HOUR

Alarm when hour matched.

enumerator PCF8563_ALARM_MATCH_DAY

Alarm when day matched.

enumerator PCF8563_ALARM_MATCH_WEEKDAY

Alarm when weekday matched.

Functions

esp_err_t pcf8563_init_desc(i2c_dev_t *dev, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)

Initialize device descriptor.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • port: I2C port

  • sda_gpio: SDA GPIO

  • scl_gpio: SCL GPIO

esp_err_t pcf8563_free_desc(i2c_dev_t *dev)

Free device descriptor.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

esp_err_t pcf8563_set_time(i2c_dev_t *dev, struct tm *time)

Set the time on the RTC.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • time: Pointer to time struct

esp_err_t pcf8563_get_time(i2c_dev_t *dev, struct tm *time, bool *valid)

Get the time from the RTC.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • [out] time: Pointer to time struct

  • [out] valid: Time validity, false when RTC had power failures

esp_err_t pcf8563_set_clkout(i2c_dev_t *dev, pcf8563_clkout_freq_t freq)

Set output frequency on CLKOUT pin.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • freq: Frequency

esp_err_t pcf8563_get_clkout(i2c_dev_t *dev, pcf8563_clkout_freq_t *freq)

Get current frequency on CLKOUT pin.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • [out] freq: Frequency

esp_err_t pcf8563_set_timer_settings(i2c_dev_t *dev, bool int_enable, pcf8563_timer_clock_t clock)

Setup timer.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • int_enable: true for enable interrupt on timer

  • clock: Timer frequency

esp_err_t pcf8563_get_timer_settings(i2c_dev_t *dev, bool *int_enabled, pcf8563_timer_clock_t *clock)

Get timer settings.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • [out] int_enabled: true if timer interrupt is enabled

  • [out] clock: Timer frequency

esp_err_t pcf8563_set_timer_value(i2c_dev_t *dev, uint8_t value)

Set timer register value.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • value: Value to set int timer register

esp_err_t pcf8563_get_timer_value(i2c_dev_t *dev, uint8_t *value)

Get timer register value.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • [out] value: Timer value

esp_err_t pcf8563_start_timer(i2c_dev_t *dev)

Start timer.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

esp_err_t pcf8563_stop_timer(i2c_dev_t *dev)

Stop timer.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

esp_err_t pcf8563_get_timer_flag(i2c_dev_t *dev, bool *timer)

Get state of the timer flag.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • timer: true when flag is set

esp_err_t pcf8563_clear_timer_flag(i2c_dev_t *dev)

Clear timer flag.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

esp_err_t pcf8563_set_alarm(i2c_dev_t *dev, bool int_enable, uint32_t flags, struct tm *time)

Setup alarm.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • int_enable: true to enable alarm interrupt

  • flags: Alarm types, combination of pcf8563_alarm_flags_t values

  • time: Alarm time. Only tm_min, tm_hour, tm_mday and tm_wday are used

esp_err_t pcf8563_get_alarm(i2c_dev_t *dev, bool *int_enabled, uint32_t *flags, struct tm *time)

Get alarm settings.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • [out] int_enabled: true if alarm interrupt is enabled

  • [out] flags: Selected alarm types, combination of pcf8563_alarm_flags_t values

  • [out] time: Alarm time. Only tm_min, tm_hour, tm_mday and tm_wday are used

esp_err_t pcf8563_get_alarm_flag(i2c_dev_t *dev, bool *alarm)

Get alarm flag.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor

  • [out] alarm: true if alarm occurred

esp_err_t pcf8563_clear_alarm_flag(i2c_dev_t *dev)

Clear alarm flag.

Return

ESP_OK on success

Parameters
  • dev: I2C device descriptor