Skip to content

rp2040-hal v0.9.0

Compare
Choose a tag to compare
@jannic jannic released this 01 Sep 12:17
· 395 commits to main since this release
8f3e8d0

0.9.0 - 2023-09-01

MSRV

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

Fixed

  • With rust nightly and beta 1.70.0, the multi-core spawn code could get miscompiled
    due to undefined behavior in our code. This was first found in embassy (which
    uses similar code) and reported to us by @Dirbaio. - #612 @ithinuel
  • Fixed embedded-hal 1.0-alpha implementation of SPI - #611 @tomgilligan
  • Fixed the on-target tests - #601 @jannic
  • Fix calculation of MPU RBAR value - #653 @9names @jannic
  • Fix of usb device address mask - #639 @mrdxxm
  • Fix on target tests - #624 @jannic
  • Make sure clocks are initialized before creating a Timer - #618 @jannic
  • Mark ReadTarget and WriteTarget as unsafe - #621 @jannic
  • Fix typo in rom_data.rs - #675 @jlpettersson

Changed

  • multicore: remove the requirement on the closure to never return - #594 @ithinuel
  • Updated dependency on rp2040-boot2 to version 0.3.0. - @jannic
    This doubles the flash access speed to the value used by the C SDK by
    default. So it should usually be safe. However, if you are overclocking
    the RP2040, you might need to lower the flash speed accordingly.
  • Doc: Several improvements have been made to documentation: #607 #597 #661 #633 #632 #629 #679
  • DMA: Check for valid word sizes at compile time - #600 @jannic
  • Use an enum for core identification. - @ithinuel
  • Merge DynPin and Pin into Pin. The type class used in Pin now have a runtime variant allowing for
    the creation of uniform array of pins (eg: [Pin<DynPinId, PinFnSio, PullDown>]). - @ithinuel
  • Fix miss defined ValidPinMode bound allowing any Bank0 pin to be Xip and any Qspi pin to be any
    other function (except for clock). - @ithinuel
  • Use let _ = to ignore result rather than .ok(); as this gives a false sense the result is
    checked. - @ithinuel
  • Reduce code repetition in i2c modules. - @ithinuel
  • Rename DontInvert to Normal. - @ithinuel
  • Prevent the creation of multiple instances of adc::TempSensor - @ithinuel
  • Update dependency on rp2040-pac to 0.5.0 - #662 @jannic
  • Migrate rp2040-hal to edition 2021 - #651 @ithinuel
  • Fix lifetimes and mutability of get_buf and get_buf_mut - #649 @adrianparvino
  • Rename dma::SingleChannel::listen_irq* to enable_irq* - #648 @nilclass
  • Update embedded-hal alpha support to version 1.0.0-alpha.11 - #642 @jannic

Added

  • timer::Timer implements the embedded-hal delay traits and Copy/Clone - #614 @ithinuel @jannic
  • DMA: Allow access to the DMA engine's byteswapping feature - #603 @Gip-Gip
  • Added AdcPin wrapper to disable digital function for ADC operations - @ithinuel
  • Added Sealed supertrait to PIOExt - @ithinuel
  • Added pins to Spi to fix inconsistencies in gpio bounds in peripheral (i2c, uart, spi) - @ithinuel
  • Added sio::Sio::read_bank0() -> u32 to provide single instruction multiple io read.
  • Implement WriteTarget for PWM top and cc registers. - #646 @mBornand
  • Add the ability to initialise the ring oscillator with a known frequency - #640 @hardiesoft
  • Add ADC free-running mode & FIFO - #626 @nilclass
  • Add DMA support for free-running ADC capture - #636 @nilclass
  • Make SPI set_format accept frame format - #653 @NelsonAPenn