Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
Unreleased¶
- CI: Full compilation of all samples and applications. PR #253 by @SvennnG.
- Motherboard: Sample project for SD card interface. PR #252 by @SvennnG.
- Sample for Ethernet on Zephyr on Dev-Board created. PR #251 by @SvennnG.
Features¶
- MB boot tasks for dynamic MMB Enable and ESC parameter copy. PR #248 by @SvennnG.
- BMS improved stability for Error detection by time filtering. PR #245 by @SvennnG.
- BMS FSM: Copter enable error detection after HotSwap for 2 seconds. PR #246 by @SvennnG.
- BMS shutdown sequence in Copter via engage buttons (multiple packs). PR #244 by @SvennnG.
- BMS Synchronous switch of state LED to green in Copter. PR #242 by @SvennnG.
- Motherboard Publishes Gear Setpoints via Cyphal. PR #241 by @SvennnG.
- Motherboard Mavlink Message for BatteryStatus. PR #238 by @SvennnG.
- Motherboard publish of Cyphal/Navlight synchronization pulse. PR #233 by @SvennnG.
- New Cyphal command to verify the image of mcuboot (CMD: 900). PR #235 by @SvennnG.
- BMS Synchronous HotSwap engage with MB Synchronization via Cyphal. PR #232 by @SvennnG.
- BMS Synchronous HotSwap engage with additional VBus voltage trigger. PR #234 by @SvennnG.
Fixed¶
- Selftest precharge (HS) rework and fixes. PR #239 by @SvennnG.
- Tests for HITL with CAN/Cyphal tests. PR #177 by @SvennnG.
Internal¶
- BMS Output control logic separation. PR #231 by @SvennnG.
- BMS FSM state: Maintenance (CAN). PR #243 by @SvennnG.
- Motherboard PWM Input parsing Thread. PR #240 by @SvennnG.
0.11.4 - 2025-11-17¶
Fixed¶
- Fix: Watchdog re-enabled (Hardware Watchdog, 209 ms interval)
- Fix: On power off; STM32 goes to shutdown instead standby
- Fix: Naming of StatisticUpdate Thread corrected
- Fix: memory reduction by disable of: cyphal time sync
- Fix: BMS selftest on D.1 - measurement of cell voltages lead to false positive if threshold is too high (full cells) -- fixed for values between clip and threshold
Features¶
- Feature: Task Watchdog for custom Threads (Software Watchdog, 2s interval)
- Feature: Logging verbosity improved (new periodic BMS fsm state 1/30s, Set Id.Index if set incomplete)
- Feature: Idle -> Shutdown at least after CellBalancing delay to capture the activation of cell balancing
Internal¶
- Internal: moved Hardware Watchdog (+ Task Watchdog) interfaces to lib/
0.11.3 - 2025-11-12¶
- Bugfix: Selftest on D.1 - measurement of cell voltages lead to false positive if threshold is too high (full cells)
0.11.2 - 2025-11-11¶
- Bugfix: Selftest would not persistently store the long calibration values in flash
- Bugfix: Hardware Version was not stored persistently - added error message with possible solution(s) if execution on wrong hardware
0.11.1 - 2025-11-10¶
- Bugfix: Cyphal BMS data publisher type register updated (to starcopter.highdra.bms.BMSData.1.1)
- Feature: Error print simplified & verbosity reduced (only if BMS is inside the error state the error is dumped)
0.11.0 - 2025-09-18¶
Features¶
- Mavlink communication stack integration as library class. PR #229 by @SvennnG.
- Cyphal Abstraction with CyphalBase class. PR #226 by @SvennnG.
- 📝 Set up MkDocs-based documentation. PR #224 by @Finwood.
- Motherboard Cyphal Receive of BMS Node Data. PR #221 by @SvennnG.
- BMS usage statistic record in flash storage. PR #213 by @SvennnG.
- Prototype for Charger with DaisyChain. PR #211 by @SvennnG.
- Cell balance for multiple BMS packs in one set to equalize all cells. PR #210 by @SvennnG.
- Error detection over multiple packs in a set. PR #209 by @SvennnG.
- BMS engage CAN message with more data. PR #208 by @SvennnG.
- Battery Capacity estimation improvement with internal resistance. PR #207 by @SvennnG.
- State of Charge: Cell capacity estimation (Energy Monitor) by power integration. PR #192 by @SvennnG.
- Error detection of under voltage. PR #205 by @SvennnG.
- Error detection of over voltage for individual cells. PR #206 by @SvennnG.
- Error detection of not disable-able latches. PR #204 by @SvennnG.
- Cyphal LED Commands. PR #201 by @SvennnG.
- Cyphal TimeSync Implementation. PR #200 by @SvennnG.
- Cyphal node ID static in Copter. PR #194 by @SvennnG.
- Cyphal File Access Services. PR #193 by @SvennnG.
Fixed¶
Docs¶
Refactored¶
- Error state checks and print messages . PR #223 by @SvennnG.
- STM32 Shutdown instead standby. RTC kept active. PR #218 by @SvennnG.
- Cell balance configurable via KConfig. PR #212 by @SvennnG.
- Refactor of FSM Library. PR #195 by @SvennnG.
- Refactor of the BMS application FSM (Context). PR #203 by @SvennnG.
- Refactor of the (BMS) LED. PR #201 by @SvennnG.
- Cyphal Stability Improvement. PR #200 by @SvennnG.
- Refactor: Motherboard DTS adaption to Zephyr. PR #188 by @SvennnG.
- Merge Bugfixes of Release v0.10.0. PR #191 and PR #230 by @SvennnG.
Internal¶
0.10.1 - 2025-09-30¶
Fixed¶
- Watchdog reboot + rollback avoidance after DFU (flash init)
0.10.0 - 2025-07-09¶
Features¶
- Enable of RTC on BMS. PR #190 by @SvennnG.
- RTC Getter, Setter and Calibration via Cyphal Registry.
- Cyphal heartbeat monitor to detect and handle Node ID conflicts. PR #187 by @SvennnG.
- Add of Cyphal Logging Backend for Diagnostic Reports. PR #178 by @SvennnG.
- Faster Feedback for Buttons to LEDs.
Fixed¶
- Bugfixes during Testing (SCP, Engage via CAN reset). PR #186 by @SvennnG.
- Release Process Fixes + Updates of v0.9.0. PR #185 by @SvennnG.
- Cyphal Registry now persistent and mutable according to uavcan definitions. e.g., description is editable.
- Cyphal Registry allow set of Node ID as not persistent option.
- Cyphal Registry write not returns correct number of written array elements (not byte).
- Cyphal Registry Set_id and Pack_sn type update. Set_index added (preparation for v0.11).
- Selftest write of further datatypes (e.g. uint8) to cyphal registry from its shell.
- CAN TX Thread failed frame sending with retry (cyphal send buffer full) sync'ed again with send frame semaphore count.
Refactored¶
- Readme and scripts for release. One DFU in parallel for USBTingo. New Monitor scripts.
- Refactor and Fixes of the LED driver implementation. PR #179 by @SvennnG.
- (Withdrawn as of CAN problems) Zephyr Updated to 4.1 (Latest). Now using Zephyr 3.6 again. PR #176 by @SvennnG.
Internal¶
- Replace native_posix with native_sim. PR #173 by @Finwood.
- Motherboard Zephyr Version with Console and first DeviceTree. PR #180 by @SvennnG.
0.9.0 - 2025-06-05¶
Features¶
- Add of Hardware Watchdog and Looong Button Press for Reset. PR #174 by @SvennnG.
- Calibration in selftest possible in precise and quick mode. PR #169 by @SvennnG.
- Calibration for IBAT, VBAT, VPACK enabled. PR #168 by @SvennnG.
- Add shell for flash management to selftest. PR #167 by @SvennnG.
- Utilize new BMS Test Fixture. PR #165 by @Finwood.
- Add of Cell Balancing. PR #163 by @SvennnG.
- Add Cyphal publishing of analog measurements. PR #154 by @SvennnG.
- Persistent Storage in LittleFS File System (Cyphal Registry). PR #157 by @SvennnG.
- ✨ Add BQ76925 Driver for Cell Voltage Measurement and Balancing. PR #150 by @Finwood.
- Cyphal registry with services: uavcan.register.Access & uavcan.register.List. PR #148 by @SvennnG.
- Parametrize C++ BaseThread stack size instead of fixed Kconfig value. PR #147 by @SvennnG.
- Cyphal communication library without global objects. PR #145 by @SvennnG.
- OTA support with Checksum, update script, and release improvements. PR #144 by @SvennnG.
- Add Script to Discover and Display Cyphal Nodes on the Network. PR #143 by @Finwood.
- Release .zip File extends with Scripts in Root-Directory and Documentation as .pdf. PR #155 by @SvennnG.
Fixed¶
Docs¶
Removed¶
Refactored¶
- Refactor of the BMS application. C++ is now integrated to the main state machine and the Cyphal implementation.
- Documentation and Tests planning rework. PR #170 by @SvennnG.
- Refactor of the BMS selftest application. PR #153 by @SvennnG.
- BMS AnalogThread refactor and extend with cell voltages. PR #152 by @SvennnG.
- Moved main application folder: applications/. PR #151 by @SvennnG.
- ♻️ Refactor ADC Sample. PR #149 by @Finwood.
- Migrate CAN-Based Engage Command to Cyphal. PR #142 by @SvennnG.
- Reorganize of Github Action Test Automations. PR #171 by @SvennnG.
Internal¶
- Add MB and MMB applications as references to Gitlab. PR #164 by @SvennnG.
- 👷 Automate Changelog Generation. PR #138 by @Finwood.
- 🧱 Clean up Dotfiles and pre-commit Hooks. PR #146 by @Finwood.
- Add sample for littlefs persistent storage on flash. PR #156 by @SvennnG.
0.8.0 - 2025-04-14¶
Added¶
- Created presentation layer, an intermediary layer between the application layer and the transport layer in the Cyphal library. #118
- Enabled Cyphal library in BMS application. #120
- Enabled Cyphal Device Firmware Update (DFU). #120
- Enabled MCUBoot and Sysbuild support for BMS application. #120
- Added C linkage in Cyphal header files. #128
- Added BMS documentation and diagrams. #129
- Added Windows Batch script to connect to the device's serial console. #133
- Added shell script to merge bootloader and application into a single hex file. #133
- Added Cyphal Node ID Allocation client to support dynamic Node IDs. #136
Changed¶
- Updated Cyphal node sample documentation. #125
- Maximum application size has been limited to 200 KiB. #132
- Reduced MCUboot boot duration to improve user experience. #133
- Fixed transceiver delay compensation, so that CAN FD can operate in fast mode. #134
- Fixed bug that would always revert a firmware update on the next boot. #135
0.7.0 - 2025-02-28¶
Added¶
- Added handling for
uavcan.node.GetInforequests: the cyphal node subscribes to the request after sending its first heartbeat and sends the matching response. #101 - Implemented
uavcan.node.ExecuteCommandwith support for firmware download usinguavcan.file.Read#102 - Integrated MCUboot in the cyphal_node sample application with support for the swap using move method #106
- Enabled Sysbuild integration to automatically include MCUboot as the bootloader. #106
- ✨ Added support for BMS D.2 for the main application, the entire test suite and the test_shell sample. #110
- Added overtemperature protection feature, triggers when atleast any two temperature measurements on the bms board exceed a configured threshold. #116
Changed¶
- The BMS board revisioning scheme has been changed to a LETTER.number scheme (e.g. D.1). #109
- SCP threshold current is now represented as 16-bit integer internally, supporting values above ±120 A.
- Ported Cyphal node sample application to Cyphal Lib, segregated application and transport layer objects. #111
Removed¶
- The C.1 hardware revision is no longer supported. #44
0.6.0 - 2025-01-15¶
Added¶
- Added configuration option to keep short circuit protection enabled in copter state. #72
- Added a minimal Cyphal node implementation in Zephyr, publishing the heartbeat message on the network every 1s. #91
- Implemented Low Power (shutdown) mode in test shell application. #99
- Added Windows and Linux programming scripts. #92
Changed¶
- Relaxed temperature range requirements in test_shell application. #96
Fixed¶
- Configured PB4_PUPEN option bit to fix the HS_OK pin issue. #92
0.5.1 - 2024-11-19¶
Fixed¶
- Fixed CAN frame publishing logic to not lock up on a failed transmission. #83
- Poll button initial state instead of using interrupts for the keys GPIOs. This can also publish the BUTTON_STATE_ENGAGE_SEQUENCE as the initial state to engage the pack from the shutdwon mode.
0.5.0 - 2024-11-19¶
Added¶
- The packs publish activity frames on CAN, and can synchronize their state independently of the motherboard. #82
- Implemented Low Power (Shutdown) mode in IDLE state, current consumption drops to 40uA with the debug mode disabled. #80
- Added vbus active signal and user button as a wakeup source when the bms is in low power mode.
- Added a shutdwon timeout configuration option in Kconfig.
Fixed¶
- The BQ76925 chip now does not take 500 ms to wake up anymore. #79
- Added include guards to a few C headers that were missing them. #81
- The button module now correctly queries the actual initial button state at boot time. #22
0.4.0 - 2024-11-13¶
Changed¶
- VBUS activation logic is replaced with a flag that is set when any Cyphal/CAN frame is received from the motherboard. #77
Fixed¶
- After a hot reboot (software crash while engaged), the pack now correctly enters into the state it had before rebooting. #78
0.3.0 - 2024-11-07¶
Added¶
- Display pack's current activity status on LED5. #69
- Added BMS user interface documentation. #73
Changed¶
- HS_OK input to key
H. #42 - VBUS_ACTIVE and BOOT connector pins are now debounced to prevent unintentional pack activation. #70
Fixed¶
- Fixed state machine implementation to avoid executing logic for already exited states. #71
- Fixed overcurrent error pattern from general other error to overload error type. #48
- Fixed error pattern display representation from LSb-first to MSb-first. #54
0.2.1 - 2024-11-01¶
Added¶
- Added BMS Library. #37
- Added Integration Test Firmware. #38
- Added new comparator API to arm and disarm the short circuit protection. #40
- Added basic BQ76925 driver. #41
- Implemented tests for the state machine logic to run both in simulation and on target.
- Added direct LED interface.
- Added vbus activation logic.
- Added logic to support pack's parallel operation. #47
Changed¶
- For safety reasons, the pack will no longer disengage after receiving a long button press.
- Short-Circuit Protection is now slower and more robust. #39
- Main application is now based on a state machine implementation. #45
- When the pack is in copter state, short circuit protection is disabled. #45
- The default maximum charge current threshold for overcurrent protection has been increased to 24A.
Deprecated¶
- The BMS C.x hardware board revision is deprecated and will be removed in a future release.
- The
example_liblibrary and accompanying tests will be removed in a future release.
Removed¶
- The LED module has been suberseded by the direct LED interface embedded in the state machine.
Fixed¶
- Fixed SoC display pattern to always show at least one LED. f7b7a69
0.1.0 - 2024-10-07¶
Added¶
- Implemented button module, which can detect short and long presses.
- Implemented comparator driver for short circuit protection.
- Implemented analog module, which can publish analog measurements on the ZBus analog channel.
- Implemented a latch driver interface for FETs, enabling tri-state output control.
- Added a precharge threshold configuration option in Kconfig.
- Implemented FET control logic for battery CE, does not contain any logic for copter yet.
- Implemented logic to use same button to enable and disable the main power delivery from the pack.
- Implemented overcharge protection feature which interrupts the charging and disables the pack's output.
- Implemented tests for the application logic to run on the native posix and native sim environments.
- Added a Short Circuit Protection (SCP) driver, which can be used to protect the pack from short circuits.
- Added Short Circuit Protection to the BMS application.
Fixed¶
- The button module does not send an
ENGAGEDevent when the button is released. #24
Changed¶
- Compile default target is BMS D and not BMS C.
- DAC in comparator driver is implemented without the Zephyr driver API.
Removed¶
- Debugging configuration profiles from the application's common configurations.
- UART and Segger RTT configuration files.