Releases: rp-rs/rp-hal
Releases · rp-rs/rp-hal
rp2040-hal v0.11.0
0.11.0 - 2024-12-22
MSRV
The Minimum-Supported Rust Version (MSRV) for the next release is 1.79
- Bump MSRV to 1.77, because binary info examples need C-Strings.
- Bump MSRV to 1.79 to enable inline_const, used for static asserts.
Added
- Support for binary info, which is metadata that
picotool
can read from your binary. - #824 @thejpster - Enable transfer size of PIO DMA to be specified - #788 @jsgf
- Implement embedded_io traits for Reader/Writer - #781 @jannic
- Implement
send_break
support - #700 @ithinuel - Support for aborting DMA transfers - #803 @EliseZeroTwo
- Gpio: add PinGroup::set_u32 to allow setting each pin to a different state - #811 @ithinuel @jannic
- Derive
defmt::Format
forRtcError
, fix doc typo - #818 @hfly0 - Implement
embedded_io
ReadReady
andWriteReady
traits for uart - #837 @antbern - Provide arch module on RP2040 - #845 @jannic
- Implement Debug support for the GPIO structures - #861 @robamu
Fixed
- Let UART embedded_io::Write::write return if some bytes were written. - #838 @jannic
- Fix unsoundness in definition of stack for spawning core1. - #874 @jannic
- Fix float_to_fix64 return value & docs for f32 trig functions - #787 @Text-Input
- Fix debugging after halt() - #785 @jannic
- Fix oneshot adc read waiting indefinitely - #799 @mjptree
- Fix several broken
transmute
calls - #805 @jannic - Fix set_low() and set_high() implementation for OutputPin - #807 @martinsp
- Fix some warnings and clippy lints - #802 #813 #849 #865 @jannic
- Fix writing to pin groups - #812 @jannic
- Fixed some UART driver bugs - #841 @thejpster
- spi: remove undesired parameter to set_format - #860 @ithinuel
- Update RP2040-hal example urls - #878 @flinguenheld
Changed
- Simplify ceiling division in delay calculation - #783 @jannic
- Base CountDown on Timer instead of &Timer - #815 @jannic
- UART: Avoid discarding already read bytes on error - #798 @jannic
- Rationalise all the license files and copyright notices. - #829 @thejpster
- spi: move set_format to all states - #831 @ithinuel
- Extract picotool binary info to a separate
rp-binary-info
crate. - #830 @Dirbaio - Restructure repository layout in preparation of RP2350 support - #828 #834 @thejpster
- Update critical-section dependency to version 1.2.0 - #862 @jannic
rp-binary-info v0.1.0
First release of rp-binary-info.
rp2040-hal v0.10.2
rp2040-hal v0.10.1
rp2040-hal v0.10.0
0.10.0 - 2024-03-10
Added
- Implement i2c-write-iter traits - #765 @ithinuel
- Add categories and keywords to Cargo.toml - #769 @rursprung
- Add getters to the various pad overrides - #768 @ithinuel
- Add an example for using embedded-alloc - #306 @umgefahren @jannic
- Introduce async.await i2c implementation - #747 @ithinuel
- Support embedded_hal 1.0.0 - #734 #736 #753 @jannic @jonathanpallant
- Implement defmt formatting and Debug for clocks::InitError - #751 @jannic
- Implement embedded-io Read + Write for UartPeripheral - #727 @Sympatron
- Add from_installed_program with correct shift direction - #715 @jannic
- Add derive(defmt::Format) to i2c::peripheral::I2CEvent - #726 @ithinuel
- Make PIO IRQ IDs into ZSTs - #723 @9ary
- Add RTC examples & expand RealTimeClock & ClockManager capabilities - #676 @ithinuel
- Allow to use ADC free-running mode without FIFO - #739 @jannic
- Add on-chip voltage regulator (VREG) voltage setting function - #757 @AkiyukiOkayasu
- Support for entering and exiting DORMANT mode - #701 @andrewh42
Changed
- Update lower VCO frequency limit according to datasheet update - #773 @ithinuel
- Bump MSRV to 1.75 - #761 @ithinuel
- Move on-target-tests back to the work space - #762 @ithinuel
- Set startup_delay_multiplier of XOSC to 64, and make it configurable.
This should increase compatibility with boards where the oscillator starts up
more slowly than on the Raspberry Pico. - #746 @jannic - Replace asm macros by rust macros - #730 @jannic
- Update usb-device implementation - #584 @ithinuel
- Update rp2040-pac to v0.6.0 and apply required changes - #770 @AkiyukiOkayasu
- Some reorganization of ADC code, making sure that AdcPin can only
be created for pins that can actually be used as ADC channels - #739 @jannic - Breaking change: Clear the input-enable flag of all pins on bank 0 in
Pins::new
.
They will automatically be enabled when setting a pin function, so most users
won't be affected by that change. Notable exception: If you rely on the fact that
PIO can read all pins as input even if the pin is not configured to the PIO function,
you may need to set the input-enable flag manually. - #755 @jannic
Fixed
- Properly report UART break conditions - #712 @jannic
- Ensure that i2c pins have PullUp activated - #708 @jannic
- PWM: Set TOP to 0xfffe by default and fix get_max_duty - #744 @jannic
- Add missing ValidFunction implementation for DynFunction - #738 @ithinuel
- Fix RealTimeClock & UsbBus ownership - #725 @jnthbdn
- Make Spi::free also free up the pins - #719 @SCingolani
- Add safety comments to unsafe rom function - #721 @jannic
- Several cleanups and documentation updates - #716 #718 #720 #743 #763 #767 #776 #777 #778 #779 @jannic @ithinuel
rp2040-hal v0.9.2
rp2040-hal v0.9.1
0.9.1
Added
- Add function to enable multiple PWM slices at the same time - #668 @jlpettersson
- Add uart_is_busy() method - #711 @Rahix
- Re-export fugit - #573 @jannic
- Add function to clear PIO fifos - #670 @ThadHouse
- Implement WriteIter and WriteIterRead - #703 @thejpster
- Implement InputPin for all pin configurations - #689 @jannic
- Provide functions to access watchdog scratch registers - #685 @jannic
- Implement reset() and halt() functions - #613 @jannic
Fixed
- Fix USB PLL's VCO frequency according to updated datasheet - #688 @ithinuel, @jannic
- Fix UART transmit_flushed method - #713 @jannic
- Fix calculation of pll frequency for refdiv != 1 - #691 @vinsynth
Changed
rp2040-hal v0.9.0
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
toNormal
. - @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 toPIOExt
- @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
rp2040-hal v0.8.2
rp2040-hal v0.8.1
0.8.1 - 2023-05-05
Added
- Re-enabled implementations of traits from embedded-hal-nb 1.0.0-alpha.1 - #569 @jannic
- PIO: Added
set_mov_status_config
toPIOBuilder
- #566 @Gip-Gip - memory.x: Added SRAM4 and SRAM5 blocks - #578 @jannic
- DMA: Added memory-to-memory example - #579 @jlpettersson
Changed
- pwm::Slice::has_overflown() returns the raw interrupt flag, without masking/forcing. - #562 @jannic
- Update embedded-hal alpha support to version 1.0.0-alpha.10 - #582 @jannic
- Update embedded-hal-nb alpha support to version 1.0.0-alpha.2 - #582 @jannic
- DMA: Fixed an issue where
check_irq0
would checkirq1
on channel 1 - #580 @jlpettersson - Serial: Fixed possible overflow of the baudrate calculation - #583 @ArchUsr64
- Doc: Several improvements have been made to documentation: #567 #570 #574 #575 #577 #586
- CI: A few improvements have been made to CI pipelines: #555 #587 #588