-
Notifications
You must be signed in to change notification settings - Fork 6.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
boards: stm32g0316-disco: add support for the ST STM32G0316-DISCO board
Add support for the ST STM32G0316-DISCO development board. This board features an ST STM32G031J6 MCU on a breakable SO8 to DIL8 module, a user LED and a button. Signed-off-by: Filip Brozovic <fbrozovic@gmail.com>
- Loading branch information
1 parent
e541e63
commit 19d1ea2
Showing
11 changed files
with
308 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# STM32G0316 Discovery board configuration | ||
|
||
# Copyright (c) 2019 SEAL AG | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
config BOARD_STM32G0316_DISCO | ||
bool "STM32G0316 Discovery Development Board" | ||
depends on SOC_STM32G031XX |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# STM32G0316 Discovery board configuration | ||
|
||
# Copyright (c) 2019 SEAL AG | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
if BOARD_STM32G0316_DISCO | ||
|
||
config BOARD | ||
default "stm32g0316_disco" | ||
|
||
if UART_CONSOLE | ||
|
||
config UART_1 | ||
default y | ||
|
||
endif # UART_CONSOLE | ||
|
||
endif # BOARD_STM32G0316_DISCO |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
board_runner_args(pyocd "--target=stm32g031j6mx") | ||
|
||
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
.. _stm32g0316_disco_board: | ||
|
||
STM32G0316-DISCO | ||
################ | ||
|
||
Overview | ||
******** | ||
|
||
The STM32G0316-DISCO Discovery kit helps to discover features of STM32G0 in SO8 package. | ||
This discovery kit offers an SO8 to DIL8 module designed with the STM32G031J6 microcontroller | ||
and allows the user to develop applications. It includes an on-board ST-LINK/V2-1 to debug | ||
and program the embedded STM32 microcontroller. | ||
|
||
.. image:: img/stm32g0316-disco.jpg | ||
:width: 670px | ||
:align: center | ||
:alt: STM32G0316-DISCO | ||
|
||
Hardware | ||
******** | ||
|
||
- STM32G031J6 Arm |reg| Cortex |reg|-M0+ core-based microcontroller, | ||
featuring 32 Kbytes of Flash memory and 8 Kbytes of SRAM, in an SO8 package | ||
- 1 user LED | ||
- 1 reset/user push-button | ||
- Individual and breakable STM32 SO8 to DIL8 module | ||
- ST-LINK Micro-B USB connector | ||
- DIL8 socket to ease programming of the STM32 MCU | ||
- On-board ST-LINK/V2-1 debugger/programmer | ||
|
||
For more information about the STM32G03x SoC and the STM32G0316-DISCO board, see these ST reference documents: | ||
|
||
- `STM32G031J6 website`_ | ||
- `STM32G031 datasheet`_ | ||
- `STM32G0x1 reference manual`_ | ||
- `STM32G0316-DISCO website`_ | ||
|
||
Supported Features | ||
================== | ||
|
||
The Zephyr stm32g0316_disco 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 | | ||
+-----------+------------+-------------------------------------+ | ||
| CLOCK | on-chip | reset and clock control | | ||
+-----------+------------+-------------------------------------+ | ||
|
||
Other hardware features are not currently supported by the port. | ||
|
||
The default configuration can be found in the defconfig file: | ||
``boards/arm/stm32g0316_disco/stm32g0316_disco_defconfig`` | ||
|
||
Connections and IOs | ||
=================== | ||
|
||
Due to the small number of I/O pins on the SO8 package, multiple die I/Os are bonded | ||
to the same package pins to maximize the number of peripherals which can be used. | ||
Care must be taken not to set two I/Os which are connected together to conflicting | ||
states (e.g. both as outputs, one low, the other high). | ||
|
||
Default Zephyr Peripheral Mapping: | ||
---------------------------------- | ||
|
||
.. rst-class:: rst-columns | ||
|
||
- UART_1 TX/RX : PA9/PB7 (pins 5/1) | ||
- USER_PB : PA0 (pin 4) | ||
- LD2 : PA12 (pin 6) | ||
|
||
Programming and Debugging | ||
************************* | ||
|
||
Applications for the ``stm32g0316_disco`` board configuration can be built the | ||
usual way (see :ref:`build_an_application` and :ref:`application_run` for more details). | ||
|
||
Flashing | ||
======== | ||
|
||
The STM32G0316-DISCO board includes an ST-LINK/V2-1 embedded debug tool | ||
interface. This interface is not yet supported by the openocd version included in | ||
the Zephyr SDK. Instead, support can be enabled on pyocd by adding "pack" support with | ||
the following pyocd command: | ||
|
||
.. code-block:: console | ||
$ pyocd pack --install stm32g031j6 | ||
Flashing an application to the STM32G0316-DISCO | ||
----------------------------------------------- | ||
|
||
Here is an example for the :ref:`blinky-sample` application. | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/basic/blinky | ||
:board: stm32g0316_disco | ||
:goals: build flash | ||
|
||
You should see the LED blinking every second. | ||
|
||
Debugging | ||
========= | ||
|
||
You can debug an application in the usual way. Here is an example for the | ||
:ref:`hello_world` application. | ||
|
||
.. zephyr-app-commands:: | ||
:zephyr-app: samples/hello_world | ||
:board: stm32g0316_disco | ||
:maybe-skip-config: | ||
:goals: debug | ||
|
||
.. _STM32G031J6 website: | ||
https://www.st.com/en/microcontrollers-microprocessors/stm32g031j6.html | ||
|
||
.. _STM32G031 datasheet: | ||
https://www.st.com/resource/en/datasheet/stm32g031j6.pdf | ||
|
||
.. _STM32G0x1 reference manual: | ||
https://www.st.com/resource/en/reference_manual/dm00371828.pdf | ||
|
||
.. _STM32G0316-DISCO website: | ||
https://www.st.com/en/evaluation-tools/stm32g0316-disco.html |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
/* | ||
* Copyright (c) 2019 SEAL AG | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#include <init.h> | ||
#include <soc.h> | ||
|
||
#include <pinmux/stm32/pinmux_stm32.h> | ||
|
||
/* pin assignments for STM32G0316-DISCO board */ | ||
static const struct pin_config pinconf[] = { | ||
#ifdef CONFIG_UART_1 | ||
{STM32_PIN_PA9, STM32G0_PINMUX_FUNC_PA9_USART1_TX}, | ||
{STM32_PIN_PB7, STM32G0_PINMUX_FUNC_PB7_USART1_RX}, | ||
#endif /* CONFIG_UART_1 */ | ||
}; | ||
|
||
static int pinmux_stm32_init(struct device *port) | ||
{ | ||
ARG_UNUSED(port); | ||
|
||
#ifdef CONFIG_UART_1 | ||
/* Remap PA11 to PA9 */ | ||
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG); | ||
LL_SYSCFG_EnablePinRemap(LL_SYSCFG_PIN_RMP_PA11); | ||
#endif /* CONFIG_UART_1 */ | ||
|
||
stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf)); | ||
|
||
return 0; | ||
} | ||
|
||
SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1, | ||
CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* Copyright (c) 2019 SEAL AG | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
/dts-v1/; | ||
#include <st/g0/stm32g031X6.dtsi> | ||
|
||
/ { | ||
model = "STMicroelectronics STM32G0316 Discovery board"; | ||
compatible = "st,stm32g0316-disco", "st,stm32g031"; | ||
|
||
aliases { | ||
led0 = &green_led_1; | ||
sw0 = &user_button; | ||
}; | ||
|
||
chosen { | ||
zephyr,console = &usart1; | ||
zephyr,shell-uart = &usart1; | ||
zephyr,sram = &sram0; | ||
zephyr,flash = &flash0; | ||
}; | ||
|
||
leds { | ||
compatible = "gpio-leds"; | ||
green_led_1: led_2 { | ||
gpios = <&gpioa 12 GPIO_INT_ACTIVE_LOW>; | ||
label = "User LD2"; | ||
}; | ||
}; | ||
|
||
gpio_keys { | ||
compatible = "gpio-keys"; | ||
user_button: button { | ||
label = "User"; | ||
gpios = <&gpioa 0 GPIO_INT_ACTIVE_LOW>; | ||
}; | ||
}; | ||
}; | ||
|
||
&usart1 { | ||
current-speed = <115200>; | ||
status = "okay"; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
identifier: stm32g0316_disco | ||
name: STM32G0316-DISCO | ||
type: mcu | ||
arch: arm | ||
toolchain: | ||
- zephyr | ||
- gnuarmemb | ||
- xtools | ||
ram: 8 | ||
flash: 32 | ||
supported: | ||
- gpio | ||
- uart |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# Zephyr Kernel Configuration | ||
CONFIG_ARM=y | ||
CONFIG_SOC_SERIES_STM32G0X=y | ||
CONFIG_SOC_STM32G031XX=y | ||
CONFIG_CORTEX_M_SYSTICK=y | ||
CONFIG_BOARD_STM32G0316_DISCO=y | ||
|
||
# 64MHz system clock | ||
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=64000000 | ||
|
||
# Kernel Options due to Low Memory (8k) | ||
CONFIG_MAIN_STACK_SIZE=640 | ||
CONFIG_IDLE_STACK_SIZE=200 | ||
CONFIG_ISR_STACK_SIZE=512 | ||
|
||
# Serial Drivers | ||
CONFIG_SERIAL=y | ||
CONFIG_UART_INTERRUPT_DRIVEN=y | ||
# enable console | ||
CONFIG_CONSOLE=y | ||
CONFIG_UART_CONSOLE=y | ||
|
||
# Pinmux Driver | ||
CONFIG_PINMUX=y | ||
|
||
# GPIO Controller | ||
CONFIG_GPIO=y | ||
|
||
# Clock configuration | ||
CONFIG_CLOCK_CONTROL=y | ||
# SYSCLK selection | ||
CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y | ||
# PLL configuration | ||
CONFIG_CLOCK_STM32_PLL_SRC_HSI=y | ||
# produce 64MHz clock at PLL output | ||
CONFIG_CLOCK_STM32_PLL_M_DIVISOR=1 | ||
CONFIG_CLOCK_STM32_PLL_N_MULTIPLIER=8 | ||
CONFIG_CLOCK_STM32_PLL_P_DIVISOR=2 | ||
CONFIG_CLOCK_STM32_PLL_Q_DIVISOR=2 | ||
CONFIG_CLOCK_STM32_PLL_R_DIVISOR=2 | ||
CONFIG_CLOCK_STM32_AHB_PRESCALER=1 | ||
CONFIG_CLOCK_STM32_APB1_PRESCALER=1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters