embassy/embassy-rp/CHANGELOG.md
Matt Johnston 8f10e3638d rp/pio: Add onewire strong pullups, parasite power
DS18B20 sensors require a strong pullup to be applied for the duration
of the temperature conversion, within 10us of the command. The rp2xxx
pins have sufficient drive strength to use as the pullup (no external
mosfet needed).

Add a new write_bytes_pullup() that will apply the pullup after
bytes are written. Existing read_bytes()/write_bytes() has no change to
onewire timing.

A pio_onewire_parasite example reads multiple sensors individually,
applying the strong pullup.
2025-09-14 16:54:14 +08:00

6.6 KiB

Changelog for embassy-rp

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased - ReleaseDate

  • Add PIO SPI
  • Add PIO I2S input
  • Add PIO onewire parasite power strong pullup

0.8.0 - 2025-08-26

0.7.1 - 2025-08-26

  • add i2c internal pullup options (#4564)

0.7.0 - 2025-08-04

  • changed: update to latest embassy-time-queue-utils

0.6.0 - 2025-07-16

  • update to latest embassy-usb-driver

0.5.0 - 2025-07-15

  • Fix wrong funcsel on RP2350 gpout/gpin (#3975)
  • Fix potential race condition in ADC::wait_for_ready (#4012)
  • flash: rename BOOTROM_BASE to BOOTRAM_BASE (#4014)
  • Remove Peripheral trait & rename PeripheralRef to Peri (#3999)
  • Fix watchdog count on RP235x (#4021)
  • I2C: ensure that wakers are registered before checking status of wait_on helpers (#4043)
  • Modify Uarte and BufferedUarte initialization to take pins before interrupts (#3983)
  • uart: increase RX FIFO watermark from 1/8 to 7/8 (#4055)
  • Add spinlock_mutex (#4017)
  • Enable input mode for PWM pins on RP235x and disable it on drop (#4093)
  • Add impl rand_core::CryptoRng for Trng (#4096)
  • pwm: enable pull-down resistors for pins in Drop implementation (#4115)
  • Rewrite PIO onewire implementation (#4128)
  • Implement RP2040 overclocking (#4150)
  • Implement RP235x overclocking (#4187)
  • trng: improve error handling (#4139)
  • Remove <T: Instance> from Uart and BufferedUart (#4155)
  • Make bit-depth of I2S PIO program configurable (#4193)
  • Add the possibility to document bind_interrupts structs (#4206)
  • Add missing Debug and defmt::Format derives for ADC & AnyPin (#4205)
  • Add rand-core v0.9 support (#4217)
  • Update embassy-sync to v0.7.0 (#4234)
  • Add compatibility with ws2812 leds that have 4 addressable lights (#4236)
  • Implement input/output inversion (#4237)
  • Add multicore::current_core API (#4362)

0.4.0 - 2025-03-09

  • Add PIO functions. (#3857)
    The functions added in this change are get_addr get_tx_threshold, set_tx_threshold, get_rx_threshold, set_rx_threshold, set_thresholds.
  • Expose the watchdog reset reason. (#3877)
  • Update pio-rs, reexport, move instr methods to SM. (#3865)
  • rp235x: add ImageDef features. (#3890)
  • doc: Fix "the the" (#3903)
  • pio: Add access to DMA engine byte swapping (#3935)
  • Modify BufferedUart initialization to take pins before interrupts (#3983)

0.3.1 - 2025-02-06

Small release fixing a few gnarly bugs, upgrading is strongly recommended.

  • Fix a race condition in the time driver that could cause missed interrupts. (#3758, #3763)
  • rp235x: Make atomics work across cores. (#3851)
  • rp235x: add workaround "SIO spinlock stuck after reset" bug, same as RP2040 (#3851)
  • rp235x: Ensure core1 is reset if core0 resets. (#3851)
  • rp235xb: correct ADC channel numbers. (#3823)
  • rp235x: enable watchdog tick generator. (#3777)
  • Relax I2C address validity check to allow using 7-bit addresses that would be reserved for 10-bit addresses. (#3809, #3810)

0.3.0 - 2025-01-05

  • Updated embassy-time to v0.4
  • Initial rp235x support
  • Setup timer0 tick when initializing clocks
  • Allow separate control of duty cycle for each channel in a pwm slice by splitting the Pwm driver.
  • Implement embedded_io::Write for Uart<'d, T: Instance, Blocking> and UartTx<'d, T: Instance, Blocking>
  • Add set_pullup() to OutputOpenDrain.

0.2.0 - 2024-08-05

  • Add read_to_break_with_count
  • add option to provide your own boot2
  • Add multichannel ADC
  • Add collapse_debuginfo to fmt.rs macros.
  • Use raw slices .len() method instead of unsafe hacks.
  • Add missing word "pin" in rp pwm documentation
  • Add Clone and Copy to Error types
  • fix spinlocks staying locked after reset.
  • wait until read matches for PSM accesses.
  • Remove generics
  • fix drop implementation of BufferedUartRx and BufferedUartTx
  • implement embedded_storage_async::nor_flash::MultiwriteNorFlash
  • rp usb: wake ep-wakers after stalling
  • rp usb: add stall implementation
  • Add parameter for enabling pull-up and pull-down in RP PWM input mode
  • rp: remove mod sealed.
  • rename pins data type and the macro
  • rename pwm channels to pwm slices, including in documentation
  • rename the Channel trait to Slice and the PwmPin to PwmChannel
  • i2c: Fix race condition that appears on fast repeated transfers.
  • Add a basic "read to break" function