All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Shorten old buffer when we have extra characters in DMA buffer after a character match.
v0.7.0 - 2022-04-04
- Add delay implementation based on `cortex_m::asm::delay`.
- Implement `RngCore` and `CryptoRng` for the hardware RNG.
- Support analog to digital converters (ADC).
- Support SPI slave mode.
- Add DMA and interrupt support for SPI and ADC peripherals.
- Add support for measuring Vref, Vbat and temperature.
- Add alternate function 0 to GPIO.
- Add preliminary bxCAN support.
- Add more GPIO combinations for I2C and PWM peripherals.
- Add wakeup clock sources to RTC config.
- Support RTC domain backup registers.
- Support I2C on stm32l4x3 devices.
- Support I2C3 peripheral on stm32l4x6 devices.
- Experimental support for the Synopsis USB library.
- Experimental support for USB OTG FS for stm32l4x5 and stm32l4x6 devices.
- Support stm32l4r9 devices.
- Use device-specific features rather than by-peripheral features.
- Use `fugit` duration nd rate units instead of custom
- Use const-generics for GPIO (require Rust 1.51)
- Import I2C implementation from `stm32h7xx-hal` crate.
- Use a `Config` struct for initializing I2C peripherals.
- Check that the clock requested for the low-power timer is enabled.
- Take `clocks` argument by value when setting up low-power timer.
- Use sane low-power timer defaults (LSI, no prescaler).
- Make `LowPowerTimer<_>::set_autoreload()` public.
- Enable SPI2 for all stm32l4x2 devices as some of them have it.
- Target hardfp by default since stm32l4 cores are Cortex-M4F.
- Require typed input when converting from milliseconds to hertz.
- Rework alternate function typestates.
- Use MSI as default/fallback clock source for SYSCLK.
- Use specialized PAC for stm32l412 and stm32l422 devices.
- Add `toggeable` trait to GPIO pins.
- Update `stm32l4` dependency.
- Fix TIM1 PWM frequency computation.
- Fix TIM5 counter width.
- Fix PSC computation off-by-one error.
- Change wait states values according to datasheet.
- Fix incorrect I2C2 on PC0/PC1 on stm32l4x3 devices.
- Swap QSPI pins and remove conflicting/wrong implementations.
- Add power on GPIOG pins.
- Support 0 byte writes on I2C.
v0.6.0 - 2020-12-11
- USB driver for `stm32l4x2` and `stm32l4x3` devices.
- USART3 and UART4, with dma support.
- Support for GPIOF and GPIOG.
- USB driver examples.
- Support for external pin interrupts (EXTI).
- Implement hardware flow control for serial.
- Support for CRC peripheral.
- Implement `core::hash::Hasher` for the CRC peripheral.
- Support for serial framing.
- Support for Half-Duplex Serial.
- Support for timers 5 and 6.
- Bump stm32l4 to `0.11.0`.
- Support for QSPI.
- Support for RTC alarms.
- Support for the Independant Watch Dog Timer.
- VSCode configurations.
- Added signature module.
- Reworked clock control with RCC.
- Rework the DMA API.
- Rework the FLASH programming API.
- Rework GPIO output to support setting Speed, Pullups and drain functionality.
- Switched to Github actions.
- Re-add support for GPIOD & GPIOE.
- Fix enable bits for PWM.
- Fix clearing serial error flag bits.
- I2C 7bit adressing shift.
- Fix the systick delay to support delays greater than `1 << 24`
- Clean up examples, and Deps.
v0.5.0 - 2019-09-02
- DMA2
- Serial ports now use a config, instead of just the baudrate.
- Upgraded embedded-hal, gpio method signitures are now fallible.
- Bumped cortex-m.
v0.4.0 - 2019-05-08
- PWM support for select timers
- More GPIO support
- More debug and Eq derives where appropriate
- Updated to stm32-rs v0.7.0 which fixes [#32](https://github.com/stm32-rs/stm32l4xx-hal/issues/32) for stm32l4x5 and stm32l4x6 devices
v0.3.6 - 2019-02-11
- GPIOE Support
- MSI Clock support
- The TSC `aquire` did not reset the channel select register after aquisition
- The default charge high and charge low time for the TSC were fixed at the max, this now has a sane default and can be configured with the TSC config.
- HCLK and PCKL rcc prescaling, although setting the right clocks, the value in `Clocks` was wrong, this now correctly calculated.
v0.3.5 - 2019-01-07
- Rng implementation
- GPIOE support
- `fmt::Write` for serial Tx
- LSI is no longer enabled by default, requires `lsi(true)` when configuring the rcc
v0.3.4 - 2018-12-31
- Hardcoded stm32 device crate in `i2c`
- TSC clear flag API
v0.3.3 - 2018-12-12
- Bumped stm32l4 to v0.5.0
- Fixed timer start macro
v0.3.2 - 2018-12-12
- DMA buffers now use as-slice
- This crate now compiles on stable (1.31)!
v0.3.1 - 2018-12-10
- I2C support using embedded-hal traits
- Added GPIO input embedded-hal traits
v0.3.0 - 2018-11-21
- Move device selection (l4x1, l4x2, etc.) behind feature, in line with stm32f4xx-hal.
- Change crate name accordingly to `stm32l4-hal`.
- Update crate dependencies.
v0.2.7 - 2018-11-21
- EOL the stm32l432xx-hal crate
v0.2.6 - 2018-11-03
- TSC flags not getting cleared by the `aquire` tsc method.
v0.2.5 - YANKED
v0.2.4 - 2018-10-32
- Updated examples and bumped dependancies.
v0.2.3 - 2018-10-06
- RCC configuration for higher clocks, using the wrong multiplyier reg caused issue with time sensative peripherals
- New TSC Configuration, to set the prescaler and max count value.
v0.2.2 - 2018-08-25
- Fixed documentation link in readme.
v0.2.1 - 2018-08-25
- Timer implementations for timer15 & timer 16
- Two new TSC API's, `read` & `read_unchecked`
- `read` checks the supplied pin is the pin we are reading
- `read_unchecked` returns the contents of the count register
- Channel pins do not require Schmitt trigger hysteresis
v0.2.0 - 2018-08-21
- GPIO type signature changed to allow pin state and alterante function to be encoded in the pin type.
- Touch sense controller peripheral support
- Easy to use blocking API with interrupt support too
v0.1.1 - 2018-08-13
- Idle line detection for Usart Rx
- Idle Line Interrupt listening
- DMA Circular peeking, now correctly resets `consumed_offset`
- Initial release