Skip to content

Releases: modm-io/modm

2024q3 release

01 Oct 20:27
Compare
Choose a tag to compare

This release covers everything from 2024-07-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.

Breaking changes:

  • Deprecate modm::allocator::Dynamic in favor of std::allocator.
  • STM32 FDCAN queue mode is switched from queue to FIFO mode.

Features:

  • Add empty polyfill for fibers when module is not selected.
  • Replace modm containers implementation with libstdc++.
  • Add support for a custom allocator in the modm:ui module.
  • Add IWDG driver for STM32H7.
  • Add FDCAN driver for STM32H7.
  • Support for STM32C0 devices.

Integrated Projects:

  • ETL upgraded to v20.38.17.
  • STM32F3 headers upgraded to v2.3.8.
  • STM32F7 headers upgraded to v1.2.9.
  • STM32F4 headers upgraded to v2.6.10.
  • STM32G4 headers upgraded to v1.2.4.
  • STM32C0 headers upgraded to v1.2.0.
  • STM32U0 headers added at v1.1.0.

Fixes:

  • Fix modm::GraphicDisplay::clearPixel() implementation.
  • Fix wrong ADC channel selection on STM32C0/G0/F0.
  • Fix fiber poll timeout when yield takes too long.
  • Fix infinite loop in fiber poll when duration is 0.
  • Ensure fiber poll minimum duration is 1µs/1ms.
  • Add missing device definitions to CMSIS-DSP headers.
  • Fix zero initialization of FDCAN message RAM leading to wrong CAN filters.

New development boards:

  • NUCLEO-C031C6 as modm:board:nucleo-c031c6.

Known bugs:

  • STM32F723 is missing support to use built-in USB HS PHY. See #1171.
  • OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
  • Compiling Protothreads and Resumable Functions is broken on GCC13. See #1012.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.
  • STM32F7: D-Cache not enabled by default. See #485.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #1209 -> 2024q3.

Detailed changelog

2024-09-26: Add support for STM32C0

PR #1188 -> a7cfe65.
Tested in hardware by @Apehaenger and @salkinium.

2024-09-25: Add FDCAN driver for STM32H7

Queue Mode will send CAN frames in priority order according to their
arbitration ID. This is inconsistent with modm's software-managed queue
which is a strict FIFO. To make the behavior of the driver consistent
with an end-to-end FIFO order, we disable Queue Mode by default.

There is a new lbuild option, tx_hw_queue_mode, which allows the user
to opt back into the old behavior if desired. This is mostly intended
for if they also set buffer.tx to zero and optionally increase
message_ram.tx_fifo_elements.

PR #1206 -> 3614dc0.
Tested in hardware by @WasabiFan and @chris-durand.

2024-08-22: Add IWDG driver for STM32H7

PR #1204 -> 5ae26dd.
Tested in hardware by @salkinium.

2024-08-13: Fix fiber poll functions

PR #1196 -> 6a6802a.
Tested in hardware by @salkinium.

2024-08-08: Add custom allocator to modm:ui module

Add support for custom allocators to all related classes.

PR #1184 -> 31bbf48.
Tested by @MatthewMArnold.

2024-07-21: Replace modm containers with libstdc++

Backwards compatible wrapping of standard containers:

  • modm::Pair -> std::pair.
  • modm::DynamicArray -> std::vector.
  • modm::DoublyLinkedList -> std::list.
  • modm::LinkedList -> std::list.

PR #1195 -> 5fcd015.
Tested by @chris-durand.

2024-07-07: Fiber polyfill

Empty implementations for modm::this_fiber::yield() and
modm::this_fiber::get_id().

PR #1172 -> 6a6802a.
Tested in hardware by @salkinium.

2024q2 release

01 Jul 17:44
Compare
Choose a tag to compare

This release covers everything from 2024-04-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.

Breaking changes:

  • The STM32 UART peripheral moves the buffer configuration from lbuild to C++.
  • Renames modm::fiber::yield() to modm::this_fiber::yield().
  • Renames modm::fiber::sleep() to modm::this_fiber::sleep_for().

Features:

  • Added :platform:cortex-m:linkerscript.flash_reserved option to reserve space
    at the end of FLASH.
  • Add DMA capabilities to STM32F0/G0 ADC.
  • Implement full atomics interface for AVR and STM32.
  • Implement C++ concurrency interface for fibers.
  • Add fiber stack overflow detection on ARMv8-M.

Integrated Projects:

  • nlohmann/json added at v3.11.3.

Fixes:

  • Communicate :platform:cortex-m:linkerscript.flash_offset to dfu-util tool.
  • Fix flash section erasing on STM32G4.
  • Fix static initialization guard implementation.

New device drivers:

  • AS5600 absolute encoder driver as modm:driver:as5600.

Known bugs:

  • STM32F723 is missing support to use built-in USB HS PHY. See #1171.
  • OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
  • Compiling Protothreads and Resumable Functions is broken on GCC13. See #1012.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.
  • STM32F7: D-Cache not enabled by default. See #485.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #1175 -> 2024q2.

Detailed changelog

2024-06-24: Move buffer configuration from lbuild to C++ for STM32

The buffer configuration is now implemented in C++.
Please replace any modm::platform::U(s)artN type with:

using namespace modm::platform;
// Using only hardware buffers for Tx and Rx (both 1 symbol)
using UartN = BufferedUart<U(s)artHalN>;
// using only TX software buffer
using UartN = BufferedUart<U(s)artHalN, UartTxBuffer<512>>;
// using only RX software buffer
using UartN = BufferedUart<U(s)artHalN, UartRxBuffer<256>>;
// using both TX and RX software buffers
using UartN = BufferedUart<U(s)artHalN, UartTxBuffer<512>, UartRxBuffer<256>>;

PR #1156 -> cf7769b.
Tested in hardware by @kapacuk and @salkinium.

2024-06-17: Add AS5600 absolute encoder driver

PR #1166 -> 55c88ba.
Tested in hardware by @TomSaw.

2024-06-16: Add fiber stack overflow detection on ARMv8-M

PR #1168 -> 6be3199.
Tested in hardware by @salkinium.

2024-05-20: Implement concurrency interface for fibers

PR #1026 -> 39a9f4d.
Tested in hardware by @salkinium.

2024-05-20: Implement all atomics for AVR and STM32

PR #1164 -> 8a924f9.
Tested in hardware by @salkinium.

2024-05-19: Add DMA capabilities to STM32F0/G0 ADC

PR #1136 -> 901a3dc.
Tested in hardware by @victorandrehc.

2024-05-19: Fix STM32G4 flash erase

PR #1146 -> 71becdc.
Tested in hardware by @hshose.

2024q1 release

01 Apr 23:44
Compare
Choose a tag to compare

This release covers everything from 2024-01-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.

Breaking changes:

  • TinyUSB v0.16 implements a DFU class in addition to a DFU runtime class.
    Therefore the modm:tinyusb:config:device.dfu option was renamed to
    device.dfu_rt to align with the TinyUSB naming.
  • TinyUSB v0.16 improves support for using two USB ports at the same time. A
    differnt port can now be chosen for device and host classes. In addition, the
    HS peripheral may be operated in FS mode, therefore the modm:tinyusb:speed
    option was renamed to modm:tinyusb:max-speed since it now has a different
    meaning.
  • Remove the separate hosted-rpi Raspberry Pi target in favor of plain
    hosted-linux. Its GPIO implementation based on wiringPi is removed.

Features:

  • Add USB High-Speed support to all development boards with ULPI interface.
  • Catch accidental use of Newlib's printf implementation.
  • Fibers are now implemented for ARM64, albeit only on Linux and macOS.
  • Add BDMA driver for STM32H7.
  • DMA support for ADC driver on STM32F3 and STM32G4.
  • Support for ADC conversion sequences on STM32F3 and STM32G4.
  • Add Prescaler+Counter constexpr algorithm and use it in Iwdg::initialize().
  • Add PWM modes, break input and comparator to Timer driver on STM32.
  • CMake generator now works with multiple lbuild repositories.
  • Allow setting I2C interrupt priority for STM32 and SAMx7x.

Integrated Projects:

  • TinyUSB upgraded to v0.16.0.
  • STM32G0 headers upgraded to v1.4.4.
  • STM32G4 headers upgraded to v1.2.3.
  • STM32H5 headers upgraded to v1.2.0.
  • STM32H7 headers upgraded to v1.10.4.
  • STM32L5 headers upgraded to v1.0.6.
  • STM32U5 headers upgraded to v1.4.0.
  • STM32WB headers upgraded to v1.12.1.

Fixes:

  • Fix Rcc::enable() for STM32H7 comparator.
  • Fix Timer 23 and 24 counter size on STM32H7.
  • Fix ADC asynchronous clock on STM32H7.
  • Fix DMA enable on STM32G0.
  • Fix reconfiguring DMAMUX requests.
  • Fix ADC sampling time configuration on STM32F3.
  • Separate ULPI clock from USB clock on STM32 to allow using OTGHS in FS mode.
  • Stack alignment underneath promise in fiber tasks.
  • Move Iwdg driver to modm::platform::Iwdg namespace.
  • Fix flash page size for large F103, F105 and F107 devices.

New development boards:

  • DISCO-F401VC as modm:disco-f401vc.
  • NUCLEO-G070RB as modm:nucleo-g070rb.
  • DISCO-F411VE as modm:disco-f411ve.

New device drivers:

  • AS5047 absolute encoder driver as modm:driver:as5047.

Known bugs:

  • OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
  • Compiling Protothreads and Resumable Functions is broken on GCC13. See #1012.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.
  • STM32F7: D-Cache not enabled by default. See #485.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #1153 -> 2024q1.

Detailed changelog

2024-03-15: Allow I2C interrupt priority to be set

PR #1143 -> 734de07 and PR #1148 -> e1d8a17.

2024-03-09: Adapt CMake generator to multiple lbuild repositories

PR #1140 -> 1a89fbe.
Tested in hardware by @Javask.

2024-03-08: Extend Timer features for STM32G0

PR #1134 -> a371df6.
Tested in hardware by @victorandrehc.

2024-03-08: Add AS5047 absolute encoder driver

PR #1138 -> dbfd93b.
Tested in hardware by @hshose.

2024-03-06: Add DISCO-F411VE board support

PR #1135 -> 009bb06.
Tested in hardware by @TomSaw.

2024-02-06: Use Prescaler+Counter algorithm for Iwdg::initialize()

PR #1127 -> 23036e3.
Tested in hardware by @salkinium.

2024-02-05: Add DMA and conversion sequence support to STM32F3/G4 ADC

PR #1126 -> fe4cbc5.
Tested in hardware by @chris-durand.

2024-02-02: Add NUCLEO-G070RB board support

PR #1125 -> 6de70ba.
Tested in hardware by @chris-durand.

2024-02-01: Add BDMA driver for STM32H7

PR #1115 -> 2e40ab4.
Tested in hardware by @chris-durand.

2024-01-21: Implement Fibers for ARM64

New targets with -arm64 suffix, -x86_64 is implicit for backwards
compatibility:

  • hosted-linux-arm64
  • hosted-darwin-arm64

Removed hosted-rpi target, as wiringPi is deprecated and thus the target lost
its only peripheral.

PR #1113 -> 623a13b.
Tested in hardware by @salkinium (Apple Silicon M2) and @rleh (Raspberry Pi).

2024-01-14: Catch Newlib's printf usage

This previously lead to cryptic linking failures due to a missing heap
implementation. Now any use of printf without including the modm:printf
module will lead to a linking failure with a proper error description.

PR #1120 -> 7318c28.
Tested by @salkinium.

2024-01-05: Upgrade TinyUSB to v0.16.0

PR #1116 -> 1f210c1.
Tested in hardware by @salkinium with high impact on TinyUSB configuration.

2024-01-05: Add DISCO-F401VC board support

PR #1117 -> 2381c61.
Tested in hardware by @cajt.

2024-01-04: Miscellaneous fixes for STM32H7 and STM32G0

PR #1114 -> 8bcbe25.
Tested in hardware by @chris-durand.

2023q4 release

01 Jan 20:34
Compare
Choose a tag to compare

This release covers everything from 2023-10-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.

Features:

  • STM32H7 SPI driver with DMA support.

Integrated Projects:

  • ETL upgraded to v20.38.10.
  • LVGL upgraded to v8.3.11.
  • Nanopb upgraded to v0.4.8.
  • STM32G0 headers upgraded to v1.4.3.
  • STM32F4 headers upgraded to v2.6.9.
  • STM32U5 headers upgraded to v1.3.1.

Fixes:

  • Fix SPI clocks on Nucleo-H723ZG boards.
  • Do not require protothreads to use SPI with fibers.
  • Place main stack in DMA-able SRAM on STM32H7.

New device drivers:

  • BMI088 IMU driver as modm:driver:bmi088.

Known bugs:

  • Fibers are not implemented for ARM64 targets. See #1111.
  • OpenOCD cannot enable SWO on STM32H7 targets. See #1079.
  • STM32F7: D-Cache not enabled by default. See #485.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #1112 -> 2023q4.

Detailed changelog

2023-10-04: Add STM32H7 SPI driver with DMA support

PR #1052 -> 53796b0.
Tested in hardware by @chris-durand.

2023-10-05: Add BMI088 driver

PR #1052 -> a771042.
Tested in hardware by @chris-durand.

2023q3 release

01 Oct 21:32
Compare
Choose a tag to compare

This release covers everything from 2023-07-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.

Features:

  • STM32G0 FD-CAN driver.
  • Redirect printf to logger in BSPs that support it.

Integrated Projects:

  • CMSIS-DSP upgraded to v1.15.0.
  • ETL upgraded to v20.38.2.
  • LVGL upgraded to v8.3.10.
  • STM32C0 headers upgraded to v1.1.0.
  • STM32H5 headers upgraded to v1.1.0.
  • STM32L4 headers upgraded to v1.7.3.
  • STM32U5 headers upgraded to v1.3.0.

Fixes:

  • Place .data section in DMA-able memory on STM32H7.
  • Correct identification register indices for HMC58x3 drivers.
  • Fix spurious EXTI interrupt with shared IRQ.

New device drivers:

  • IIM-42652 IMU family driver as modm:driver:ixm42xxx.
  • Stacked SPI Flash driver as modm:driver:block.device:spi.stack.flash.
  • SX128x LoRa driver as modm:driver:sx128x.
  • QMC5883L magnetometer driver as modm:driver:qmc5883l.

Known bugs:

  • STM32F7: D-Cache not enabled by default. See #485.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #1088 -> 2023q3.

Detailed changelog

2023-09-11: Add QMC5883L magnetometer driver

PR #1063 -> 7f30961.
Tested in hardware by @mbait.

2023-09-02: Fix EXTI interrupts

PR #1066 -> c9e5227.
Tested in hardware by @chris-durand.

2023-08-15: Add SX128x LoRa driver

PR #1050 -> 517bd84.
Tested in hardware by @rasmuskleist.

2023-08-13: Add Stacked SPI Flash driver

PR #1054 -> ba23833.
Tested in hardware by @rasmuskleist.

2023-07-27: Add ADC driver for STM32H7

Also adds support for injected conversions.

PR #1049 -> 4d69227.
Tested in hardware by @chris-durand.

2023-07-26: Fix ADC driver for STM32G0

PR #1053 -> 5d03d53.
Tested in hardware by @chris-durand.

2023-07-21: Add CAN driver for STM32G0

PR #1051 -> a05cc62.
Tested in hardware by @klsc-zeat.

2023-07-19: Add IIM-42652 IMU driver

PR #1040 -> 8012d82.
Tested in hardware by @rasmuskleist.

2023-07-10: Place .data section into D1_SRAM on STM32H7

PR #1048 -> 027811f.
Tested in hardware by @chris-durand.

2023q2 release

01 Jul 22:54
Compare
Choose a tag to compare

This release covers everything from 2023-04-05 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc v12.2.1 from xpack.

Breaking changes:

  • GCC12 requirement for C++23.
  • -fsingle-precision-constant default compile flag has been removed.
  • Removed deprecated Timer::setPeriod(uint32_t) in favor ofstd::chrono units.

Features:

  • SAMx7x DAC, ADC, DMA, and CAN drivers.
  • Enabled C++23 and C23.
  • STM32 IWDG driver.
  • Fibers are now backward compatible with protothreads and resumable functions.
  • Support for STM32G0B/C devices with shared interrupts.

Integrated Projects:

  • LVGL upgraded to v8.3.7.
  • Pico-SDK upgraded to v1.5.1.
  • STM32F1 headers upgraded to v4.3.4.
  • STM32F2 headers upgraded to v2.2.6.
  • STM32L1 headers upgraded to v2.3.3.
  • CMSIS-DSP upgraded to v1.14.4.
  • SAMx7x upgraded to v3.0.
  • TinyUSB upgraded to v0.15.0.

Fixes:

  • Moving average type selection.
  • SysTick clock access from both cores on RP2040.
  • FDCAN driver on STM32 tx message queue.
  • STM32 I2C NACK flag is acknowledged for instances >1.
  • Fix arithmetic overflow in Timer::setPeriod on STM32.
  • Validate calculated CRC on MS5611 driver.

New development boards:

  • Adafruit Feather-M4 as modm:feather-m4.

New device drivers:

  • MAX31865 temperature sensor as modm:driver:max31865.
  • Internal cycle counter as modm:driver:cycle_counter.
  • MCP3008 ADC driver as modm:driver:mcp3008.

Known bugs:

  • STM32F7: D-Cache not enabled by default. See #485.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #1044 -> 2023q2.

Detailed changelog

2023-06-20: Extend support for ELF2UF2 tool to STM32 and SAM

PR #1038 -> b05df3e.
Tested in hardware by @tarush53.

2023-06-09: Remove -fsingle-precision-constant compile flag

PR #1037 -> 2384756 with medium-impact in floating point variables.
Tested in hardware by @salkinium.

2023-06-08: Add Adafruit Feather-M4 board support

PR #1032 -> 81b86be.
Tested in hardware by @tarush53.

2023-06-07: Add support for STM32G0B/C devices

PR #1036 -> 768d749.
Tested in hardware by @chris-durand.

2023-06-01: Add MCP3008 ADC driver

PR #1028 -> eda224e.
Tested in hardware by @chris-durand.

2023-05-19: Add complementary channels to TIM driver on STM32

PR #1018 -> 45ae68a.
Tested in hardware by @ser-plu.

2023-05-15: Implement Protothreads/Resumables using Fibers

PR #1001 -> 45ae68a.
Tested in hardware by @salkinium.

2023-05-13: Fix FDCAN transmission queue on STM32

PR #1017 -> 9d33843.
Tested in hardware by @ser-plu, @chris-durand, and @rleh.

2023-05-09: Add MCAN driver for SAMx7x

PR #955 -> bfafcd3.
Tested in hardware by @rleh.

2023-05-05: Add IWDG driver for STM32

PR #1009 -> d772940.
Tested in hardware by Daniel Waldhäusl.

2023-05-03: Fix RP2040 multicore access to modm::Clock

PR #1010 -> 389a9c3.
Tested in hardware by @salkinium.

2023-05-02: Add MAX31865 temperature sensor

PR #993 -> 65bbccf.
Tested in hardware by @hshose.

2023-04-19: Add ADC driver for SAMx7x

PR #998 -> c7c4c57.
Tested in hardware by @chris-durand.

2023-04-12: Add DAC and DMA driver for SAMx7x

PR #987 -> 94580b4.
Tested in hardware by @chris-durand.

2023-04-08: Fix STM32 SPI configuration while running

PR #994 -> 972b74b.
Tested in hardware by @chris-durand.

2023q1 release

08 Apr 19:54
Compare
Choose a tag to compare

This release covers everything from 2023-01-01 and has been tested with avr-gcc
v12.2.0 from Upstream and arm-none-eabi-gcc 12.2.rel1 from Arm.

Breaking changes:

  • SAMV71 Xplained Ultra button polarity.

Features:

  • External main clock on SAMx7x.
  • SAMx7x SPI driver.
  • SAM GpioInverted.
  • CANFD large frame support.
  • SAM SoftwareGpioPort.
  • SAMx7x Timer/counter driver.
  • SAMx7x PWM generator driver.
  • GCC 12.
  • Ability to coredump from GDB directly.
  • JLink support.
  • Support for STM32U5 devices.
  • Repetition Counter on STM32 Advanced Control Timers.
  • ADC scan mode, DMA mode and external trigger for STM32F1/F2/F37/F4/F7/L1.
  • SAMx7x I2C driver.

Integrated Projects:

  • ETL upgraded to v20.35.14.

Fixes:

  • Multiple fixes for I²C NACK handling on STM32.
  • On Nucleo-F103RB GpioB4 is now usable.
  • Systick frequency on SAMx7x.
  • Fix static member variable initialization.

New development boards:

  • Nucleo-U575ZI-Q as modm:nucleo-u575zi-q.
  • SAME70 Xplained as modm:board:same70-xplained.

New device drivers:

  • LSM6DSO imu as modm:driver:lsm6dso.
  • MS5837 pressure/temperature sensor as modm:driver:ms5837.
  • AT24MAC402 I2C Eeprom as modm:driver:at24mac402.

Known bugs:

  • STM32F7: D-Cache not enabled by default. See #485.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #995 -> 2023q1.

Detailed changelog

2023-04-08: Fix static member variable initialization

Fixes __cxa_guard_acquire to construct a static member variable only once!

PR #995 -> 2023q1.
Tested in hardware by @salkinium.

2023-04-06: Add SAMx7x I2C driver

Including an unittest and examples.

PR #954 -> d1938eb.
Tested in hardware by @chris-durand.

2023-04-06: Add AT24MAC402 I2C EEPROM driver

This also adds generic support for I2C eeproms with 8 bit addressing.

PR #954 -> d1938eb.
Tested in hardware by @chris-durand.

2023-04-01: Add ADC DMA mode and external trigger for STM32F1/F2/F37/F4/F7/L1

PR #982 -> 04ed0a5.
Tested in hardware by @victorandrehc.

2023-03-27: Fix systick frequency on SAMx7x

PR #986 -> 589aea7.
Tested in hardware by @chris-durand.

2023-03-19: Add support for Repetition Counter on STM32 Advanced Control Timers

PR #981 -> 740fd51.
Tested in hardware by @victorandrehc.

2023-03-14: Add BSP for SAM E70 Xplained with multiple examples

PR #969 -> a38feca.
Tested in hardware by @lgili.

2023-03-14: Separate the rx handling part of the XPCC dispatcher

PR #970 -> 2273bae.
Tested in hardware by @se-bi.

2023-03-13: Add STM32U5 support

Support for all devices of the new STM32U5 family with Cortex-M33 core.
UART and RCC platform drivers are adapted and a BSP for the Nucleo-U575ZI-Q
is also included.

PR #843 -> 8a3a20b.
Tested in hardware by @rleh.

2023-03-13: Add ADC scan mode supprot for STM32F1/F2/F37/F4/F7/L1

PR #976 -> 08cd479.
Tested in hardware by @victorandrehc.

2023-03-06: Refactor tooling and add JLink support

  • Refactor modm_tools module and debug tooling
  • Add JLink debug probe support
  • Add ITM and RTT on NUCLEO-64 board

PR #965 -> 241b0d1.
Tested in hardware by @salkinium.

2023-03-06: Enable GpioB4 on Nucleo-F103RB

PR #967 -> 416ced6.
Tested in hardware by @strongly-typed.

2023-02-28: Always inline DMA IRQ handler to reduce IRQ latency on STM32

PR #964 -> d982a85.
Tested in hardware by @strongly-typed.

2023-02-20: Add ability to coredump from GDB directly

PR #961 -> eb2748e.
Tested in hardware by @salkinium.

2023-02-18: GCC 12 update

  • Adapt code and build system to GCC12
  • Split AVR Mega Pro unittests into three
  • Fix function call in ADC examples

PR #940 -> 923f9c1.
Tested in hardware by @salkinium.

2023-02-15: Add Nucleo-H723ZG OpenOCD config

PR #960 -> 3cee015.
Tested in hardware by @mat-kie and @rleh.

2023-02-07: Add support for PWM generator on SAMx7x

PR #957 -> 190bc78.
Tested in hardware by @chris-durand.

2023-02-06: Add support for timer/counter on SAMx7x

PR #956 -> 95713ee.
Tested in hardware by @chris-durand.

2023-02-05: Add MS5837 pressure/temperature sensor driver

PR #942 -> 8179e6b.
Tested in hardware by @lukh.

2023-02-04: Add support for SoftwareGpioPort on SAM

Also adds support for inverted pins in GpioSet.

PR #952 -> afdb5ba.
Tested in hardware by @chris-durand.

2023-02-04: Add CANFD large frame support

PR #882 -> e4b1a4a.
Tested in hardware by @rasmuskleist / @twast92.

2023-02-04: Multiple fixes for I²C on STM32

  • Fix stm32-extended I2C driver NACK handling
  • Start next I2C transaction also when previous failed with NACK
  • Do not set invalid I2C_CR1_NOSTRETCH bit in master mode

PR #947 -> ba61a34 and PR #951 -> c347f00.
Tested in hardware by @chris-durand.

2023-02-01: Add ST LSM6DSO imu driver

PR #950 -> 13ea578.
Tested in hardware by @rleh.

2023-01-16: Add PLL disable function on STM32

PR #944 -> 0f0505f.
Tested in hardware by @chris-durand.

2023-01-12: Add support for GpioInverted on SAM

PR #941 -> 4f50d00.
Tested in hardware by @chris-durand.

2023-01-12: Add SPI support for SAMx7x

PR #938 -> c93dd2c.
Tested in hardware by @chris-durand.

2023-01-03: Add external main clock support on SAMx7x

PR #939 -> 0259ad2.
Tested in hardware by @chris-durand.

2022q4 release

01 Jan 20:50
Compare
Choose a tag to compare

This release covers everything from 2022-10-01 and has been tested with avr-gcc
v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2022.07 from Arm.

Breaking changes:

  • None.

Features:

  • Basic ADC support for SAMx7x devices.

Integrated Projects:

  • printf upgraded to v6.1.0.
  • CMSIS-DSP upgraded to v1.14.2.
  • TinyUSB upgraded to v0.14.0.
  • FreeRTOS upgraded to 202212.
  • FatFS upgraded to v0.15.
  • LVGL upgraded to v8.3.4.
  • NanoPB upgraded to v0.4.7.
  • ETL upgraded to v20.35.6.
  • STM32L5 headers upgraded to v1.12.0.
  • STM32H7 headers upgraded to v1.10.3.

Fixes:

  • STM32G4 ADC channel mapping.
  • Initialize frame buffer memory in MonochromeGraphicDisplay.
  • Only configure BDTR register for timers with complementary PWM.
  • Fix SAMx7x b-variant USART defines.

New development boards:

  • None.

New device drivers:

  • None.

Known bugs:

  • C++20 is not fully implemented by GCC10 yet, however modm does not use all
    features yet anyways. See #326.
  • STM32F7: D-Cache not enabled by default. See #485.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #937 -> 2022q4.

Detailed changelog

2022-12-04: Add basic SAMx7x ADC driver

PR #935 -> 7330500.
Tested in hardware by @chris-durand.

2022q3 release

01 Oct 18:05
Compare
Choose a tag to compare

This release covers everything from 2022-07-01 and has been tested with avr-gcc
v10.2.0 from Upstream and arm-none-eabi-gcc 10.3-2022.07 from Arm.

Breaking changes:

  • Uart peripheral renamed to Usart on SAMG5 devices for consistency.
  • GCLK peripheral has been refactored for all SAM devices.

Features:

  • RP2040 external flash size option.
  • RP2040 ADC driver.
  • Resolution configuration for DS18B20 driver.
  • Use GPIO signal to configure STM32 Timers.
  • Support for SAMx5x and SAMx7x devices.

Integrated Projects:

  • printf upgraded to v6.0.0.
  • LVGL upgraded to v8.3.2.
  • ETL upgraded to v20.34.0.
  • Pico-SDK upgraded to v1.4.0.
  • STM32G0 headers upgraded to v1.4.2.
  • STM32F7 headers upgraded to v1.2.8.

Fixes:

  • SpiMaster compilation with GCC11.
  • Using RTT with multiple channels.
  • Relocation of lbuild outpath in modm:build:make module.
  • Deadlock RP2040 DMA driver due to counter overflow.
  • Fix compilation of moving average for floating-point type.
  • SAMD setInput(InputType) does not always reset to floating anymore.

New development boards:

  • Feather-RP2040 as modm:board:feather-rp2040.
  • ThingPlus-RP2040 as modm:board:thingplus-rp2040.
  • SAMV71 Xplained Ultra as modm:board:samv71-xplained-ultra.
  • SAME54 Xplained Pro as modm:board:same54-xplained-pro.
  • SAMD21 Xplained Pro as modm:board:samd21-xplained-pro.

New device drivers:

  • ADS7828 ADC as modm:driver:ads7828.
  • MCP9902/3/4 temperature sensor as modm:driver:mcp990x.
  • ST7789 display driver as modm:driver:st7789.

Known bugs:

  • C++20 is not fully implemented by GCC10 yet, however modm does not use all
    features yet anyways. See #326.
  • STM32F7: D-Cache not enabled by default. See #485.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.

Many thanks to all our contributors.
A special shoutout to first timers 🎉:

PR #917 -> 2022q3.

Detailed changelog

2022-09-30: Add SAMx5x/x7x device support

Also adds SAMV71 Xplained Ultra and SAME54 Xplained Pro board support packages
and examples. For consistency with other SAM devices, the SAMG Uart peripheral
has been renamed to Usart in a breaking change. The GCLK peripheral has been
refactored for consistency across and to remove hard-coded design choices.

PR #827 -> 8230fef.
Tested in hardware by @chris-durand with high impact on SAM devices.

2022-08-23: Add ST7789 display driver

PR #902 -> 516b2b3.
Tested in hardware by @cocasema.

2022-08-18: Add ThingPlus-RP2040 BSP

PR #900 -> 874c8d6.
Tested in hardware by @cocasema.

2022-08-18: Add RP2040 ADC driver

PR #899 -> 490e868.
Tested in hardware by @cocasema.

2022-08-17: Add Feather-RP2040 BSP

Also adds an option to set the flash size of the external flash chip.

PR #898 -> cceb801.
Tested in hardware by @cocasema.

2022-08-09: Add MCP9902/3/4 temperature sensor

PR #894 -> 0fd53a8.
Tested in hardware by @chris-durand.

2022-07-23: Add Nanopb with SCons integration

PR #657 -> 6b5b4ce.
Tested in hardware by @lmoesch.

2022-07-17: Add ADS7828 ADC driver

PR #887 -> 0cd2bc9.
Tested in hardware by @JKazem.

2022q2 release

12 Jul 17:18
Compare
Choose a tag to compare

This release covers everything from 2022-04-01 and has been tested with avr-gcc
v11.2.0 from upstream and arm-none-eabi-gcc 10.3-2021.10 from Arm.

Breaking changes:

  • None.

Features:

  • Custom OpenOCD binary path.
  • IRQ handlers for RP2040.
  • Expose transmission complete flag on STM32 UART.
  • Half transfer handler for STM32 DMA.
  • Timer SlaveModeTrigger::Internal0/Internal3 for STM32F4.
  • UI Button group refactoring.
  • MovingAverage filter refactoring.
  • Support for std::chrono in STM32 timer API.

Integrated Projects:

  • ETL upgraded to v20.29.3.
  • CrashCatcher updated to latest version.

Fixes:

  • Fix STM32F7 linker script issue causing memory corruption on some devices.
  • STM32H7 RCC clock output.
  • CAN system clock frequencies for Nucleo-F446RE/Nucleo-F446ZE boards.
  • Cortex-M ITM when buffer.tx option not set.
  • Rcc::disable() on STM32 disabling unrelated clocks.
  • Fix GpioSampler difference computation.
  • Fix missing DMAable capability for DTCM RAM on STM32F7.

New development boards:

  • Support for revision B-02 of the DISCO-F469NI development board as
    modm:disco-f469ni:b-02.

New device drivers:

  • MAX31855 thermocouple-to-digital converter as modm:driver:max31855
  • ADS101X ADC as modm:driver:ads101x
  • MS5611 pressure sensor as modm:driver:ms5611

Known bugs:

  • Cannot set breakpoints on specific lines in debug profile. See #777.
  • C++20 is not fully implemented by GCC10 yet, however modm does not use all
    features yet anyways. See #326.
  • STM32F7: D-Cache not enabled by default. See #485.
  • lbuild build and lbuild clean do not remove all previously generated files
    when the configuration changes. See #285.
  • Generating modm on Windows creates paths with \ that are not compatible with
    Unix. See #310.
  • arm-none-eabi-gdb TUI and GDBGUI interfaces are not supported on Windows.
    See #591.

Many thanks to all our contributors.
A special thank you to our first timers 🎉:

PR #875 -> 2022q2.

Detailed changelog

2022-06-31: Add support for std::chrono in STM32 timer API

PR #873 -> c949daf.

2022-06-08: MovingAverage filter refactoring

And reset() function added.

PR #872 -> 7b5827f.
Tested by @TomSaw.

2022-05-31: Fix Cortex-M ITM

ITM was previously not working when buffer.tx option was not set.

PR #866 -> 90774be.
Tested in hardware by @xgzeng.

2022-05-21: UI Button group refactoring

PR #864 -> 55d5911.
Tested by @TomSaw.

2022-05-11: Add support for revision b-02 of DISCO-F469NI development board

PR #862 -> 4885c53.
Tested in hardware by @se-bi, @rleh and @salkinium.

2022-05-08: Fix missing CAN system clock frequencies for Nucleo-F446RE/Nucleo-F446ZE boards

PR #861 -> 87b6405.
Tested in hardware by @strongly-typed.

2022-05-07: Add Timer SlaveModeTrigger::Internal0/Internal3 for STM32F4

PR #859 -> c7bd876.

2022-05-04: Add half transfer handler for STM32 DMA

PR #858 -> dab6c79.

2022-05-03: Add MS5611 pressure sensor driver

PR #851 -> ab9bcee.
Tested in hardware by @rasmuskleist.

2022-05-01: Expose transmission complete flag on STM32 UART

PR #856 -> 0e3d280.
Tested in hardware by @strongly-typed.

2022-05-01: Add ADS101X ADC driver

PR #854 -> 596eafa.
Tested in hardware by @JKazem.

2022-04-30: Fix STM32H7 RCC clock output

PR #853 -> 6e7c12f.
Tested in hardware by @chris-durand.

2022-04-22: Add MAX31855 thermocouple-to-digital converter driver

PR #850 -> 2e34b11.
Tested in hardware by @rasmuskleist / @sarahvilete.

2022-04-18: Implement IRQ handlers for RP2040

PR #848 -> 599e0ba.
Tested in hardware by @cocasema.

2022-04-13: Add support for custom OpenOCD binary path

PR #846 -> 98a2483.
Tested in hardware by @cocasema.