# Changelog for embassy-nrf All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## Unreleased - ReleaseDate - bugfix: avoid hang if calling now() before syscounter is enabled on nrf54 ## 0.9.0 - 2025-12-15 - changed: apply trimming values from FICR.TRIMCNF on nrf53/54l - changed: do not panic on BufferedUarte overrun - added: allow direct access to the input pin of `gpiote::InputChannel` - bugfix: use DETECTMODE_SEC in GPIOTE in secure mode - added: allow configuring the idle state of GPIO pins connected to PWM channels - changed: allow configuring the PWM peripheral in the constructor of `SimplePwm` - changed: support setting duty cycles with inverted polarity in `SimplePwm` - added: support setting the duty cycles of all channels at once in `SimplePwm` - changed: updated to nrf-pac with nrf52/nrf53/nrf91 register layout more similar to nrf54 - added: support for nrf54l peripherals: uart, gpiote, twim, twis, spim, spis, dppi, pwm, saadc, cracen - added: support for changing nrf54l clock speed - bugfix: Do not write to UICR from non-secure code on nrf53 - bugfix: Add delay to uart init anomaly fix - changed: `BufferedUarte::read_ready` now uses the same definition for 'empty' so following read calls will not block when true is returned - added: add `gpiote::InputChannel::wait_for_high()` and `wait_for_low()` to wait for specific signal level - changed: `gpiote::InputChannel::wait()` now takes a mutable reference to `self` to avoid interference from concurrent calls - changed: `gpiote::InputChannel::wait()` now ensures events are seen as soon as the function is called, even if the future is not polled - bugfix: use correct flash size for nRF54l - changed: add workaround for anomaly 66 on nrf52 - added: expose PPI events available on SPIS peripheral - added: add basic GRTC time driver support for nRF54L * added: support for nrf54l10 and nrf54l05 * added: expose uicr write functions * added: support for nrf54lm20a - added: support buffered rram for nrf54 ## 0.8.0 - 2025-09-30 - changed: Remove `T: Instance` generic params in all drivers. - changed: nrf54l: Disable glitch detection and enable DC/DC in init. - changed: Add embassy-net-driver-channel implementation for IEEE 802.15.4 - changed: add persist() method for gpio and ppi - added: basic RTC driver - changed: add persist() method for gpio, gpiote, timer and ppi - changed: impl Drop for Timer - added: expose `regs` for timer driver - added: timer driver CC `clear_events` method - changed: Saadc reset in Drop impl, anomaly 241 - high power usage ## 0.7.0 - 2025-08-26 - bugfix: use correct analog input SAADC pins on nrf5340 ## 0.6.0 - 2025-08-04 - changed: update to latest embassy-time-queue-utils ## 0.5.0 - 2025-07-16 - changed: update to latest embassy-usb-driver ## 0.4.1 - 2025-07-14 - changed: nrf52833: configure internal LDO - changed: nrf5340: add more options to clock config - bugfix: clean the SAADC's register while dropping - changed: Remove Peripheral trait, rename PeripheralRef->Peri. - changed: take pins before interrupts in buffered uart init - changed: nrf5340: add wdt support - changed: remove nrf radio BLE - changed: add Blocking/Async Mode param. - bugfix: fix PWM loop count - bugfix: fixing the nrf54l drive configuration bug - changed: add temp driver for nrf5340 - changed: add support for rand 0.9 ## 0.3.1 - 2025-01-09 - bugfix: nrf twim return errors in async\_wait instead of waiting indefinitely - bugfix: fix missing setting input as disconnected. - changed: Modify Uarte and BufferedUarte initialization to take pins before interrupts ([#3983](https://github.com/embassy-rs/embassy/pull/3983)) ## 0.3.0 - 2025-01-06 Firstly, this release switches embassy-nrf to chiptool-based `nrf-pac` implementations and lots of improvements, but also changes to API like peripheral and interrupt naming. Second big change is a refactoring of time driver contract with embassy-time-driver. From now on, the timer queue is handled by the time-driver implementation and `generic-queue` feature is provided by the `embassy-time-queue-utils` crate. Newly required dependencies are following: - embassy-time-0.4 - embassy-time-driver-0.2 - embassy-time-queue-utils-0.1 Add support for following NRF chips: - nRF54L15 (only gpio and timer support) Support for chip-specific features: - RESET operations for nrf5340 - POWER operations (system-off and wake-on-field) for nrf52840 and nrf9160 - nfc: - Adds support for NFC Tag emulator driver - pwm: - Fix incorrect pin assignments - Properly disconnect inputs when pins are set as output - uart: - `try_write` support for `BufferedUarte` - Support for `embedded_io_async` trait - spim: - Support SPIM4 peripheral on nrf5340-app - time: - Generic refactor of embassy-time-driver API - Fix for missed executor alarms in certain occasions (issue #3672, PR #3705). - twim: - Implement support for transactions - Remove support for consecutive Read operations due to hardware limitations ## 0.2.0 - 2024-08-05 - Support for NRF chips: - nrf51 - nrf9151 - Support for new peripherals: - EGU - radio - low-level support for IEEE 802.15.4 and BLE via radio peripheral - Peripheral changes: - gpio: Drop GPIO Pin generics (API break) - pdm: Fix gain register value derivation - pwm: - Expose `duty` method - Expose `pwm::PWM_CLK_HZ` and add `is_enabled` method - Allow specifying OutputDrive for PWM channels - Fix infinite loop - spim: - Reduce trace-level messages ("Copying SPIM tx buffer..") - Support configuring bit order for bus - Allow specifying OutputDrive for SPI pins - Add bounds checks for EasyDMA buffer size - Implement chunked DMA transfers - uart: - Add support for rx- or tx-only BufferedUart - Implement splitting Rx/Tx - Add support for handling RX errors - Miscellaneous changes: - Add `collapse_debuginfo` to fmt.rs macros. - Drop `sealed` mod - nrf52840: Add dcdc voltage parameter to configure REG0 regulator ## 0.1.0 - 2024-01-12 - First release with support for following NRF chips: - nrf52805 - nrf52810 - nrf52811 - nrf52820 - nrf52832 - nrf52833 - nrf52840 - nrf5340 - nrf9160