mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-12-26 06:53:52 +01:00
Merge pull request #15001 from aabadie/pr/boards/stm32f0f1f3_clock_kconfig_only
boards/stm32f1f3: model clock configuration in Kconfig
This commit is contained in:
commit
c4d832e653
@ -17,3 +17,9 @@ config BOARD_COMMON_BLXXXPILL
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
||||
select HAS_PERIPH_QDEC
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -17,3 +17,9 @@ config BOARD_COMMON_IOTLAB
|
||||
|
||||
# Put other features for this board (in alphabetical order)
|
||||
select HAS_RIOTBOOT
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -11,3 +11,6 @@ FEATURES_PROVIDED += periph_uart
|
||||
|
||||
# Put other features for this board (in alphabetical order)
|
||||
FEATURES_PROVIDED += riotboot
|
||||
|
||||
# iotlab boards provide a custom default Kconfig clock configuration
|
||||
KCONFIG_ADD_CONFIG += $(RIOTBOARD)/common/iotlab/clock.config
|
||||
|
||||
4
boards/common/iotlab/clock.config
Normal file
4
boards/common/iotlab/clock.config
Normal file
@ -0,0 +1,4 @@
|
||||
# iotlab based boards provide a 16MHz HSE so they need a predivider of 2
|
||||
# to remain with a 72MHz sysclk by default.
|
||||
CONFIG_CUSTOM_PLL_PARAMS=y
|
||||
CONFIG_CLOCK_PLL_PREDIV=2
|
||||
@ -20,3 +20,9 @@ config BOARD_FOX
|
||||
select HAS_PERIPH_SPI
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -8,3 +8,7 @@ FEATURES_PROVIDED += periph_rtt
|
||||
FEATURES_PROVIDED += periph_spi
|
||||
FEATURES_PROVIDED += periph_timer
|
||||
FEATURES_PROVIDED += periph_uart
|
||||
|
||||
# fox board provides a custom default Kconfig clock configuration. The same as
|
||||
# iotlab boards.
|
||||
KCONFIG_ADD_CONFIG += $(RIOTBOARD)/common/iotlab/clock.config
|
||||
|
||||
@ -18,3 +18,5 @@ config BOARD_MAPLE_MINI
|
||||
select HAS_PERIPH_SPI
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -22,4 +22,8 @@ config BOARD_NUCLEO_F103RB
|
||||
select HAS_PERIPH_UART
|
||||
select HAS_PERIPH_SPI
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/nucleo64/Kconfig"
|
||||
|
||||
@ -26,4 +26,8 @@ config BOARD_NUCLEO_F302R8
|
||||
# Put other features for this board (in alphabetical order)
|
||||
select HAS_RIOTBOOT
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/nucleo64/Kconfig"
|
||||
|
||||
@ -19,15 +19,6 @@
|
||||
#ifndef PERIPH_CONF_H
|
||||
#define PERIPH_CONF_H
|
||||
|
||||
/* Adjust PLL factors:
|
||||
- On nucleo-f303k8, there's no HSE and PREDIV is hard-wired to 2
|
||||
- to reach the maximum possible system clock (64MHz) set PLL_MUL to 16
|
||||
so system clock = (HSI8 / 2) * 16 = 64MHz */
|
||||
#define CONFIG_CLOCK_PLL_PREDIV (2)
|
||||
#ifndef CONFIG_CLOCK_PLL_MUL
|
||||
#define CONFIG_CLOCK_PLL_MUL (16)
|
||||
#endif
|
||||
|
||||
#include "periph_cpu.h"
|
||||
#include "clk_conf.h"
|
||||
#include "cfg_timer_tim2.h"
|
||||
|
||||
@ -26,4 +26,8 @@ config BOARD_NUCLEO_F303RE
|
||||
# Put other features for this board (in alphabetical order)
|
||||
select HAS_RIOTBOOT
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/nucleo64/Kconfig"
|
||||
|
||||
@ -25,4 +25,8 @@ config BOARD_NUCLEO_F303ZE
|
||||
# Put other features for this board (in alphabetical order)
|
||||
select HAS_RIOTBOOT
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/nucleo64/Kconfig"
|
||||
|
||||
@ -26,4 +26,8 @@ config BOARD_NUCLEO_F334R8
|
||||
# Put other features for this board (in alphabetical order)
|
||||
select HAS_RIOTBOOT
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/nucleo64/Kconfig"
|
||||
|
||||
@ -23,3 +23,9 @@ config BOARD_OLIMEXINO_STM32
|
||||
select HAS_PERIPH_SPI
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
select BOARD_HAS_LSE
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -16,3 +16,8 @@ config BOARD_OPENCM904
|
||||
# Put defined MCU peripherals here (in alphabetical order)
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -17,3 +17,5 @@ config BOARD_SPARK_CORE
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_SPI
|
||||
select HAS_PERIPH_UART
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -21,3 +21,8 @@ config BOARD_STM32F3DISCOVERY
|
||||
select HAS_PERIPH_SPI
|
||||
select HAS_PERIPH_TIMER
|
||||
select HAS_PERIPH_UART
|
||||
|
||||
# Clock configuration
|
||||
select BOARD_HAS_HSE
|
||||
|
||||
source "$(RIOTBOARD)/common/stm32/Kconfig"
|
||||
|
||||
@ -84,17 +84,29 @@ extern "C" {
|
||||
#define CLOCK_HSI MHZ(8)
|
||||
|
||||
/* The following parameters configure a 72MHz system clock with HSE (8MHz or
|
||||
16MHz) and HSI (8MHz) as input clock */
|
||||
16MHz) and HSI (8MHz) as input clock
|
||||
On stm32f303x6, stm32f303x8, stm32f303xB, stm32f303xC, stm32f328x8 and
|
||||
stm32f358xC lines, PREDIV is hard-wired to 2 (see RM0316 p.126 to p.128).
|
||||
To reach the maximum possible system clock (64MHz) set PLL_PREDIV to 2 and
|
||||
PLL_MUL to 16, so system clock = (HSI8 / 2) * 16 = 64MHz
|
||||
*/
|
||||
#ifndef CONFIG_CLOCK_PLL_PREDIV
|
||||
#if IS_ACTIVE(CONFIG_BOARD_HAS_HSE) && (CLOCK_HSE == MHZ(16))
|
||||
#if (IS_ACTIVE(CONFIG_BOARD_HAS_HSE) && (CLOCK_HSE == MHZ(16))) || \
|
||||
defined(CPU_LINE_STM32F303x6) || defined(CPU_LINE_STM32F303x8) || \
|
||||
defined(CPU_LINE_STM32F303xB) || defined(CPU_LINE_STM32F303xC) || \
|
||||
defined(CPU_LINE_STM32F328x8) || defined(CPU_LINE_STM32F358xC)
|
||||
#define CONFIG_CLOCK_PLL_PREDIV (2)
|
||||
#else
|
||||
#define CONFIG_CLOCK_PLL_PREDIV (1)
|
||||
#endif
|
||||
#endif
|
||||
#ifndef CONFIG_CLOCK_PLL_MUL
|
||||
#if defined(CPU_LINE_STM32F303x8)
|
||||
#define CONFIG_CLOCK_PLL_MUL (16)
|
||||
#else
|
||||
#define CONFIG_CLOCK_PLL_MUL (9)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if IS_ACTIVE(CONFIG_USE_CLOCK_HSI)
|
||||
#define CLOCK_CORECLOCK (CLOCK_HSI)
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
#
|
||||
|
||||
menu "STM32 clock configuration"
|
||||
depends on CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_F0 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_L5 || CPU_FAM_WB
|
||||
depends on !CPU_FAM_F2 && !CPU_FAM_F4 && !CPU_FAM_F7
|
||||
|
||||
choice
|
||||
bool "Clock source selection"
|
||||
@ -112,19 +112,21 @@ endif # CPU_FAM_G4 || CPU_FAM_L4 || CPU_FAM_L5
|
||||
|
||||
endif # CPU_FAM_G0 || CPU_FAM_G4 || CPU_FAM_L4 || CPU_FAM_L5 || CPU_FAM_WB
|
||||
|
||||
if CPU_FAM_F0
|
||||
if CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3
|
||||
config CLOCK_PLL_PREDIV
|
||||
int "PLLIN division factor" if CUSTOM_PLL_PARAMS && !CPU_LINE_STM32F031X6 && !CPU_LINE_STM32F042X6
|
||||
default 2 if CPU_LINE_STM32F031X6 || CPU_LINE_STM32F042X6
|
||||
int "PLLIN division factor" if CUSTOM_PLL_PARAMS && !CPU_LINE_STM32F031X6 && !CPU_LINE_STM32F042X6 && !CPU_LINE_STM32F303X8
|
||||
default 2 if CPU_LINE_STM32F031X6 || CPU_LINE_STM32F042X6 || CPU_LINE_STM32F303X8
|
||||
default 1
|
||||
range 1 16
|
||||
|
||||
config CLOCK_PLL_MUL
|
||||
int "PLLIN multiply factor" if CUSTOM_PLL_PARAMS
|
||||
default 16 if CPU_LINE_STM32F303X8
|
||||
default 12 if CPU_LINE_STM32F031X6 || CPU_LINE_STM32F042X6
|
||||
default 6
|
||||
default 9 if CPU_FAM_F1 || CPU_FAM_F3
|
||||
default 6 if CPU_FAM_F0
|
||||
range 2 16
|
||||
endif
|
||||
endif # CPU_FAM_F0 || CPU_FAM_F1 || CPU_FAM_F3
|
||||
|
||||
if CPU_FAM_L0 || CPU_FAM_L1
|
||||
config CLOCK_PLL_DIV
|
||||
@ -307,6 +309,7 @@ endif # CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_L5 || CPU_FAM_WB
|
||||
choice
|
||||
bool "APB1 prescaler (division factor of HCLK to produce PCLK1)"
|
||||
default CLOCK_APB1_DIV_4 if CPU_FAM_L4 || CPU_FAM_L5 || CPU_FAM_WB
|
||||
default CLOCK_APB1_DIV_2 if CPU_FAM_F1 || CPU_FAM_F3
|
||||
default CLOCK_APB1_DIV_1
|
||||
|
||||
config CLOCK_APB1_DIV_1
|
||||
@ -336,7 +339,7 @@ config CLOCK_APB1_DIV
|
||||
|
||||
choice
|
||||
bool "APB2 prescaler (division factor of HCLK to produce PCLK2)"
|
||||
depends on CPU_FAM_G4 || CPU_FAM_L0 || CPU_FAM_L1 || CPU_FAM_L4 || CPU_FAM_L5 || CPU_FAM_WB
|
||||
depends on !CPU_FAM_G0 && !CPU_FAM_F0
|
||||
default CLOCK_APB2_DIV_2 if CPU_FAM_L4 || CPU_FAM_L5 || CPU_FAM_WB
|
||||
default CLOCK_APB2_DIV_1
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user