stm32: Support for STM32F401 (#3853)
This module adds support for the STM32F401 microcontrollers Signed-off-by: Marco D'Alessio <marco@wrecklab.com>
This commit is contained in:
parent
60e4cddf36
commit
ef4d9c3abd
|
@ -25,6 +25,9 @@ choice
|
||||||
config MACH_STM32F207
|
config MACH_STM32F207
|
||||||
bool "STM32F207"
|
bool "STM32F207"
|
||||||
select MACH_STM32F2
|
select MACH_STM32F2
|
||||||
|
config MACH_STM32F401
|
||||||
|
bool "STM32F401"
|
||||||
|
select MACH_STM32F4
|
||||||
config MACH_STM32F405
|
config MACH_STM32F405
|
||||||
bool "STM32F405"
|
bool "STM32F405"
|
||||||
select MACH_STM32F4
|
select MACH_STM32F4
|
||||||
|
@ -65,6 +68,7 @@ config MCU
|
||||||
default "stm32f070xb" if MACH_STM32F070
|
default "stm32f070xb" if MACH_STM32F070
|
||||||
default "stm32f103xe" if MACH_STM32F103
|
default "stm32f103xe" if MACH_STM32F103
|
||||||
default "stm32f207xx" if MACH_STM32F207
|
default "stm32f207xx" if MACH_STM32F207
|
||||||
|
default "stm32f401xc" if MACH_STM32F401
|
||||||
default "stm32f405xx" if MACH_STM32F405
|
default "stm32f405xx" if MACH_STM32F405
|
||||||
default "stm32f407xx" if MACH_STM32F407
|
default "stm32f407xx" if MACH_STM32F407
|
||||||
default "stm32f446xx" if MACH_STM32F446
|
default "stm32f446xx" if MACH_STM32F446
|
||||||
|
@ -75,6 +79,7 @@ config CLOCK_FREQ
|
||||||
default 64000000 if MACH_STM32F103 && STM32_CLOCK_REF_INTERNAL
|
default 64000000 if MACH_STM32F103 && STM32_CLOCK_REF_INTERNAL
|
||||||
default 72000000 if MACH_STM32F103
|
default 72000000 if MACH_STM32F103
|
||||||
default 120000000 if MACH_STM32F207
|
default 120000000 if MACH_STM32F207
|
||||||
|
default 84000000 if MACH_STM32F401
|
||||||
default 168000000 if MACH_STM32F405 || MACH_STM32F407
|
default 168000000 if MACH_STM32F405 || MACH_STM32F407
|
||||||
default 180000000 if MACH_STM32F446
|
default 180000000 if MACH_STM32F446
|
||||||
|
|
||||||
|
@ -83,8 +88,8 @@ config FLASH_SIZE
|
||||||
default 0x8000 if MACH_STM32F042
|
default 0x8000 if MACH_STM32F042
|
||||||
default 0x20000 if MACH_STM32F070
|
default 0x20000 if MACH_STM32F070
|
||||||
default 0x10000 if MACH_STM32F103 # Flash size of stm32f103x8 (64KiB)
|
default 0x10000 if MACH_STM32F103 # Flash size of stm32f103x8 (64KiB)
|
||||||
default 0x40000 if MACH_STM32F2
|
default 0x40000 if MACH_STM32F2 || MACH_STM32F401
|
||||||
default 0x80000 if MACH_STM32F4
|
default 0x80000 if MACH_STM32F405 || MACH_STM32F407 || MACH_STM32F446
|
||||||
|
|
||||||
config RAM_START
|
config RAM_START
|
||||||
hex
|
hex
|
||||||
|
@ -96,7 +101,9 @@ config RAM_SIZE
|
||||||
default 0x4000 if MACH_STM32F070
|
default 0x4000 if MACH_STM32F070
|
||||||
default 0x5000 if MACH_STM32F103 # Ram size of stm32f103x8 (20KiB)
|
default 0x5000 if MACH_STM32F103 # Ram size of stm32f103x8 (20KiB)
|
||||||
default 0x20000 if MACH_STM32F207
|
default 0x20000 if MACH_STM32F207
|
||||||
default 0x20000 if MACH_STM32F4
|
default 0x10000 if MACH_STM32F401
|
||||||
|
default 0x20000 if MACH_STM32F405 || MACH_STM32F407 || MACH_STM32F446
|
||||||
|
|
||||||
|
|
||||||
config STACK_SIZE
|
config STACK_SIZE
|
||||||
int
|
int
|
||||||
|
@ -184,7 +191,7 @@ choice
|
||||||
config CAN_PINS_PB5_PB6
|
config CAN_PINS_PB5_PB6
|
||||||
bool "Pins PB5(rx) and PB6(tx)" if MACH_STM32F4
|
bool "Pins PB5(rx) and PB6(tx)" if MACH_STM32F4
|
||||||
config CAN_PINS_PB12_PB13
|
config CAN_PINS_PB12_PB13
|
||||||
bool "Pins PB12(rx) and PB13(tx)" if MACH_STM32F4
|
bool "Pins PB12(rx) and PB13(tx)" if MACH_STM32F405 || MACH_STM32F407
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config STM32F0_TRIM
|
config STM32F0_TRIM
|
||||||
|
@ -221,7 +228,7 @@ choice
|
||||||
config STM32_SERIAL_USART3
|
config STM32_SERIAL_USART3
|
||||||
bool "USART3"
|
bool "USART3"
|
||||||
config STM32_SERIAL_USART3_ALT
|
config STM32_SERIAL_USART3_ALT
|
||||||
bool "USART3 (on PD9/PD8)" if MACH_STM32F4
|
bool "USART3 (on PD9/PD8)" if MACH_STM32F405 || MACH_STM32F407
|
||||||
endchoice
|
endchoice
|
||||||
config SERIAL_PORT
|
config SERIAL_PORT
|
||||||
int
|
int
|
||||||
|
|
|
@ -83,7 +83,7 @@ gpio_adc_setup(uint32_t pin)
|
||||||
// Determine which ADC block to use
|
// Determine which ADC block to use
|
||||||
ADC_TypeDef *adc = ADC1;
|
ADC_TypeDef *adc = ADC1;
|
||||||
uint32_t adc_base = ADC1_BASE;
|
uint32_t adc_base = ADC1_BASE;
|
||||||
#if CONFIG_MACH_STM32F4
|
#if CONFIG_MACH_STM32F405 || CONFIG_MACH_STM32F407
|
||||||
if (chan >= 19) {
|
if (chan >= 19) {
|
||||||
// On the STM32F4, some ADC channels are only available from ADC3
|
// On the STM32F4, some ADC channels are only available from ADC3
|
||||||
adc = ADC3;
|
adc = ADC3;
|
||||||
|
@ -108,7 +108,7 @@ gpio_adc_setup(uint32_t pin)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pin == ADC_TEMPERATURE_PIN) {
|
if (pin == ADC_TEMPERATURE_PIN) {
|
||||||
#if !CONFIG_MACH_STM32F1
|
#if !(CONFIG_MACH_STM32F1 || CONFIG_MACH_STM32F401)
|
||||||
ADC123_COMMON->CCR = ADC_CCR_TSVREFE;
|
ADC123_COMMON->CCR = ADC_CCR_TSVREFE;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -143,7 +143,7 @@ enable_clock_stm32f20x(void)
|
||||||
static void
|
static void
|
||||||
enable_clock_stm32f40x(void)
|
enable_clock_stm32f40x(void)
|
||||||
{
|
{
|
||||||
#if CONFIG_MACH_STM32F405 || CONFIG_MACH_STM32F407
|
#if CONFIG_MACH_STM32F405 || CONFIG_MACH_STM32F407 || CONFIG_MACH_STM32F401
|
||||||
uint32_t pll_base = 2000000, pll_freq = CONFIG_CLOCK_FREQ * 2, pllcfgr;
|
uint32_t pll_base = 2000000, pll_freq = CONFIG_CLOCK_FREQ * 2, pllcfgr;
|
||||||
if (!CONFIG_STM32_CLOCK_REF_INTERNAL) {
|
if (!CONFIG_STM32_CLOCK_REF_INTERNAL) {
|
||||||
// Configure 168Mhz PLL from external crystal (HSE)
|
// Configure 168Mhz PLL from external crystal (HSE)
|
||||||
|
@ -218,7 +218,8 @@ clock_setup(void)
|
||||||
// Configure and enable PLL
|
// Configure and enable PLL
|
||||||
if (CONFIG_MACH_STM32F207)
|
if (CONFIG_MACH_STM32F207)
|
||||||
enable_clock_stm32f20x();
|
enable_clock_stm32f20x();
|
||||||
else if (CONFIG_MACH_STM32F405 || CONFIG_MACH_STM32F407)
|
else if (CONFIG_MACH_STM32F405 || CONFIG_MACH_STM32F407
|
||||||
|
|| CONFIG_MACH_STM32F401)
|
||||||
enable_clock_stm32f40x();
|
enable_clock_stm32f40x();
|
||||||
else
|
else
|
||||||
enable_clock_stm32f446();
|
enable_clock_stm32f446();
|
||||||
|
|
Loading…
Reference in New Issue