Skip to content

Latest commit

 

History

History
370 lines (248 loc) · 16.3 KB

File metadata and controls

370 lines (248 loc) · 16.3 KB

Changelog

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]

0.23.3 - 2026-03-02

Fixed

  • (adc) ADC clearing flags when reading value & make it somewhat consistent (#989)

Other

  • (clippy) New lint doesn't like nesting if in match (#993)

0.23.2 - 2026-02-20

Added

  • (usb) USB allocation rework and simplification (#963)

Fixed

  • (uart) Fix embedded_io::Read::read impl (#983)
  • (dmac) Check+document that the DMAC transfers are smaller than u16::MAX long (#984)
  • (pwm) Fix for off-by-one in get_max_duty() (#959)

0.23.1 - 2025-12-29

Added

  • (i2c) add I2C capabilities to labelled pins for arduino_nano33iot (#975)

0.23.0 - 2025-11-19

Added

  • Add PB02 and PB03 as undocumented I2C pads for SAMD21 (#958)
  • (aes) Updates the cipher dependency.
  • (aes) Updates the aes module:

Changed

  • [breaking] Gate undocumented chip features behind the undoc-features Cargo feature (#956)

Documentation

  • Document newly undoc I2C-capable pins (PB02,PB03) (#960)

Fixed

  • (ci) silence deprecation warning we have no power over (#943)
  • (dmac) DMAC handler now waits for channel to report as disabled (#938)
  • [breaking] Re-add GCLK0 for CAN dependencies (#930)
  • Clippy warning about null pointers in DMAC (#928)
  • Remove GCLK from can::Dependencies (#919)

Other

  • Remove deprecated warning in aes module (#957)
  • fix off-by-one Pwm period (#949)
  • Fix and improve EIC Event control (#944)
  • Document order of calling enable_interrupt for interrupt timer (#942)
  • (ci) Remove explicit link targets from docs

0.22.2 - 2025-06-26

Fixed

  • Maintain accuracy in DPLL frequency math

0.22.1 - 2025-06-22

Other

  • release v0.14.2 (#899)

0.22.0 - 2025-06-20

Added

  • Implement the embedded_hal::delay::DelayNs trait for timer::TimerCounter (#880)

Refactored

  • [breaking] Completely rewrite ADC module with async support (#814)

  • [breaking] Bump MSRV to Rust 1.85.1, update to 2024 edition (#875)

  • [breaking] Refactor IoSet trait using sorted HList (#844).

    SERCOM peripherals no longer need to specify the IoSet inside their Pads type. It is checked automatically and transparently by the compiler. For example,

    - // From this
    - pub type I2cPads = i2c::Pads<I2cSercom, IoSet1, Sda, Scl>;
    + // To this
    + pub type I2cPads = i2c::Pads<I2cSercom, Sda, Scl>;

Fixed

  • Fixes issues with the rtc::Rtc abstraction, and updates it to utilize the modes modules abstractions used by the RTIC RTC monotonics (#845)
  • Relax rules for when DMA channels can be added/removed to/from Spi and SpiFuture (#883)
  • [breaking] Fix bugs with EIC and allow clock provider switching (ATSAMx5x) (#850)

Removed

  • [breaking] Remove deprecated SERCOM items related to older DMA implementations (#875)
  • [breaking] Remvove spi_future module, in favor of async SPI implementations (#875)

Dependencies

  • [breaking] Update defmt to 1.0.1 (#875)
  • [breaking] Update rng-core to 0.9.1 (#875)
  • [breaking] Update embedded-sdmmc to 0.8.1 (#875)

Documentation

  • Improve watchdog start documentation (#881)
  • SERCOM updates following IoSet refactor

0.21.3 - 2025-05-07

Documentation

  • Fix inconsistency in UART+async+DMA docs (#849)

Fixed

  • (i2c) Acknowledge last byte when continuing read (#859)

0.21.2 - 2025-04-22

Added

  • Ability to enable DPLL DCO filter
  • Ability to set DPLL PI filter coefficients
  • Ability to read DFLLRDY status bit

Documentation

  • Expand DFLL48MHz docs

Fixed

  • Dummy items for documentation only
  • Clean up example and docstring warnings
  • Update clock v2 docstring rate types

0.21.1 - 2025-04-12

Added

  • (tc) Add support for TC6/7 on applicable chips (#835)
  • Add ehal 1.0 InputPin impl for ExtInt (#826)

Fixed

  • (tc) Read syncbusy instead of perbufv (#840)

0.21.0 - 2025-01-13

Added

  • [breaking] Add support for RTIC v2.0 monotonic drivers using RTC peripheral (#804)
  • Allow the construction of systick Delay using the clock::v2 API (#803)

Changed

  • Break out non-async specific interrupt functionality out of async_hal module

Refactored

  • Satisfy recent nightly clippy lint additions

0.20.2 - 2024-12-11

Changed

  • (spi) Remove explicit flushes from SpiBus impl

0.20.1 - 2024-12-05

Added

  • (can) Allow the use of any GCLK with the CAN peripheral (#797)

Fixed

  • (pwm) Fix missing sync of timer ENABLE bit (#795)

0.20.0 - 2024-11-28

Added

  • [breaking] Add async support for many peripherals (#635):
    • Supported peripherals: SPI, I2C, UART, DMAC, Timer/counter, external interrupts (EIC)
    • Additional reading

Changed

  • (eic) [breaking] Overhaul the eic API (#635, 792):
    • API now uses a typestate pattern for ExtInt struct instead of individual ExtInt1, ExtInt2, ...
    • ExtInt methods no longer require a reference to the underlying Eic
    • ExtInts take ownership of an EXTINT channel, preventing erroneous reuse
    • Additional reading

Fixed

  • (i2c) Send repeated starts in byte-by-byte I2C transactions

0.19.0 - 2024-11-17

Added

  • (spi) Unlock DMA transfers for SpiBus::transfer_in_place (#780)
  • Make OwnedPeripheral, RxPin and TxPin traits from the can module public (#778)
  • (spi) Add PanicOnRead and PanicOnWrite for simplex SPI transactions (#772)
  • (uart) embedded_io implementations for UART DMA transfers (#772)
  • (i2c) embedded_hal I2c implementation for I2C DMA transfers (#772)
  • (spi) embedded_hal SpiBus implementation for SPI DMA transfers (#772)

Fixed

  • (spi) Only enable SPI receiver when it has RX capability (#772)

Other

  • [breaking] Bump MSRV to Rust 1.77.2

0.18.2 - 2024-10-30

Other

  • updated the following local packages: atsamd11c, atsamd11d, atsamd21e, atsamd21g, atsamd21j, atsamd51g, atsamd51j, atsamd51n, atsamd51p, atsame51g, atsame51j, atsame51n, atsame53j, atsame53n, atsame54n, atsame54p

0.18.1 - 2024-10-25

Fixed

  • Changes to the dmac public API (#764):
    • Make BlockTransferControl and DmacDescriptor structs private instead of #[doc(hidden)]
    • Add getters/setters for level0, level1, level2, and level3 for PriorityLevelMask and RoundRobinMask structs
  • Cleanup newly introduced nightly Clippy lints (#763)

0.18.0 - 2024-10-17

Dependencies

  • [breaking] Upgrade PAC generated code to latest SVD and svd2rust-0.34.1 #756:
    • All peripheral types are now PascalCase
    • All register field accessors are now methods instead of struct members
    • Members of the Peripherals struct are now snake_case

Removed

  • SAMx5x: removed: EnabledOscUlp32kBase::set_calibration #756
  • [breaking]: SAMD51G: removed I2S support (#735)

Fixed

  • Fix samd51j not having i2s support (#735)
  • Fix EIC issue leading to lost interrupts on SAMD11 platforms (#739)
  • Fix I2C transaction to be as continuous as possible according to embedded-hal specification (#741)
  • Fix embedded-hal 0.2 CountDown timer implementation (#749)
  • Fix blocking behaviour for embedded-hal 0.2 SPI writes (#743)
  • Allow configuring USB clock with GenericClockController on atsamd11 (#734)
  • Fix Clippy nightly build errors (#755, #737)
  • Fix build failures for SAMD11 USB (#746)

Refactored

  • Upgrade bitflags and get rid of TryFrom<()> implementations (#746)

v0.17.0

  • Remove unproven Cargo feature
  • Implement embedded-hal 1.0 for GPIO, SPI, I2C, UART, delay and PWM
  • CI/CD pipeline now uses cargo clippy instead of cargo build and denies clippy warnings by default
  • Fix HAL clippy lints
  • Add compile error for combined library and dma features
  • Add dma feature to docs metadata
  • Update the PACs to svd2rust 0.30.2.
  • Fix warnings for thumbv7 targets
  • Update README.md - moves some content to wiki
  • Remove pin pa28 from the d21el target (#717)
  • Fix a pwm configuration for the tc4 on D5x targets (#720)
  • Update to usb-device 0.3.1 (#718)
  • Internal re-organization to support more devices (#728)

v0.16.0

  • Implement Debug, Clone, Copy, Eq, PartialEq for all HAL error types (#691).
  • Replace homebrew time library with fugit (#672)
  • Add defmt feature and derive defmt::Format for error types (#684, obsoletes #522).
  • Add mcan integration (#654)
  • Fix incorrect PAC provided for same51g target
  • Fix NVM User Row Mapping for BOD12 Calibration Parameters
  • Fix ExternalInterrupt implementations for eic
  • Fix for incorrect feature gates for pins of samd21gl chip
  • Fix bug in dmac where software trigger would not work
  • Correct thumbv6 DFLL multiplier to fix USB clock correction
  • Fix failing bsp_pins! invocation with no aliases (#605 fixes #599)
  • Add Advanced Encryption Standard (AES) peripheral support including RustCrypto compatible backend
  • Add embedded-hal InputPin trait to EIC pins
  • Change NVM API
    • Add the ability to modify the user row
    • Add security bit and chip-erase lock management
    • Add escape hatch to access the underlying NVMCTRL PAC
    • Add Nvm::region_lock method
    • Change flash read/write/erase method signatures
      • Nvm::userpage -> Nvm::read_userpage
      • Nvm::write -> Nvm::write_flash
      • Nvm::write_from_slice -> Nvm::write_flash_from_slice
      • Nvm::erase -> Nvm::erase_flash
    • Refactor Nvm::command_sync to be less error-prone
  • Add the missing ADC traits for the SAMD11D

v0.15.1

  • Fix sercom::uart pad definitions to reject pads conflicting with XCK.
  • Add support for L-Variant of the SAMD21D

v0.15.0

  • Rework USB API
  • Remove deprecated modules (#480) :
    • Remove gpio::v1, sercom::v1 module, promote gpio::v2 to gpio and sercom::v2 to sercom.
    • Remove deprecated hal in favour of ehal
    • Remove deprecated target_device in favour of pac
    • Remove deprecated spi_common module
    • Remove deprecated common module
    • Remove deprecated samd51, same51, same53, same54 modules
    • Remove deprecated SpinTimer
    • Provide the necessary fixes to support those changes.
  • Cleanup most clippy lints
  • Update seq_macro and remove replace_with dependencies (#568)
  • Add a bsp_peripherals! macro and fix a bug in bsp_pins! (#515)
  • Updated to 2021 edition, updated dependencies, removed unused dependencies (#562)
  • updated HAL to be compatible with PAC updates due to svd2rust upgrade
  • Add an sercom::v2::i2c API
  • Modified traits to support the Grand Central M4 Express.

v0.14.0

  • Add implementation of InputPin for Interrupt pins
  • Add additional undocumented but valid IOSet for ATSAMD5x/ATSAME5x
  • Update PACs to v0.11.0 (#518)
  • Improve the bsp_pins! macro (#475 & #483)
  • Add undocumented but valid IOSet for ATSAMD5x/ATSAME5x (#506)
  • Fixed the RTC implementation of embedded-hal timer traits to be periodic again (#490)
  • Add Integrity Check Monitor (ICM) abstraction (#480)
  • Add Public Key Cryptography Controller (PUKCC) support (#486)
  • Refactor the SPI module (#467)
  • Bump Rust edition to 2021 and MSRV to 1.56 (#535)
  • Implement rtic::Monotonic for RTC using fugit (#540)
    • RTIC spawn task API will now require fugit::Duration<_, _, _> (aliased at atsamd_hal::rtc::Duration) instead of embedded_time::Duration
  • Add Device Service Unit (DSU), Non-volatile Controller (NVM), SmartEEPROM support (#526)
  • Expand Public Key Cryptography Controller (PUKCC) to support modular exponentiation (RSA) (#544)

Changelog tracking started at v0.13