Rust PCF8563 Real-Time Clock Driver
A platform agnostic Rust driver for the NXP PCF8563 real-time clock,
based on the embedded-hal
traits.
NOTE: So far it's only been tested with STM32L4xx-hal.
Based on this RTC driver
This driver allows you to:
- Read and set date and time. See:
get_datetime
andset_datetime
- Set only the time (HH:MM:SS) for clock applications without the calendar function
- Read and set the alarm minutes, hours, day and weekday
- Enable the alarm components separately
- Disable the alarm components separately or all at once
- Set the timer and timer frequency
- Set clock output frequency and enable/disable clock output
- Enable and disable alarm interrupt and timer interrupt
- Read and set various other control functions
TO DO:
- test with other MCUs
- add
get_timer_frequency
function - add
get_timer_interrupt_mode
function - add
get_clkout_frequency
function - add an nRF example
- publish on crates.io
How this driver was won written
The device
The PCF8563 is a CMOS Real-Time Clock (RTC) and calendar optimized for low power consumption. A programmable clock output, interrupt output, and voltage-low detector are also provided. All addresses and data are transferred serially via a two-line bidirectional I2C-bus. Maximum bus speed is 400 kbit/s. The register address is incremented automatically after each written or read data byte.
Provides year, month, day, weekday, hours, minutes, and seconds based on a 32.768 kHz quartz crystal.
- Century flag
- Low backup current
- Programmable clock output for peripheral devices (32.768 kHz, 1.024 kHz, 32 Hz, and 1 Hz)
- Alarm and timer functions
- Open-drain interrupt pin
Datasheet: PCF8563
Usage
To use this driver, import this crate and an embedded_hal
implementation,
then instantiate the device.
Please find additional examples using hardware in this repository: examples
add other examples in the folder (NRF, ideally Linux)
use cortex_m;
use entry;
use panic_halt as _;
use ;
use *;
use Write;
!
Support
For questions, issues, feature requests, and other changes, please file an issue in the github project.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contributing
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.