From fb35edd22da155956240ba0f1187275b016f139d Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Fri, 28 Aug 2020 20:19:37 +0200 Subject: [PATCH 1/2] cpu/stm32: adapt clock configuration for l0/l1 --- cpu/stm32/kconfigs/Kconfig.clk | 108 +++++++++++++++++++++++++++++++-- 1 file changed, 103 insertions(+), 5 deletions(-) diff --git a/cpu/stm32/kconfigs/Kconfig.clk b/cpu/stm32/kconfigs/Kconfig.clk index 2d80595235..06588f5c79 100644 --- a/cpu/stm32/kconfigs/Kconfig.clk +++ b/cpu/stm32/kconfigs/Kconfig.clk @@ -6,7 +6,7 @@ # menu "STM32 clock configuration" - depends on CPU_FAM_G0 || CPU_FAM_G4 + depends on CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 choice bool "Clock source selection" @@ -15,6 +15,10 @@ default USE_CLOCK_PLL config USE_CLOCK_PLL bool "PLL" +config USE_CLOCK_MSI + bool "Use direct multi-speed frequency internal oscillator (MSI)" + depends on CPU_FAM_L0 || CPU_FAM_L1 + config USE_CLOCK_HSE bool "Direct High frequency external oscillator (HSE)" depends on BOARD_HAS_HSE @@ -24,6 +28,7 @@ config USE_CLOCK_HSI endchoice +if CPU_FAM_G0 || CPU_FAM_G4 config CLOCK_PLL_M int "M: PLLIN division factor" if USE_CLOCK_PLL default 1 if CPU_FAM_G0 @@ -45,7 +50,7 @@ config CLOCK_PLL_R default 6 if BOARD_HAS_HSE default 5 range 2 8 -endif +endif # CPU_FAM_G0 if CPU_FAM_G4 choice @@ -72,7 +77,7 @@ config CLOCK_PLL_R default 4 if PLL_R_DIV_4 default 6 if PLL_R_DIV_6 default 8 if PLL_R_DIV_8 -endif +endif # CPU_FAM_G4 if CPU_FAM_G0 choice @@ -115,7 +120,99 @@ config CLOCK_HSISYS_DIV default 32 if CLOCK_HSISYS_DIV_32 default 64 if CLOCK_HSISYS_DIV_64 default 128 if CLOCK_HSISYS_DIV_128 -endif +endif # CPU_FAM_G0 + +endif # CPU_FAM_G0 || CPU_FAM_G4 + +if CPU_FAM_L0 || CPU_FAM_L1 +config CLOCK_PLL_DIV + int "Main PLL division factor" if USE_CLOCK_PLL + default 2 + range 2 4 + +choice +bool "Main PLL multiply factor" if USE_CLOCK_PLL +default PLL_MUL_4 + +config PLL_MUL_3 + bool "Multiply by 3" + +config PLL_MUL_4 + bool "Multiply by 4" + +config PLL_MUL_6 + bool "Multiply by 6" + +config PLL_MUL_8 + bool "Multiply by 8" + +config PLL_MUL_12 + bool "Multiply by 12" + +config PLL_MUL_16 + bool "Multiply by 16" + +config PLL_MUL_24 + bool "Multiply by 24" + +config PLL_MUL_32 + bool "Multiply by 32" + +config PLL_MUL_48 + bool "Multiply by 48" + +endchoice + +config CLOCK_PLL_MUL + int + default 3 if PLL_MUL_3 + default 4 if PLL_MUL_4 + default 6 if PLL_MUL_6 + default 8 if PLL_MUL_8 + default 12 if PLL_MUL_12 + default 16 if PLL_MUL_16 + default 24 if PLL_MUL_24 + default 32 if PLL_MUL_32 + default 48 if PLL_MUL_48 + +choice +bool "Desired MSI clock frequency" if USE_CLOCK_MSI +default CLOCK_MSI_4MHZ + +config CLOCK_MSI_65KHZ + bool "65.536kHz" + +config CLOCK_MSI_130KHZ + bool "131.072kHz" + +config CLOCK_MSI_260KHZ + bool "262.144kHz" + +config CLOCK_MSI_520KHZ + bool "524.288kHz" + +config CLOCK_MSI_1MHZ + bool "1.048MHz" + +config CLOCK_MSI_2MHZ + bool "2.097MHz" + +config CLOCK_MSI_4MHZ + bool "4.194MHz" + +endchoice + +config CLOCK_MSI + int + default 65536 if CLOCK_MSI_65KHZ + default 131072 if CLOCK_MSI_130KHZ + default 262144 if CLOCK_MSI_260KHZ + default 524288 if CLOCK_MSI_520KHZ + default 1048000 if CLOCK_MSI_1MHZ + default 2097000 if CLOCK_MSI_2MHZ + default 4194000 if CLOCK_MSI_4MHZ + +endif # CPU_FAM_L0 || CPU_FAM_L1 choice bool "APB1 prescaler (division factor of HCLK to produce PCLK1)" @@ -147,7 +244,8 @@ config CLOCK_APB1_DIV default 16 if CLOCK_APB1_DIV_16 choice -bool "APB2 prescaler (division factor of HCLK to produce PCLK2)" if CPU_FAM_G4 +bool "APB2 prescaler (division factor of HCLK to produce PCLK2)" +depends on CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 default CLOCK_APB2_DIV_1 config CLOCK_APB2_DIV_1 From 2d6e8984b809e698da69dd277438cd42326c8bf1 Mon Sep 17 00:00:00 2001 From: Alexandre Abadie Date: Fri, 28 Aug 2020 20:20:24 +0200 Subject: [PATCH 2/2] boards/stm32l0/l1: add Kconfig clock configuration --- boards/b-l072z-lrwan1/Kconfig | 5 +++++ boards/i-nucleo-lrwan1/Kconfig | 5 +++++ boards/im880b/Kconfig | 5 +++++ boards/limifrog-v1/Kconfig | 2 ++ boards/lobaro-lorabox/Kconfig | 5 +++++ boards/lsn50/Kconfig | 5 +++++ boards/nucleo-l031k6/Kconfig | 3 +++ boards/nucleo-l053r8/Kconfig | 3 +++ boards/nucleo-l073rz/Kconfig | 3 +++ boards/nz32-sc151/Kconfig | 2 ++ boards/stm32l0538-disco/Kconfig | 2 ++ 11 files changed, 40 insertions(+) diff --git a/boards/b-l072z-lrwan1/Kconfig b/boards/b-l072z-lrwan1/Kconfig index 73cf3cba2a..9bbe7bfa6e 100644 --- a/boards/b-l072z-lrwan1/Kconfig +++ b/boards/b-l072z-lrwan1/Kconfig @@ -28,3 +28,8 @@ config BOARD_B_L072Z_LRWAN1 # The 0.10.0 openocd version in Ubuntu Bionic doesn't work. The change was # introduced after Jun 8, 2017 - v0.10.0-1-20170607-2132-dev. select HAS_RIOTBOOT + + # Clock configuration + select BOARD_HAS_LSE + +source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/i-nucleo-lrwan1/Kconfig b/boards/i-nucleo-lrwan1/Kconfig index 67cacafadf..c3ae24a8ac 100644 --- a/boards/i-nucleo-lrwan1/Kconfig +++ b/boards/i-nucleo-lrwan1/Kconfig @@ -22,3 +22,8 @@ config BOARD_I_NUCLEO_LRWAN1 select HAS_PERIPH_SPI_GPIO_MODE select HAS_PERIPH_TIMER select HAS_PERIPH_UART + + # Clock configuration + select BOARD_HAS_LSE + +source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/im880b/Kconfig b/boards/im880b/Kconfig index 40f8fe16bc..e67d535aae 100644 --- a/boards/im880b/Kconfig +++ b/boards/im880b/Kconfig @@ -20,3 +20,8 @@ config BOARD_IM880B select HAS_PERIPH_SPI select HAS_PERIPH_TIMER select HAS_PERIPH_UART + + # Clock configuration + select BOARD_HAS_LSE + +source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/limifrog-v1/Kconfig b/boards/limifrog-v1/Kconfig index 798b48b50a..6d324cc3f8 100644 --- a/boards/limifrog-v1/Kconfig +++ b/boards/limifrog-v1/Kconfig @@ -18,3 +18,5 @@ config BOARD_LIMIFROG_V1 select HAS_PERIPH_SPI select HAS_PERIPH_TIMER select HAS_PERIPH_UART + +source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/lobaro-lorabox/Kconfig b/boards/lobaro-lorabox/Kconfig index 0cd2f446c3..50c8707aa6 100644 --- a/boards/lobaro-lorabox/Kconfig +++ b/boards/lobaro-lorabox/Kconfig @@ -20,3 +20,8 @@ config BOARD_LOBARO_LORABOX select HAS_PERIPH_SPI_GPIO_MODE select HAS_PERIPH_TIMER select HAS_PERIPH_UART + + # Clock configuration + select BOARD_HAS_LSE + +source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/lsn50/Kconfig b/boards/lsn50/Kconfig index 8ff12a0b77..e892eaecd4 100644 --- a/boards/lsn50/Kconfig +++ b/boards/lsn50/Kconfig @@ -28,3 +28,8 @@ config BOARD_LSN50 # The 0.10.0 openocd version in Ubuntu Bionic doesn't work. The change was # introduced after Jun 8, 2017 - v0.10.0-1-20170607-2132-dev. select HAS_RIOTBOOT + + # Clock configuration + select BOARD_HAS_LSE + +source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/nucleo-l031k6/Kconfig b/boards/nucleo-l031k6/Kconfig index 1ea29212b0..8e5f44fd68 100644 --- a/boards/nucleo-l031k6/Kconfig +++ b/boards/nucleo-l031k6/Kconfig @@ -24,4 +24,7 @@ config BOARD_NUCLEO_L031K6 select HAS_PERIPH_TIMER select HAS_PERIPH_UART + # Clock configuration + select BOARD_HAS_LSE + source "$(RIOTBOARD)/common/nucleo32/Kconfig" diff --git a/boards/nucleo-l053r8/Kconfig b/boards/nucleo-l053r8/Kconfig index 1e5617b34c..6cce5d6954 100644 --- a/boards/nucleo-l053r8/Kconfig +++ b/boards/nucleo-l053r8/Kconfig @@ -22,4 +22,7 @@ config BOARD_NUCLEO_L053R8 select HAS_PERIPH_TIMER select HAS_PERIPH_UART + # Clock configuration + select BOARD_HAS_LSE + source "$(RIOTBOARD)/common/nucleo64/Kconfig" diff --git a/boards/nucleo-l073rz/Kconfig b/boards/nucleo-l073rz/Kconfig index 4b57375166..633d47e6bd 100644 --- a/boards/nucleo-l073rz/Kconfig +++ b/boards/nucleo-l073rz/Kconfig @@ -32,4 +32,7 @@ config BOARD_NUCLEO_L073RZ # introduced after Jun 8, 2017 - v0.10.0-1-20170607-2132-dev. select HAS_RIOTBOOT + # Clock configuration + select BOARD_HAS_LSE + source "$(RIOTBOARD)/common/nucleo64/Kconfig" diff --git a/boards/nz32-sc151/Kconfig b/boards/nz32-sc151/Kconfig index 2297bd78e6..41f34eee7d 100644 --- a/boards/nz32-sc151/Kconfig +++ b/boards/nz32-sc151/Kconfig @@ -23,3 +23,5 @@ config BOARD_NZ32_SC151 select HAS_PERIPH_SPI_GPIO_MODE select HAS_PERIPH_TIMER select HAS_PERIPH_UART + +source "$(RIOTBOARD)/common/stm32/Kconfig" diff --git a/boards/stm32l0538-disco/Kconfig b/boards/stm32l0538-disco/Kconfig index 32d4a5667c..e188a2d188 100644 --- a/boards/stm32l0538-disco/Kconfig +++ b/boards/stm32l0538-disco/Kconfig @@ -18,3 +18,5 @@ config BOARD_STM32L0538_DISCO select HAS_PERIPH_SPI select HAS_PERIPH_TIMER select HAS_PERIPH_UART + +source "$(RIOTBOARD)/common/stm32/Kconfig"