Skip to content

Commit 0cb1b75

Browse files
committed
Portenta: PDM: use PLL3 to clock SAI
This PLL is not used by any other library, so we can reserve for PDM since it changes all the multipliers to match the required sample rate
1 parent c3765df commit 0cb1b75

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

Diff for: libraries/PDM/src/stm32/audio.c

+12-12
Original file line numberDiff line numberDiff line change
@@ -152,25 +152,25 @@ int py_audio_init(size_t channels, uint32_t frequency, int gain_db, float highpa
152152
PLL2_VCO Output = PLL2_VCO Input * PLL2N = 429 Mhz
153153
SAI_CLK_x = PLL2_VCO Output/PLL2P = 429/38 = 11.289 Mhz */
154154
rcc_ex_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_SAI4A;
155-
rcc_ex_clk_init_struct.Sai4AClockSelection = RCC_SAI4ACLKSOURCE_PLL2;
156-
rcc_ex_clk_init_struct.PLL2.PLL2P = 38;
157-
rcc_ex_clk_init_struct.PLL2.PLL2Q = 1;
158-
rcc_ex_clk_init_struct.PLL2.PLL2R = 1;
159-
rcc_ex_clk_init_struct.PLL2.PLL2N = 429;
160-
rcc_ex_clk_init_struct.PLL2.PLL2M = isBoardRev2() ? 25 : 27;
155+
rcc_ex_clk_init_struct.Sai4AClockSelection = RCC_SAI4ACLKSOURCE_PLL3;
156+
rcc_ex_clk_init_struct.PLL3.PLL3P = 38;
157+
rcc_ex_clk_init_struct.PLL3.PLL3Q = 1;
158+
rcc_ex_clk_init_struct.PLL3.PLL3R = 1;
159+
rcc_ex_clk_init_struct.PLL3.PLL3N = 429;
160+
rcc_ex_clk_init_struct.PLL3.PLL3M = isBoardRev2() ? 25 : 27;
161161

162162
} else {
163163
/* SAI clock config:
164164
PLL2_VCO Input = HSE_VALUE/PLL2M = 1 Mhz
165165
PLL2_VCO Output = PLL2_VCO Input * PLL2N = 344 Mhz
166166
sai_x_ker_ck = PLL2_VCO Output/PLL2P = 344/7 = 49.142 Mhz */
167167
rcc_ex_clk_init_struct.PeriphClockSelection = RCC_PERIPHCLK_SAI4A;
168-
rcc_ex_clk_init_struct.Sai4AClockSelection = RCC_SAI4ACLKSOURCE_PLL2;
169-
rcc_ex_clk_init_struct.PLL2.PLL2P = 7;
170-
rcc_ex_clk_init_struct.PLL2.PLL2Q = 1;
171-
rcc_ex_clk_init_struct.PLL2.PLL2R = 1;
172-
rcc_ex_clk_init_struct.PLL2.PLL2N = 344;
173-
rcc_ex_clk_init_struct.PLL2.PLL2M = isBoardRev2() ? 25 : 27;
168+
rcc_ex_clk_init_struct.Sai4AClockSelection = RCC_SAI4ACLKSOURCE_PLL3;
169+
rcc_ex_clk_init_struct.PLL3.PLL3P = 7;
170+
rcc_ex_clk_init_struct.PLL3.PLL3Q = 1;
171+
rcc_ex_clk_init_struct.PLL3.PLL3R = 2;
172+
rcc_ex_clk_init_struct.PLL3.PLL3N = 344;
173+
rcc_ex_clk_init_struct.PLL3.PLL3M = isBoardRev2() ? 25 : 27;
174174
}
175175

176176
HAL_RCCEx_PeriphCLKConfig(&rcc_ex_clk_init_struct);

0 commit comments

Comments
 (0)