board: arm: add support for the nucleo_f303k8 board
This branch adds support for the nucleo_f303k8 board. The configuration is based on the nucleo_l011k4, the f302r8 and the ST reference manual. I had successfully tested the following sample code: blinky blink_led (uses TIM2_CH1 on PA0) button hello_world Signed-off-by: Sebastian Schwabe <sebastian.schwabe@mailbox.tu-dresden.de>
This commit is contained in:
parent
06ef2396c0
commit
1413ebff7b
10 changed files with 330 additions and 0 deletions
9
boards/arm/nucleo_f303k8/Kconfig.board
Normal file
9
boards/arm/nucleo_f303k8/Kconfig.board
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# NUCLEO-32 F303k8 board configuration
|
||||||
|
|
||||||
|
# Copyright (c) 2020 Sebastian Schwabe <sebastian.schwabe@mailbox.tu-dresden.de>
|
||||||
|
# Fabian Paschke <fabian.paschke@eas.iis.fraunhofer.de>
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
config BOARD_NUCLEO_F303K8
|
||||||
|
bool "NUCLEO-32 F303K8 Development Board"
|
||||||
|
depends on SOC_STM32F303X8
|
12
boards/arm/nucleo_f303k8/Kconfig.defconfig
Normal file
12
boards/arm/nucleo_f303k8/Kconfig.defconfig
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# NUCLEO-32 F303k8 board configuration
|
||||||
|
|
||||||
|
# Copyright (c) 2020 Sebastian Schwabe <sebastian.schwabe@mailbox.tu-dresden.de>
|
||||||
|
# Fabian Paschke <fabian.paschke@eas.iis.fraunhofer.de>
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
if BOARD_NUCLEO_F303K8
|
||||||
|
|
||||||
|
config BOARD
|
||||||
|
default "nucleo_f303k8"
|
||||||
|
|
||||||
|
endif # BOARD_NUCLEO_F303K8
|
6
boards/arm/nucleo_f303k8/board.cmake
Normal file
6
boards/arm/nucleo_f303k8/board.cmake
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
board_runner_args(jlink "--device=STM32F303K8" "--speed=4000")
|
||||||
|
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
|
BIN
boards/arm/nucleo_f303k8/doc/img/nucleo_f303k8.jpg
Normal file
BIN
boards/arm/nucleo_f303k8/doc/img/nucleo_f303k8.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
BIN
boards/arm/nucleo_f303k8/doc/img/nucleo_f303k8_pinout.png
Normal file
BIN
boards/arm/nucleo_f303k8/doc/img/nucleo_f303k8_pinout.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 893 KiB |
163
boards/arm/nucleo_f303k8/doc/index.rst
Normal file
163
boards/arm/nucleo_f303k8/doc/index.rst
Normal file
|
@ -0,0 +1,163 @@
|
||||||
|
.. _nucleo_f303k8_board:
|
||||||
|
|
||||||
|
ST Nucleo F303K8
|
||||||
|
################
|
||||||
|
|
||||||
|
Overview
|
||||||
|
********
|
||||||
|
|
||||||
|
The Nucleo F303K8 board features an ARM Cortex-M4 based STM32F303K8
|
||||||
|
mixed-signal MCU with FPU and DSP instructions capable of running at 72 MHz.
|
||||||
|
Here are some highlights of the Nucleo F303K8 board:
|
||||||
|
|
||||||
|
- STM32 microcontroller in LQFP32 package
|
||||||
|
- one type of extension resources:
|
||||||
|
|
||||||
|
- Arduino™ Nano V3 connectivity support
|
||||||
|
|
||||||
|
- On-board ST-LINK/V2-1 debugger/programmer with SWD connector
|
||||||
|
- Flexible board power supply:
|
||||||
|
|
||||||
|
- 5 V from ST-LINK/V2-1 USB VBUS
|
||||||
|
- External power sources: 3.3 V, 5V and 7 - 12 V
|
||||||
|
|
||||||
|
- One user LED
|
||||||
|
- One push-buttons: RESET
|
||||||
|
|
||||||
|
.. image:: img/nucleo_f303k8.jpg
|
||||||
|
:width: 500px
|
||||||
|
:height: 367px
|
||||||
|
:align: center
|
||||||
|
:alt: Nucleo F303K8
|
||||||
|
|
||||||
|
More information about the board can be found at the `Nucleo F303K8 website`_,
|
||||||
|
and in the `STM32 Nucleo-32 board User Manual`_.
|
||||||
|
|
||||||
|
Hardware
|
||||||
|
********
|
||||||
|
|
||||||
|
The Nucleo F303K8 provides the following hardware components:
|
||||||
|
|
||||||
|
- STM32F303K8T6 in LQFP32 package
|
||||||
|
- ARM |reg| 32-bit Cortex |reg| -M4 CPU with FPU
|
||||||
|
- 72 MHz max CPU frequency
|
||||||
|
- VDD from 2.0 V to 3.6 V
|
||||||
|
- 64 MB Flash
|
||||||
|
- 12 KB SRAM
|
||||||
|
- RTC
|
||||||
|
- Advanced-control Timer
|
||||||
|
- General Purpose Timers (5)
|
||||||
|
- Basic Timer (2)
|
||||||
|
- Watchdog Timers (2)
|
||||||
|
- PWM channels (12)
|
||||||
|
- SPI/I2S (1)
|
||||||
|
- I2C (1)
|
||||||
|
- USART/UART (2)
|
||||||
|
- CAN (1)
|
||||||
|
- GPIO with external interrupt capability
|
||||||
|
- DMA channels (7)
|
||||||
|
- Capacitive sensing channels (18)
|
||||||
|
- 12-bit ADC with 21 channels
|
||||||
|
- 12-bit D/A converter
|
||||||
|
- Analog comparator (3)
|
||||||
|
- Op amp
|
||||||
|
|
||||||
|
|
||||||
|
More information about the STM32F303K8 can be found here:
|
||||||
|
|
||||||
|
- `STM32F303K8 on www.st.com`_
|
||||||
|
- `STM32F303K8 reference manual`_
|
||||||
|
- `STM32F303K8 datasheet`_
|
||||||
|
|
||||||
|
Supported Features
|
||||||
|
==================
|
||||||
|
|
||||||
|
The Zephyr nucleo_f303k8 board configuration supports the following hardware
|
||||||
|
features:
|
||||||
|
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| Interface | Controller | Driver/Component |
|
||||||
|
+===========+============+=====================================+
|
||||||
|
| NVIC | on-chip | nested vector interrupt controller |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| UART | on-chip | serial port-polling; |
|
||||||
|
| | | serial port-interrupt |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| PINMUX | on-chip | pinmux |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| GPIO | on-chip | gpio |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| PWM | on-chip | pwm |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| I2C | on-chip | i2c |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| SPI | on-chip | spi |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| ADC | on-chip | ADC Controller |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
|
||||||
|
Other hardware features are not yet supported on this Zephyr port.
|
||||||
|
|
||||||
|
The default configuration can be found in the defconfig file:
|
||||||
|
``boards/arm/nucleo_f303k8/nucleo_f303k8_defconfig``
|
||||||
|
|
||||||
|
Connections and IOs
|
||||||
|
===================
|
||||||
|
|
||||||
|
The Nucleo F303K8 Board has 1 GPIO controller. This controllers is responsible
|
||||||
|
for input/output, pull-up, etc.
|
||||||
|
|
||||||
|
Board connectors:
|
||||||
|
-----------------
|
||||||
|
.. image:: img/nucleo_f303k8_pinout.png
|
||||||
|
:width: 800px
|
||||||
|
:align: center
|
||||||
|
:height: 619px
|
||||||
|
:alt: Nucleo F303K8 connectors
|
||||||
|
|
||||||
|
Default Zephyr Peripheral Mapping:
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
The Nucleo F303K8 board features an Arduino Zero V3 connector. Board is configured as follows:
|
||||||
|
|
||||||
|
- UART_2 TX/RX : PA2/PA15 (ST-Link Virtual Port Com)
|
||||||
|
- I2C1 SCL/SDA : PB7/PB6
|
||||||
|
- SPI1 CS/SCK/MISO/MOSI : PA_4/PA_5/PB_4/PA_7
|
||||||
|
- LD2 : PB3
|
||||||
|
|
||||||
|
System Clock
|
||||||
|
------------
|
||||||
|
|
||||||
|
The Nucleo F303K8 System Clock can be driven by an internal or
|
||||||
|
external oscillator, as well as by the main PLL clock. By default the
|
||||||
|
System Clock is driven by the PLL clock at 72 MHz. The input to the
|
||||||
|
PLL is an 8 MHz internal clock supply.
|
||||||
|
|
||||||
|
Serial Port
|
||||||
|
-----------
|
||||||
|
|
||||||
|
The Nucleo F303K8 board has 2 UARTs. The Zephyr console output is assigned
|
||||||
|
to UART2. Default settings are 115200 8N1.
|
||||||
|
|
||||||
|
|
||||||
|
Programming and Debugging
|
||||||
|
*************************
|
||||||
|
|
||||||
|
The Nucleo F303K8 board includes an ST-LINK/V2-1 embedded debug tool interface.
|
||||||
|
This interface is supported by the openocd version included in Zephyr SDK.
|
||||||
|
|
||||||
|
|
||||||
|
.. _Nucleo F303K8 website:
|
||||||
|
http://www.st.com/en/evaluation-tools/nucleo-F303K8.html
|
||||||
|
|
||||||
|
.. _STM32 Nucleo-32 board User Manual:
|
||||||
|
https://www.st.com/resource/en/user_manual/dm00231744-stm32-nucleo32-boards-mb1180-stmicroelectronics.pdf
|
||||||
|
|
||||||
|
.. _STM32F303K8 on www.st.com:
|
||||||
|
http://www.st.com/en/microcontrollers/stm32F303K8.html
|
||||||
|
|
||||||
|
.. _STM32F303K8 reference manual:
|
||||||
|
https://www.st.com/resource/en/reference_manual/dm00043574-stm32f303xbcde-stm32f303x68-stm32f328x8-stm32f358xc-stm32f398xe-advanced-armbased-mcus-stmicroelectronics.pdf
|
||||||
|
|
||||||
|
.. _STM32F303K8 datasheet:
|
||||||
|
https://www.st.com/resource/en/datasheet/stm32f303k8.pdf
|
78
boards/arm/nucleo_f303k8/nucleo_f303k8.dts
Normal file
78
boards/arm/nucleo_f303k8/nucleo_f303k8.dts
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2020 Sebastian Schwabe <sebastian.schwabe@mailbox.tu-dresden.de>
|
||||||
|
* Fabian Paschke <fabian.paschke@eas.iis.fraunhofer.de>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include <st/f3/stm32f303X8.dtsi>
|
||||||
|
#include <st/f3/stm32f303k(6-8)tx-pinctrl.dtsi>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "STMicroelectronics STM32F303K8-NUCLEO board";
|
||||||
|
compatible = "st,stm32f303k8-nucleo";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
zephyr,console = &usart2;
|
||||||
|
zephyr,shell-uart = &usart2;
|
||||||
|
zephyr,sram = &sram0;
|
||||||
|
zephyr,flash = &flash0;
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
green_led_3: green_led_3 {
|
||||||
|
gpios = <&gpiob 3 GPIO_ACTIVE_HIGH>;
|
||||||
|
label = "LD3";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
pwmleds {
|
||||||
|
compatible = "pwm-leds";
|
||||||
|
green_pwm_led: green_pwm_led {
|
||||||
|
pwms = <&pwm2 2 0 PWM_POLARITY_NORMAL>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
led0 = &green_led_3;
|
||||||
|
pwm-led0 = &green_pwm_led;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&timers2 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
pwm2: pwm {
|
||||||
|
status = "okay";
|
||||||
|
pinctrl-0 = <&tim2_ch2_pb3>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&usart2 {
|
||||||
|
pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa15>;
|
||||||
|
current-speed = <115200>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
&i2c1 {
|
||||||
|
pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb7>;
|
||||||
|
status = "okay";
|
||||||
|
clock-frequency = <I2C_BITRATE_FAST>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi1 {
|
||||||
|
pinctrl-0 = <&spi1_nss_pa4 &spi1_sck_pa5
|
||||||
|
&spi1_miso_pa6 &spi1_mosi_pa7>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&adc1 {
|
||||||
|
pinctrl-0 = <&adc1_in1_pa0>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&rtc {
|
||||||
|
status = "okay";
|
||||||
|
};
|
16
boards/arm/nucleo_f303k8/nucleo_f303k8.yaml
Normal file
16
boards/arm/nucleo_f303k8/nucleo_f303k8.yaml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
identifier: nucleo_f303k8
|
||||||
|
name: ST Nucleo F303k8
|
||||||
|
type: mcu
|
||||||
|
arch: arm
|
||||||
|
toolchain:
|
||||||
|
- zephyr
|
||||||
|
- gnuarmemb
|
||||||
|
- xtools
|
||||||
|
ram: 12
|
||||||
|
flash: 64
|
||||||
|
supported:
|
||||||
|
- i2c
|
||||||
|
- spi
|
||||||
|
- gpio
|
||||||
|
- pwm
|
||||||
|
- counter
|
34
boards/arm/nucleo_f303k8/nucleo_f303k8_defconfig
Normal file
34
boards/arm/nucleo_f303k8/nucleo_f303k8_defconfig
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
CONFIG_SOC_SERIES_STM32F3X=y
|
||||||
|
CONFIG_SOC_STM32F303X8=y
|
||||||
|
# 72 MHz system clock
|
||||||
|
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=72000000
|
||||||
|
|
||||||
|
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_SYSCLK_SRC_PLL=y
|
||||||
|
# use HSI as PLL input
|
||||||
|
CONFIG_CLOCK_STM32_PLL_SRC_HSI=y
|
||||||
|
# however, the board does not have an external oscillator, so just use
|
||||||
|
# the 8MHz clock signal coming from integrated STLink
|
||||||
|
# produce 72MHz clock at PLL output
|
||||||
|
CONFIG_CLOCK_STM32_PLL_PREDIV=1
|
||||||
|
CONFIG_CLOCK_STM32_PLL_MULTIPLIER=9
|
||||||
|
CONFIG_CLOCK_STM32_AHB_PRESCALER=1
|
||||||
|
CONFIG_CLOCK_STM32_APB1_PRESCALER=2
|
||||||
|
CONFIG_CLOCK_STM32_APB2_PRESCALER=1
|
12
boards/arm/nucleo_f303k8/support/openocd.cfg
Normal file
12
boards/arm/nucleo_f303k8/support/openocd.cfg
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
source [find board/st_nucleo_f3.cfg]
|
||||||
|
|
||||||
|
$_TARGETNAME configure -event gdb-attach {
|
||||||
|
echo "Debugger attaching: halting execution"
|
||||||
|
reset halt
|
||||||
|
gdb_breakpoint_override hard
|
||||||
|
}
|
||||||
|
|
||||||
|
$_TARGETNAME configure -event gdb-detach {
|
||||||
|
echo "Debugger detaching: resuming execution"
|
||||||
|
resume
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue