Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
release: patch
summary: Fix faults caused in state machine start causing non-initialized state machine
2 changes: 2 additions & 0 deletions .changesets/archive/v6.1.2/fix-spi-clock.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
release: patch
summary: Fix some clock problems in spi 4 and 5
5 changes: 5 additions & 0 deletions .changesets/archive/v6.1.3/spi45-hsi-clock-source.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
release: patch
summary: Drive SPI4 and SPI5 from HSI for stable 2 MHz BMS transfers

SPI4 and SPI5 now use the 64 MHz HSI peripheral clock source instead of PCLK2,
allowing a 2 MHz request to select the /32 SPI prescaler deterministically.
2 changes: 2 additions & 0 deletions .changesets/fix-hardfault-warning.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
release: patch
summary: Fix a warning about symbols in HardfaultTrace (doesn't change any behaviour)
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,21 @@ The revived semantic-versioning baseline starts at `v5.0.0`.
Historical releases that predate this file remain available in Git tags such as
`v1.0.0`, `v3.0.0`, `v4.0.0-beta`, and `h10`.

## v6.1.3 - 2026-06-02

### Fixes

- Drive SPI4 and SPI5 from HSI for stable 2 MHz BMS transfers
SPI4 and SPI5 now use the 64 MHz HSI peripheral clock source instead of PCLK2,
allowing a 2 MHz request to select the /32 SPI prescaler deterministically.

## v6.1.2 - 2026-05-29

### Fixes

- Fix faults caused in state machine start causing non-initialized state machine
- Fix some clock problems in spi 4 and 5

## v6.1.1 - 2026-05-11

### Fixes
Expand Down
4 changes: 2 additions & 2 deletions Inc/HALAL/HardFault/HardfaultTrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
#ifdef __cplusplus
extern "C" {
#endif
extern uint32_t _metadata;
extern uint32_t _hf_log;
extern uint8_t _metadata[];
extern uint8_t _hf_log[];
#ifdef __cplusplus
}
#endif
Expand Down
4 changes: 2 additions & 2 deletions Inc/HALAL/Models/SPI/SPI2.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1371,15 +1371,15 @@ struct SPIDomain {
spi_number = 3;
} else if (peripheral == SPIPeripheral::spi4) {
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI4;
PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2;
PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_HSI;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
PANIC("Unable to configure SPI4 clock");
}
__HAL_RCC_SPI4_CLK_ENABLE();
spi_number = 4;
} else if (peripheral == SPIPeripheral::spi5) {
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SPI5;
PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_PLL2;
PeriphClkInitStruct.Spi45ClockSelection = RCC_SPI45CLKSOURCE_HSI;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
PANIC("Unable to configure SPI5 clock");
}
Expand Down
7 changes: 6 additions & 1 deletion Inc/MockedDrivers/stm32h7xx_hal_mock.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ typedef struct {
} RCC_TypeDef;
extern RCC_TypeDef* RCC;
extern uint32_t SystemCoreClock;
#define HSI_VALUE 64000000U

#define RCC_D1CFGR_HPRE_Msk (0xFU << 0U)
#define RCC_D2CFGR_D2PPRE1_Pos 4U
Expand Down Expand Up @@ -595,6 +596,8 @@ typedef struct {

#define RCC_SPI123CLKSOURCE_PLL 0x00000001U
#define RCC_SPI45CLKSOURCE_PLL2 0x00000002U
#define RCC_SPI45CLKSOURCE_PCLK2 0x00000003U
#define RCC_SPI45CLKSOURCE_HSI 0x00000004U
#define RCC_SPI6CLKSOURCE_PLL2 0x00000002U

typedef struct TIM_TypeDef TIM_TypeDef;
Expand Down Expand Up @@ -945,7 +948,9 @@ static inline HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeD
return HAL_OK;
}
static inline uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk) {
(void)PeriphClk;
if (PeriphClk == RCC_PERIPHCLK_SPI45) {
return HSI_VALUE;
}
return SystemCoreClock;
}
static inline HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef* hdma) {
Expand Down
2 changes: 1 addition & 1 deletion Src/HALAL/HardFault/HardfaultTrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
extern GPIO_TypeDef* ports_hard_fault[];
extern uint16_t pins_hard_fault[];
extern uint8_t hard_fault_leds_count;
extern uint32_t _hf_log;
extern uint8_t _hf_log[];

static void LED_Blink();
static void LED_init(void);
Expand Down
5 changes: 4 additions & 1 deletion Src/HALAL/Models/HALconfig/Halconfig.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ void HALconfig::system_clock() {

__HAL_RCC_PLL_PLLSOURCE_CONFIG(RCC_PLLSOURCE_HSE);

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.OscillatorType =
RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSIState = RCC_HSI_DIV1;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
Expand Down
4 changes: 3 additions & 1 deletion Src/ST-LIB_HIGH/Protections/FaultController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,10 @@ void FaultController::start() {
return;
}

runtime_storage.start(global_machine);
// Set runtime_started before calling start so that faults caused by start don't trigger a
// rebuild of the state machine
runtime_started = true;
runtime_storage.start(global_machine);

if (faulted) {
Diagnostics::Hub::flush_urgent();
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
6.1.1
6.1.3
Loading