boards: arm: Add board definition for Adafruit Feather STM32F405 Express
Added board definition additions for adafruit_feather_stm32f405 board. Signed-off-by: Lucian Copeland <hierophect@gmail.com>
This commit is contained in:
parent
ded0ea62a1
commit
dcacaf7078
10 changed files with 336 additions and 0 deletions
7
boards/arm/adafruit_feather_stm32f405/CMakeLists.txt
Normal file
7
boards/arm/adafruit_feather_stm32f405/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if(CONFIG_PINMUX)
|
||||
zephyr_library()
|
||||
zephyr_library_sources(pinmux.c)
|
||||
zephyr_library_include_directories(${ZEPHYR_BASE}/drivers)
|
||||
endif()
|
8
boards/arm/adafruit_feather_stm32f405/Kconfig.board
Normal file
8
boards/arm/adafruit_feather_stm32f405/Kconfig.board
Normal file
|
@ -0,0 +1,8 @@
|
|||
# Adafruit Feather STM32F405 Express board configuration
|
||||
|
||||
# Copyright (c) 2020 Lucian Copeland for Adafruit Industries
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config BOARD_ADAFRUIT_FEATHER_STM32F405
|
||||
bool "Feather STM32F405 Express Board"
|
||||
depends on SOC_STM32F405XG
|
23
boards/arm/adafruit_feather_stm32f405/Kconfig.defconfig
Normal file
23
boards/arm/adafruit_feather_stm32f405/Kconfig.defconfig
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Adafruit Feather STM32F405 Express board configuration
|
||||
|
||||
# Copyright (c) 2020 Lucian Copeland for Adafruit Industries.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if BOARD_ADAFRUIT_FEATHER_STM32F405
|
||||
|
||||
config BOARD
|
||||
default "adafruit_feather_stm32f405"
|
||||
|
||||
config UART_3
|
||||
default y
|
||||
depends on UART_CONSOLE
|
||||
|
||||
config I2C_1
|
||||
default y
|
||||
depends on I2C
|
||||
|
||||
config SPI_2
|
||||
default y
|
||||
depends on SPI
|
||||
|
||||
endif # BOARD_ADAFRUIT_FEATHER_STM32F405
|
|
@ -0,0 +1,55 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Lucian Copeland for Adafruit Industries
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <st/f4/stm32f405Xg.dtsi>
|
||||
|
||||
/ {
|
||||
model = "Adafruit Feather STM32F405 Express";
|
||||
compatible = "st,adafruit_feather_stm32f405", "st,stm32f405";
|
||||
|
||||
chosen {
|
||||
zephyr,console = &usart3;
|
||||
zephyr,shell-uart = &usart3;
|
||||
zephyr,sram = &sram0;
|
||||
zephyr,flash = &flash0;
|
||||
zephyr,ccm = &ccm0;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
led: led {
|
||||
gpios = <&gpioc 1 GPIO_INT_ACTIVE_HIGH>;
|
||||
label = "User LED";
|
||||
};
|
||||
};
|
||||
|
||||
aliases {
|
||||
led0 = &led;
|
||||
};
|
||||
};
|
||||
|
||||
&usart3 {
|
||||
current-speed = <115200>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
clock-frequency = <I2C_BITRATE_FAST>;
|
||||
};
|
||||
|
||||
&spi2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rtc {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usbotg_fs {
|
||||
status = "okay";
|
||||
};
|
|
@ -0,0 +1,14 @@
|
|||
identifier: adafruit_feather_stm32f405
|
||||
name: ADAFRUIT_FEATHER_STM32F405
|
||||
type: mcu
|
||||
arch: arm
|
||||
toolchain:
|
||||
- zephyr
|
||||
- gnuarmemb
|
||||
- xtools
|
||||
ram: 128
|
||||
flash: 1024
|
||||
supported:
|
||||
- i2c
|
||||
- spi
|
||||
- usb
|
|
@ -0,0 +1,38 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
CONFIG_SOC_SERIES_STM32F4X=y
|
||||
CONFIG_SOC_STM32F405XG=y
|
||||
# 168MHz system clock
|
||||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=168000000
|
||||
|
||||
# Enable MPU
|
||||
CONFIG_ARM_MPU=y
|
||||
|
||||
CONFIG_SERIAL=y
|
||||
|
||||
# console
|
||||
CONFIG_CONSOLE=y
|
||||
CONFIG_UART_CONSOLE=y
|
||||
|
||||
# enable pinmux
|
||||
CONFIG_PINMUX=y
|
||||
|
||||
# enable GPIO
|
||||
CONFIG_GPIO=y
|
||||
|
||||
# clock configuration
|
||||
CONFIG_CLOCK_CONTROL=y
|
||||
|
||||
# Clock configuration for Cube Clock control driver
|
||||
CONFIG_CLOCK_STM32_HSE_CLOCK=12000000
|
||||
CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y
|
||||
# use HSE as PLL input
|
||||
CONFIG_CLOCK_STM32_PLL_SRC_HSE=y
|
||||
# produce 168MHz clock at PLL output
|
||||
CONFIG_CLOCK_STM32_PLL_M_DIVISOR=12
|
||||
CONFIG_CLOCK_STM32_PLL_N_MULTIPLIER=336
|
||||
CONFIG_CLOCK_STM32_PLL_P_DIVISOR=2
|
||||
CONFIG_CLOCK_STM32_PLL_Q_DIVISOR=7
|
||||
CONFIG_CLOCK_STM32_AHB_PRESCALER=1
|
||||
CONFIG_CLOCK_STM32_APB1_PRESCALER=4
|
||||
CONFIG_CLOCK_STM32_APB2_PRESCALER=2
|
7
boards/arm/adafruit_feather_stm32f405/board.cmake
Normal file
7
boards/arm/adafruit_feather_stm32f405/board.cmake
Normal file
|
@ -0,0 +1,7 @@
|
|||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
board_runner_args(dfu-util "--pid=0483:df11" "--alt=0" "--dfuse")
|
||||
board_runner_args(jlink "--device=STM32F405RG" "--speed=4000")
|
||||
|
||||
include(${ZEPHYR_BASE}/boards/common/dfu-util.board.cmake)
|
||||
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
BIN
boards/arm/adafruit_feather_stm32f405/doc/img/f405feather.jpg
Normal file
BIN
boards/arm/adafruit_feather_stm32f405/doc/img/f405feather.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 174 KiB |
138
boards/arm/adafruit_feather_stm32f405/doc/index.rst
Normal file
138
boards/arm/adafruit_feather_stm32f405/doc/index.rst
Normal file
|
@ -0,0 +1,138 @@
|
|||
.. _adafruit_feather_stm32f405:
|
||||
|
||||
Adafruit Feather STM32F405 Express
|
||||
##################################
|
||||
|
||||
Overview
|
||||
********
|
||||
|
||||
The Adafruit Feather STM32F405 is an ARM Development board in the
|
||||
Feather standard layout, sharing peripheral placement with other
|
||||
devices labeled as Feathers or FeatherWings. The board is equipped
|
||||
with a lithium ion battery charger, native USB C connector, 2MB of
|
||||
external flash memory, and SD card socket.
|
||||
|
||||
.. image:: img/f405feather.jpg
|
||||
:width: 640px
|
||||
:align: center
|
||||
:alt: Adafruit Feather STM32F405 Express
|
||||
|
||||
Hardware
|
||||
********
|
||||
|
||||
- STM32F405 Cortex M4 with FPU and 1MB Flash, 168MHz speed
|
||||
- 192KB RAM total - 128 KB RAM + 64 KB program-only/cache RAM
|
||||
- USB C power and data
|
||||
- LiPo connector and charger
|
||||
- SD socket on the bottom, connected to SDIO port
|
||||
- 2 MB SPI Flash chip
|
||||
- Built in NeoPixel indicator
|
||||
- I2C, UART, GPIO, ADCs, DACs
|
||||
- Qwiic/STEMMA-QT connector for fast I2C connectivity
|
||||
- SWD SMT mount region on board underside.
|
||||
|
||||
Supported Features
|
||||
==================
|
||||
|
||||
The Adafruit Feather STM32F405 board configuration supports the
|
||||
following hardware features:
|
||||
|
||||
+-----------+------------+----------------------+
|
||||
| Interface | Controller | Driver/Component |
|
||||
+===========+============+======================+
|
||||
| NVIC | on-chip | nested vectored |
|
||||
| | | interrupt controller |
|
||||
+-----------+------------+----------------------+
|
||||
| SYSTICK | on-chip | system clock |
|
||||
+-----------+------------+----------------------+
|
||||
| UART | on-chip | serial port |
|
||||
+-----------+------------+----------------------+
|
||||
| GPIO | on-chip | gpio |
|
||||
+-----------+------------+----------------------+
|
||||
| I2C | on-chip | i2c |
|
||||
+-----------+------------+----------------------+
|
||||
| SPI | on-chip | spi |
|
||||
+-----------+------------+----------------------+
|
||||
| USB | on-chip | USB device |
|
||||
+-----------+------------+----------------------+
|
||||
|
||||
Other hardware features are not supported by the Zephyr kernel.
|
||||
|
||||
Connections and IOs
|
||||
===================
|
||||
|
||||
The `Adafruit Feather STM32F405 Express Learn site`_ has detailed
|
||||
information about the board including `pinouts`_ and the `schematic`_.
|
||||
|
||||
System Clock
|
||||
============
|
||||
|
||||
The STM32F405 is configured to use the 12MHz HSE Oscillator to produce
|
||||
a 168MHz system clock.
|
||||
|
||||
Serial Port
|
||||
===========
|
||||
|
||||
The STM32F405 UART 3 peripheral is available on the TX (PB10) and RX
|
||||
(PB11) pins.
|
||||
|
||||
I2C Port
|
||||
========
|
||||
|
||||
The STM32F405 I2C1 peripheral is available on the SDA (PB7) and SCL
|
||||
(PB6) pins.
|
||||
|
||||
SPI Port
|
||||
========
|
||||
|
||||
The STM32F405 SPI2 peripheral is available on the SCK (PB13), MI
|
||||
(PB14) and MO (PB15) pins.
|
||||
|
||||
Programming and Debugging
|
||||
*************************
|
||||
|
||||
DFU-Util programming is supported through Zephyr by default. Set up
|
||||
of the built in DFU-Util bootloader is possible by following the
|
||||
`instructions on the Learn website`_.
|
||||
|
||||
Flashing
|
||||
========
|
||||
|
||||
#. Build the Zephyr kernel and the :ref:`blinky-sample` sample
|
||||
application:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/basic/blinky
|
||||
:board: adafruit_feather_stm32f405
|
||||
:goals: build
|
||||
:compact:
|
||||
|
||||
#. On the Adafruit Feather STM32F405, connect the 3.3V pin to the B0
|
||||
boot pin with a jumper wire.
|
||||
|
||||
#. Flash the image:
|
||||
|
||||
.. zephyr-app-commands::
|
||||
:zephyr-app: samples/basic/blinky
|
||||
:board: adafruit_feather_stm32f405
|
||||
:goals: flash
|
||||
:compact:
|
||||
|
||||
You should see the D13 LED blinking.
|
||||
|
||||
References
|
||||
**********
|
||||
|
||||
.. target-notes::
|
||||
|
||||
.. _Adafruit Feather STM32F405 Express Learn site:
|
||||
https://learn.adafruit.com/adafruit-stm32f405-feather-express/
|
||||
|
||||
.. _pinouts:
|
||||
https://learn.adafruit.com/adafruit-stm32f405-feather-express/pinouts
|
||||
|
||||
.. _schematic:
|
||||
https://learn.adafruit.com/adafruit-stm32f405-feather-express/downloads
|
||||
|
||||
.. _instructions on the Learn website:
|
||||
https://learn.adafruit.com/adafruit-stm32f405-feather-express/dfu-bootloader-details
|
46
boards/arm/adafruit_feather_stm32f405/pinmux.c
Normal file
46
boards/arm/adafruit_feather_stm32f405/pinmux.c
Normal file
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright (c) 2020 Lucian Copeland for Adafruit Industries
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <kernel.h>
|
||||
#include <device.h>
|
||||
#include <init.h>
|
||||
#include <drivers/pinmux.h>
|
||||
#include <sys/sys_io.h>
|
||||
|
||||
#include <pinmux/stm32/pinmux_stm32.h>
|
||||
|
||||
/* pin assignments for Feather STM32F405 board */
|
||||
static const struct pin_config pinconf[] = {
|
||||
#ifdef CONFIG_UART_3
|
||||
{STM32_PIN_PB10, STM32F4_PINMUX_FUNC_PB10_USART3_TX},
|
||||
{STM32_PIN_PB11, STM32F4_PINMUX_FUNC_PB11_USART3_RX},
|
||||
#endif /* CONFIG_UART_3 */
|
||||
#ifdef CONFIG_I2C_1
|
||||
{STM32_PIN_PB6, STM32F4_PINMUX_FUNC_PB6_I2C1_SCL},
|
||||
{STM32_PIN_PB7, STM32F4_PINMUX_FUNC_PB7_I2C1_SDA},
|
||||
#endif /* CONFIG_I2C_1 */
|
||||
#ifdef CONFIG_SPI_2
|
||||
{STM32_PIN_PB13, STM32F4_PINMUX_FUNC_PB13_SPI2_SCK},
|
||||
{STM32_PIN_PB14, STM32F4_PINMUX_FUNC_PB14_SPI2_MISO},
|
||||
{STM32_PIN_PB15, STM32F4_PINMUX_FUNC_PB15_SPI2_MOSI},
|
||||
#endif /* CONFIG_SPI_2 */
|
||||
#ifdef CONFIG_USB_DC_STM32
|
||||
{STM32_PIN_PA11, STM32F4_PINMUX_FUNC_PA11_OTG_FS_DM},
|
||||
{STM32_PIN_PA12, STM32F4_PINMUX_FUNC_PA12_OTG_FS_DP},
|
||||
#endif /* CONFIG_USB_DC_STM32 */
|
||||
};
|
||||
|
||||
static int pinmux_stm32_init(struct device *port)
|
||||
{
|
||||
ARG_UNUSED(port);
|
||||
|
||||
stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1,
|
||||
CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY);
|
Loading…
Add table
Add a link
Reference in a new issue