前回はSTM32F103RC向けのソースフォークをしたのですが、今回はSTM32F411CEBlackPill向けのフォークについてです。もともとboards/arm/stm32/stm32f411-minimumというソースがありますが、2021/03現在、RCCの設定がうまくいっていないようで、USBを使ったサンプルはなく、nsh(シリアルコンソール)しかサンプルが入っていません。そこで、STM32F103RC向けのフォークと同様に、ソースをフォークしてみました。
基本的には前回とおなじやり方なのですが、USB関係を動かすためには、RCCの設定(include/board.h)を修正する必要がありますので、今回はそこだけですが、UPしておきます。
$ diff -urN boards/arm/stm32/stm32f411-minimum/include/board.h boards/arm/stm32/weact-f411ce/include/board.h --- boards/arm/stm32/stm32f411-minimum/include/board.h 2021-03-16 23:33:19.400000000 +0900 +++ boards/arm/stm32/weact-f411ce/include/board.h 2021-03-17 00:21:58.290000000 +0900 @@ -1,5 +1,5 @@ /**************************************************************************** - * boards/arm/stm32/stm32f411-minimum/include/board.h + * boards/arm/stm32/weact-f411ce/include/board.h * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with @@ -18,8 +18,8 @@ * ****************************************************************************/ -#ifndef __BOARDS_ARM_STM32_STM32F411_MINIMUM_INCLUDE_BOARD_H -#define __BOARDS_ARM_STM32_STM32F411_MINIMUM_INCLUDE_BOARD_H +#ifndef __BOARDS_ARM_STM32_WEACT_F411CE_INCLUDE_BOARD_H +#define __BOARDS_ARM_STM32_WEACT_F411CE_INCLUDE_BOARD_H /**************************************************************************** * Included Files @@ -42,13 +42,13 @@ * SYSCLK(Hz) : 96000000 Determined by PLL config * HCLK(Hz) : 96000000 (STM32_RCC_CFGR_HPRE) * AHB Prescaler : 1 (STM32_RCC_CFGR_HPRE) - * APB1 Prescaler : 4 (STM32_RCC_CFGR_PPRE1) - * APB2 Prescaler : 2 (STM32_RCC_CFGR_PPRE2) + * APB1 Prescaler : 2 (STM32_RCC_CFGR_PPRE1) + * APB2 Prescaler : 1 (STM32_RCC_CFGR_PPRE2) * HSI Frequency(Hz) : 16000000 (nominal) - * PLLM : 4 (STM32_PLLCFG_PLLM) + * PLLM : 25 (STM32_PLLCFG_PLLM) * PLLN : 192 (STM32_PLLCFG_PLLN) - * PLLP : 4 (STM32_PLLCFG_PLLP) - * PLLQ : 8 (STM32_PLLCFG_PPQ) + * PLLP : 2 (STM32_PLLCFG_PLLP) + * PLLQ : 4 (STM32_PLLCFG_PPQ) * Flash Latency(WS) : 3 * Prefetch Buffer : OFF * Instruction cache : ON @@ -132,16 +132,16 @@ /* APB2 clock (PCLK2) is HCLK (96MHz) */ -#define STM32_RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_HCLK /* PCLK2 = HCLK */ +#define STM32_RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_HCLK /* PCLK2 = HCLK / 1 */ #define STM32_PCLK2_FREQUENCY STM32_HCLK_FREQUENCY -/* Timers driven from APB2 will be twice PCLK2 */ +/* Timers driven from APB2 will be PCLK2 */ -#define STM32_APB2_TIM1_CLKIN (STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM8_CLKIN (STM32_PCLK2_FREQUENCY) -#define STM32_APB2_TIM9_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB2_TIM10_CLKIN (2*STM32_PCLK1_FREQUENCY) -#define STM32_APB2_TIM11_CLKIN (2*STM32_PCLK1_FREQUENCY) +#define STM32_APB2_TIM1_CLKIN STM32_PCLK2_FREQUENCY +#define STM32_APB2_TIM8_CLKIN STM32_PCLK2_FREQUENCY +#define STM32_APB2_TIM9_CLKIN STM32_PCLK2_FREQUENCY +#define STM32_APB2_TIM10_CLKIN STM32_PCLK2_FREQUENCY +#define STM32_APB2_TIM11_CLKIN STM32_PCLK2_FREQUENCY /* Timer Frequencies, if APBx is set to 1, frequency is same to APBx * otherwise frequency is 2xAPBx. @@ -150,14 +150,14 @@ /* REVISIT */ -#define BOARD_TIM1_FREQUENCY STM32_PCLK2_FREQUENCY +#define BOARD_TIM1_FREQUENCY (1 * STM32_PCLK2_FREQUENCY) #define BOARD_TIM2_FREQUENCY (2 * STM32_PCLK1_FREQUENCY) #define BOARD_TIM3_FREQUENCY (2 * STM32_PCLK1_FREQUENCY) #define BOARD_TIM4_FREQUENCY (2 * STM32_PCLK1_FREQUENCY) #define BOARD_TIM5_FREQUENCY (2 * STM32_PCLK1_FREQUENCY) #define BOARD_TIM6_FREQUENCY (2 * STM32_PCLK1_FREQUENCY) #define BOARD_TIM7_FREQUENCY (2 * STM32_PCLK1_FREQUENCY) -#define BOARD_TIM8_FREQUENCY STM32_PCLK2_FREQUENCY +#define BOARD_TIM8_FREQUENCY (1 * STM32_PCLK2_FREQUENCY) /* SDIO dividers. Note that slower clocking is required when DMA is disabled * in order to avoid RX overrun/TX underrun errors due to delayed responses @@ -328,4 +328,4 @@ #define BUTTON_USER_BIT (1 << BUTTON_USER) -#endif /* __BOARDS_ARM_STM32_STM32F411_MINIMUM_INCLUDE_BOARD_H */ +#endif /* __BOARDS_ARM_STM32_WEACT_F411CE_INCLUDE_BOARD_H */diffを見ていただければわかると思いますが、フォーク名はweact-f411ce/WEACT_F411CEにしています。なお、USBを使うことを前提にしているため、メインクロックは最大で96MHzになります。あとは、前回と同じ要領で編集すれば、STM32F4 Black Pill向けのソースフォークは7・8割方ほどできているということになります。なお、nsh, usbnsh, rndis, w25(spi flash)の動作確認をしています(SDIOの動作確認はしていません。) 今回は以上です。それでは。
コメント
コメントを投稿