Skip to content

Releases: rp-rs/rp-hal

rp2040-hal v0.7.0

11 Dec 09:37
4c8e16a
Compare
Choose a tag to compare

0.7.0 - 2022-12-11

MSRV

The Minimum-Supported Rust Version (MSRV) for this release is 1.62

Changed

  • Fixed: First frame is getting lost on a USB-CDC device - @MuratUrsavas
  • Moved BSP crates to separate repo at https://github.com/rp-rs/rp-hal-boards - @jannic
  • Avoid losing USB status events by reading ints rather than sie_status in poll - @ithinuel
  • Allow setting clock divisors on running state machines - @jannic
  • Remove unnecessary mut from static mut LOCK_OWNER: AtomicU8 in critical section impl - @zachs18
  • Update dependency on rp2040-pac to 0.4.0 - @jannic
  • Update embedded-hal alpha support to version 1.0.0-alpha.9 - @jannic
    (Non-blocking traits were moved to embedded-hal-nb, which is not yet supported)
  • Implement UartConfig::new constructor method - @jannic
  • Deprecate uart::common_configs - @jannic
  • Fix spelling error in UART error discarded field - @Sizurka
  • Fix contents of UART error discarded field - @Sizurka
  • Fix watchdog counter load value - @Sizurka
  • Fix concurrent accesses to sm_execctrl and sm_instr when sideset isn't optional - @ithinuel
  • pio: Move interrupt related (en|dis)abling/forcing methods to the statemachine - @ithinuel
  • Mark Timer & Alarm* Send and Sync - @ithinuel
  • The feature critical-section-impl is now enabled by default from the BSP crates - @jannic
  • Simplify signature of Alarm::schedule, removing generic parameter - @ithinuel
  • USB: Use the dedicated write_bitmask_* functions - @ithinuel

Added

  • Add docs.rs metadata - @icedrocket
  • Implement embedded-hal aplha SPI traits - @ptpaterson
  • Add derive(Debug) and derive(defmt::Format) to error types - @9names
  • Add ability to modify installed PIO program wrap bounds - @davidcole1340
  • Add rtic-monotonic support for timer & alarms (feature gated) - @ithinuel
  • Add SPI is_busy function - @papyDoctor
  • Add set_fifos/set_rx_watermark/set_tx_watermark - @papyDoctor
  • Add a method to allow setting the PIO's clock divisor without floats - @ithinuel
  • Use TimerInstant in Timer::GetCounter & add Alarm::schedule_at - @ithinuel

Removed

  • Removed support for critical-section 0.2 (was already deprecated) - @jannic

rp2040-hal v0.6.1

10 Dec 20:58
76b1426
Compare
Choose a tag to compare

0.6.1 - 2022-11-30

Changed

  • Upgraded dependency on critical-section 0.2 to 0.2.8 - @jannic
    (There is also a dependency on version 1.0.0)
  • Remove critical-section impl for version 0.2 - @jannic
    Both 0.2.8 and 1.x use the same symbols internally to implement the
    critical sections, so one impl is sufficient, and having both causes
    compilation errors

rp2040-hal v0.6.0

26 Aug 09:32
8d52f37
Compare
Choose a tag to compare

[0.6.0] - 2022-08-26

Added

  • Documentation Example for the bsp_pin! macro - @hmvp
  • Timer: Documentation & doc examples for Timers - @9names
  • Add suspend, resume and remote wakeup support. - @ithinuel & @jannic
  • rp2040-e5 feature enabling the workaround for errata 5 on the USB device peripheral. - @ithinuel
  • NonPwmPinMode for gpio::Disabled - @FlorianUekermann
  • RAM-based interrupt vector tables - @9names
  • Support for critical-section 1.0.0.
    Critical-section 0.2 is still supported (ie. a custom-impl is provided, compatible
    with the 1.0.0 implementation), to avoid a breaking change. It will be removed
    later. - @jannic
  • Add support for the Interpolator. @fenax

Changed

  • Update dev dependencies on cortex-m-rtic to 1.1.2 - @jannic
  • Use correct interrupt names in timer::alarms - @hmvp
  • Update embedded-hal alpha support to version 1.0.0-alpha.8 - @jannic
  • Fix PIO rx fifo status - @jannic
  • Implement From<&SomeClock> for Hertz instead of From<SomeClock> for Hertz
    for the clocks in rp2040_hal::clocks. - @jannic
  • Fix i2c example using the wrong clock. - @jannic
  • Fix duty cycle handing on disabled pwm channels. - @jannic
  • GPIO IRQ example: add check for interrupt source - @9names
  • Align USB synchronisation requirements with the manual & pico-sdk - @ithinuel
  • Update dependencies on usb-device to 0.2.9 - @ithinuel
  • Use wfi in otherwise empty infinite loops in examples. - @jannic
  • Use generic bootloader in examples - @jannic
  • Use rp2040-hal's entry function. - @ithinuel
  • Migrate from embedded-time to fugit - @ithinuel
  • Fix PIO's set_pins and set_pindirs when out_sticky is set. - @jannic & @ithinuel

Removed

  • Unnecessary cortex_m::interrupt::free in timer.rs - @jannic
  • Unused embassy-traits deps - @9names

rp2040-hal v0.5.0

14 Jun 08:14
1574a36
Compare
Choose a tag to compare

[0.5.0] - 2022-06-13

MSRV

The Minimum-Supported Rust Version (MSRV) for this release is 1.61

Added

  • RP2040 specific #[entry] macro that releases spinlocks - @jannic
  • Start multiple state machines in sync with each other - @astraw
  • Unsafe fn for freeing all spinlocks when you can't use the RP2040 entry macro (eg RTIC) - @9names
  • Optional feature for enabling defmt formatting for i2c errors - @ithinuel
  • Accessor for getting the offset of an installed PIO program - @fenax

Changed

  • Use thread send safe UART* marker when splitting, improves UART ergonmics - @marius-meissner
  • Improve performance for hardware division instrinsics. Internal intrinsics cleanup - @Sizurka
  • Provide a better alarm abstraction - @ithinuel
  • Update Multicore::spawn to be able to take a closure without requiring alloc.
    Improve Multicore ergonomics and add example for how to use new API - @Liamolucko
  • Allow PIO program to be 32 instructions long, was previously limited to 31 - @jannic
  • Fix Typos - @mqy, @danbev
  • Replace generic pio::Tx::write with write_u8_replicated, write_u16_replicated, and update
    write to take a u32. The generic version was too easy to misuse. - @9names

Removed

rp2040-hal v0.4.0

11 Mar 13:39
b81955c
Compare
Choose a tag to compare

Added

  • ROM function caching
  • ROM version lookup function
  • Compiler intrinsics for ROM functions
  • Compiler intrinsics for hardware divider
  • Document bsp_pins! macro
  • UART IRQ examples
  • PIO side-set example
  • Stopped PIO state machines can change their clock divider
  • Added HAL IRQ example

Changed

  • Rewrite UART driver to own its pins
  • Improve UART defaults
  • Fix repeated-read in i2c embassy driver
  • Fix bug in i2c peripheral state machine
  • Fix race condition in alarm
  • Fix safety bugs in hardware divider
  • Enable watchdog reset trigger bits when watchdog enabled
  • Update spinlocks to use new PAC API
  • Use generics to improve spinlock implementation
  • Update critical_section to use new spinlock implementation
  • Update embedded-hal alpha support to version 1.0.0-alpha.7
  • Avoid 64-bit division in clock calculations
  • Update pio and pio-proc to 0.2.0

rp2040-hal v0.3.0

20 Dec 20:30
c83a31a
Compare
Choose a tag to compare

MSRV

The Minimum-Supported Rust Version (MSRV) for this release is 1.54.

Added

  • A README!
  • Implementation of the critical-section API
  • Embedded HAL 1.0-alpha6 support
  • I²C Controller and Peripheral support
  • Multi-core support, including spin-locks and SIO FIFO
  • RTC support
  • USB Device support
  • Timer support
  • PIO support
  • Implementation of rng_core::RngCore for RingOscillator
  • ADC example
  • GPIO Interrupt support
  • Multi-core FIFO example
  • PIO LED Blinky example
  • ROM Functions example
  • SPI example
  • Watchdog example
  • ADC documentation
  • Lots of bug fixes :)

Changed

  • Modified PIO API for better ergonomics
  • Updated PAC to 0.2.0
  • Exported common driver structs from top-level (e.g. it's now Sio, not sio::Sio)

rp2040-hal v0.2.0

14 Aug 10:17
Compare
Choose a tag to compare
  • Updated version with support for:
    • Ring Oscillator
    • Crystal Oscillator
    • Plls
    • Watchdog
    • Clocks
    • GPIO
    • PWM
    • ADC
    • SPI
    • I²C
    • Resets
    • UART
    • Hardware divide/modulo