Diving into ChibiOS HAL sources shows me that STM32_I2SSRC macro (from mcuconf.h) used only for turning on PLLI2S, not for actual clock switching (I2SSRC bit in RCC_CFGR)
So here's trivial patch to fix this issue:
Code: Select all
diff --git a/os/hal/ports/STM32/STM32F4xx/hal_lld.c b/os/hal/ports/STM32/STM32F4xx/hal_lld.c
index ff9ff93..2911b49 100644
--- a/os/hal/ports/STM32/STM32F4xx/hal_lld.c
+++ b/os/hal/ports/STM32/STM32F4xx/hal_lld.c
@@ -245,7 +245,8 @@ void stm32_clock_init(void) {
/* Other clock-related settings (dividers, MCO etc).*/
RCC->CFGR = STM32_MCO2PRE | STM32_MCO2SEL | STM32_MCO1PRE | STM32_MCO1SEL |
- STM32_RTCPRE | STM32_PPRE2 | STM32_PPRE1 | STM32_HPRE;
+ STM32_I2SSRC | STM32_RTCPRE | STM32_PPRE2 | STM32_PPRE1 |
+ STM32_HPRE;
/* Flash setup.*/
#if defined(STM32_USE_REVISION_A_FIX)