#embedded-hal-driver #rtc

no-std nxp-pcf8523

A no-std driver for the NXP PCF8523 RTC and calendar module

7 releases (3 stable)

Uses new Rust 2024

2.0.0 Jan 3, 2026
1.1.0 Sep 29, 2025
0.4.0 Sep 26, 2025
0.3.0 Sep 3, 2025
0.1.0 Aug 22, 2025

#417 in Embedded development

MIT/Apache

44KB
876 lines

NXP PCF8523

#![no_std], async-first driver for the NXP PCF8523 RTC and calendar module built on top of the Rust embedded-hal. Supported I2C modes include standard (100 kHz), fast (400 kHz) and fast+ (1_000 kHz), and the module has a fixed I2C address of 0x68.

Usage (blocking)

Enable sync feature in Cargo.toml, then:

use nxp_pcf8523::Pcf8523;
use nxp_pcf8523::datetime::Pcf8523DateTime;

// configure I2C bus at 100, 400 or 1_000 kHz...

let mut pcf8523 = Pcf8523::new(i2c_bus, Pcf8523T {})?;
// 1:41:13PM on 08.21.2025
let dt = Pcf8523DateTime::new(13, 41, 13, 8, 21, 25)?;
pcf8523.set_datetime(dt)?;
pcf8523.start()?;
let now = pcf8523.now()?.timestamp();

Usage (async)

use nxp_pcf8523::Pcf8523;
use nxp_pcf8523::datetime::Pcf8523DateTime;

// configure I2C bus at 100, 400 or 1_000 kHz...

let mut pcf8523 = Pcf8523::new(i2c_bus, Pcf8523T {}).await?;
// 1:41:13PM on 08.21.2025
let dt = Pcf8523DateTime::new(13, 41, 13, 8, 21, 25)?;
pcf8523.set_datetime(dt).await?;
pcf8523.start().await?;
let now = pcf8523.now().await?.timestamp();

Examples

Tests

From the root dir: $ cargo test

Resources

Acknowledgements

License

Dependencies

~210–610KB
~13K SLoC