Browse Source

boards: add support for IAR STM32F429II-ACA

Adds support for the IAR STM32F429II-ACA evaluation board

Signed-off-by: Ivar Bjerling <ivar@ivarbjerling.com>
pull/88409/head
Ivar Bjerling 3 months ago committed by Benjamin Cabé
parent
commit
4344b8bc05
  1. 10
      boards/iar/index.rst
  2. 6
      boards/iar/stm32f429ii_aca/Kconfig.stm32f429ii_aca
  3. 10
      boards/iar/stm32f429ii_aca/board.cmake
  4. 6
      boards/iar/stm32f429ii_aca/board.yml
  5. BIN
      boards/iar/stm32f429ii_aca/doc/img/stm32f429ii_aca.webp
  6. 138
      boards/iar/stm32f429ii_aca/doc/index.rst
  7. 277
      boards/iar/stm32f429ii_aca/stm32f429ii_aca.dts
  8. 15
      boards/iar/stm32f429ii_aca/stm32f429ii_aca.yaml
  9. 10
      boards/iar/stm32f429ii_aca/stm32f429ii_aca_defconfig
  10. 17
      boards/iar/stm32f429ii_aca/support/openocd.cfg
  11. 1
      dts/bindings/vendor-prefixes.txt

10
boards/iar/index.rst

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
.. _boards-iar:
IAR
###
.. toctree::
:maxdepth: 1
:glob:
**/*

6
boards/iar/stm32f429ii_aca/Kconfig.stm32f429ii_aca

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
# Copyright (c) 2016 Linaro Limited.
# Copyright (c) 2025 IAR Systems.
# SPDX-License-Identifier: Apache-2.0
config BOARD_STM32F429II_ACA
select SOC_STM32F429XX

10
boards/iar/stm32f429ii_aca/board.cmake

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
# SPDX-License-Identifier: Apache-2.0
board_runner_args(jlink "--device=STM32F429II" "--speed=4000")
board_runner_args(pyocd "--target=stm32f429xi")
board_runner_args(pyocd "--flash-opt=-O reset_type=hw")
board_runner_args(pyocd "--flash-opt=-O connect_mode=under-reset")
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

6
boards/iar/stm32f429ii_aca/board.yml

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
board:
name: stm32f429ii_aca
full_name: STM32F429II-ACA
vendor: iar
socs:
- name: stm32f429xx

BIN
boards/iar/stm32f429ii_aca/doc/img/stm32f429ii_aca.webp

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

138
boards/iar/stm32f429ii_aca/doc/index.rst

@ -0,0 +1,138 @@ @@ -0,0 +1,138 @@
.. zephyr:board:: stm32f429ii_aca
Overview
********
The IAR STM32F429II-ACA evaluation board features an ARM Cortex-M4 based STM32F429II MCU.
Here are some highlights of the STM32F429II-ACA board:
- STM32 microcontroller in LQFP144 package
- JTAG/SWD debugger/programmer interface
- Flexible board power supply
- JTAG/SWD connector
- USB HS connector
- 3x user push-buttons and 1x RESET push-button
- Open-close switch and on-auto-off switch
- 2x capacitive touch panels
- USB OTG with mini-USB connector
- Small speaker
- Trimmer potentiometer
- Nine LEDs
- 1x power LED
- 3x car traffic light LEDs
- 2x pedestrian traffic light LEDs
- 1x car interior light LED
- 2x user LEDs
Schematics for the board can be found `here <stm32f429ii-aca-schematics_>`_
Hardware
********
The STM32F429II-ACA evaluation board provides the following hardware components:
- STM32F429II in LQFP144 package
- ARM |reg| 32-bit Cortex |reg| -M4 CPU with FPU
- 180 MHz max CPU frequency
- VDD from 1.8 V to 3.6 V
- 2 MB Internal Flash
- 4 Mbit External Flash
- 256+4 KB SRAM including 64-KB of core coupled memory
- GPIO with external interrupt capability
- 12-bit ADC
- 12-bit DAC
- RTC
- General Purpose Timers
- I2C
- SPI
- USB 2.0 OTG HS/FS with dedicated DMA, on-chip full-speed PHY and ULPI
- CRC calculation unit
- True random number generator
- DMA Controller
More information about STM32F429II can be found here:
- `STM32F429II on www.st.com`_
- `STM32F429 Reference Manual`_
Supported Features
==================
.. zephyr:board-supported-hw::
Default Zephyr Peripheral Mapping:
----------------------------------
- I2C_1_SCL : PB8
- I2C_1_SDA : PB7
- I2C_2_SCL : PH4
- I2C_2_SDA : PH5
- SPI_5_NSS : PF6
- SPI_5_SCK : PF7
- SPI_5_MISO : PF8
- SPI_5_MOSI : PF9
- OTG_HS_ID : PB12
- OTG_HS_DM : PB14
- OTG_HS_DP : PB15
Serial Port
===========
By default, the STM32F429II-ACA evaluation board has no physical serial port available.
The board has up to 8 UARTs, of which none are used.
USB Port
========
The STM32F429II-ACA evaluation board has a USB HS capable Mini-USB port. It is connected to the on-chip
OTG_HS peripheral.
Programming and Debugging
*************************
Applications for the ``stm32f429ii_aca`` board configuration can be built
and flashed in the usual way (see :ref:`build_an_application` and
:ref:`application_run` for more details).
Flashing
========
In order to flash this board using west, an external debug probe such as a Segger J-Link
has to be connected through the JTAG/SWD connector on the board.
By default, the board is set to be flashed using the jlink runner.
Alternatively, openocd, or pyocd can also be used as runners to flash the board using
the ``--runner`` (or ``-r``) option:
.. code-block:: console
$ west flash --runner openocd
$ west flash --runner pyocd
First, connect the STM32F429II-ACA evaluation board to your host computer using
your debug probe through the JTAG/SWD connector to prepare it for flashing.
Then build and flash your application.
Here is an example for the :zephyr:code-sample:`blinky` application.
.. zephyr-app-commands::
:zephyr-app: samples/basic/blinky
:board: stm32f429ii_aca
:goals: build flash
LED0 should then begin to blink continuously with a 1-second delay.
References
**********
.. target-notes::
.. _stm32f429ii-aca-schematics:
https://iar.my.salesforce.com/sfc/p/#30000000YATY/a/Qx000000vZVh/EzlIqYKIBVXN8PN4Q8MgtowSZrR_vZarwLiNJXw7UJw
.. _STM32F429II on www.st.com:
https://www.st.com/en/microcontrollers-microprocessors/stm32f429ii.html
.. _STM32F429 Reference Manual:
https://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf

277
boards/iar/stm32f429ii_aca/stm32f429ii_aca.dts

@ -0,0 +1,277 @@ @@ -0,0 +1,277 @@
/*
* Copyright (c) 2017 Linaro Limited
* Copyright (c) 2024 STMicroelectronics
* Copyright (c) 2025 IAR Systems
*
* SPDX-License-Identifier: Apache-2.0
*/
/dts-v1/;
#include <st/f4/stm32f429Xi.dtsi>
#include <st/f4/stm32f429iitx-pinctrl.dtsi>
#include <zephyr/dt-bindings/input/input-event-codes.h>
/ {
model = "IAR STM32F429II-ACA board";
compatible = "iar,stm32f429ii-aca";
chosen {
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,ccm = &ccm0;
};
sdram2: sdram@d0000000 {
compatible = "zephyr,memory-region", "mmio-sram";
device_type = "memory";
reg = <0xd0000000 DT_SIZE_M(8)>;
zephyr,memory-region = "SDRAM2";
};
leds {
compatible = "gpio-leds";
traffic_red_led: led_0 {
gpios = <&gpioa 4 GPIO_ACTIVE_LOW>;
label = "LED0";
};
traffic_yellow_led: led_1 {
gpios = <&gpiod 4 GPIO_ACTIVE_LOW>;
label = "LED1";
};
traffic_green_led: led_2 {
gpios = <&gpiod 5 GPIO_ACTIVE_LOW>;
label = "LED2";
};
car_led: led_3 {
gpios = <&gpiod 6 GPIO_ACTIVE_LOW>;
label = "LED3";
};
pedestrian_red_led: led_4 {
gpios = <&gpiod 7 GPIO_ACTIVE_LOW>;
label = "LED4";
};
pedestrian_green_led: led_5 {
gpios = <&gpiod 11 GPIO_ACTIVE_LOW>;
label = "LED5";
};
user_led_1: led_6 {
gpios = <&gpiod 12 GPIO_ACTIVE_LOW>;
label = "LED6";
};
user_led_2: led_7 {
gpios = <&gpiod 13 GPIO_ACTIVE_LOW>;
label = "LED7";
};
};
gpio_keys {
compatible = "gpio-keys";
button0: button_0 {
label = "BUT0";
gpios = <&gpioa 0 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_0>;
};
button1: button_1 {
label = "BUT1";
gpios = <&gpioc 13 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_1>;
};
button2: button_2 {
label = "BUT2";
gpios = <&gpiog 9 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_2>;
};
open_close_switch: switch_0 {
label = "OPEN/CLOSE SWITCH";
gpios = <&gpioi 11 GPIO_ACTIVE_HIGH>;
zephyr,code = <INPUT_KEY_3>;
};
interior_light_switch_on: switch_1 {
label = "ON";
gpios = <&gpioi 10 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_4>;
};
interior_light_switch_auto: switch_2 {
label = "AUTO";
gpios = <&gpioi 9 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_5>;
};
interior_light_switch_off: switch_3 {
label = "OFF";
gpios = <&gpioi 8 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_6>;
};
cap_button0: cap_button_0 {
label = "CAP_BUT0";
gpios = <&gpioh 6 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_7>;
};
cap_button1: cap_button_1 {
label = "CAP_BUT1";
gpios = <&gpioh 7 GPIO_ACTIVE_LOW>;
zephyr,code = <INPUT_KEY_8>;
};
};
aliases {
led0 = &traffic_red_led;
led1 = &traffic_yellow_led;
led2 = &traffic_green_led;
led3 = &car_led;
led4 = &pedestrian_red_led;
led5 = &pedestrian_green_led;
led6 = &user_led_1;
led7 = &user_led_2;
sw0 = &button0;
sw1 = &button1;
sw2 = &button2;
sw3 = &open_close_switch;
sw4 = &interior_light_switch_on;
sw5 = &interior_light_switch_auto;
sw6 = &interior_light_switch_off;
sw7 = &cap_button0;
sw8 = &cap_button1;
};
};
&clk_lsi {
status = "okay";
};
&clk_hse {
clock-frequency = <DT_FREQ_M(8)>;
status = "okay";
};
&pll {
div-m = <8>;
mul-n = <336>;
div-p = <2>;
div-q = <7>;
clocks = <&clk_hse>;
status = "okay";
};
&rcc {
clocks = <&pll>;
clock-frequency = <DT_FREQ_M(168)>;
ahb-prescaler = <1>;
apb1-prescaler = <4>;
apb2-prescaler = <2>;
};
&rtc {
clocks = <&rcc STM32_CLOCK_BUS_APB1 0x10000000>,
<&rcc STM32_SRC_LSI RTC_SEL(2)>;
status = "okay";
};
&i2c1 {
pinctrl-0 = <&i2c1_scl_pb8 &i2c1_sda_pb7>;
pinctrl-names = "default";
status = "okay";
clock-frequency = <I2C_BITRATE_FAST>;
};
&i2c2 {
pinctrl-0 = <&i2c2_scl_ph4 &i2c2_sda_ph5>;
pinctrl-names = "default";
status = "okay";
clock-frequency = <I2C_BITRATE_FAST>;
};
&spi5 {
pinctrl-0 = <&spi5_nss_pf6 &spi5_sck_pf7
&spi5_miso_pf8 &spi5_mosi_pf9>;
pinctrl-names = "default";
status = "okay";
cs-gpios = <&gpioc 2 GPIO_ACTIVE_LOW>;
};
&fmc {
status = "okay";
pinctrl-0 = <&fmc_nbl0_pe0 &fmc_nbl1_pe1
&fmc_sdclk_pg8 &fmc_sdnwe_pc0 &fmc_sdcke0_pc3
&fmc_sdne0_pc2 &fmc_sdnras_pf11 &fmc_sdncas_pg15
&fmc_a0_pf0 &fmc_a1_pf1 &fmc_a2_pf2 &fmc_a3_pf3
&fmc_a4_pf4 &fmc_a5_pf5 &fmc_a6_pf12 &fmc_a7_pf13
&fmc_a8_pf14 &fmc_a9_pf15 &fmc_a10_pg0 &fmc_a11_pg1
&fmc_a12_pg2 &fmc_a13_pg3 &fmc_a14_pg4 &fmc_a15_pg5
&fmc_d0_pd14 &fmc_d1_pd15 &fmc_d2_pd0 &fmc_d3_pd1
&fmc_d4_pe7 &fmc_d5_pe8 &fmc_d6_pe9 &fmc_d7_pe10
&fmc_d8_pe11 &fmc_d9_pe12 &fmc_d10_pe13 &fmc_d11_pe14
&fmc_d12_pe15 &fmc_d13_pd8 &fmc_d14_pd9 &fmc_d15_pd10>;
pinctrl-names = "default";
sdram {
status = "okay";
power-up-delay = <100>;
num-auto-refresh = <1>;
mode-register = <0>;
refresh-rate = <1386>;
bank@1 {
reg = <1>;
st,sdram-control = <STM32_FMC_SDRAM_NC_8
STM32_FMC_SDRAM_NR_12
STM32_FMC_SDRAM_MWID_16
STM32_FMC_SDRAM_NB_4
STM32_FMC_SDRAM_CAS_2
STM32_FMC_SDRAM_SDCLK_PERIOD_3
STM32_FMC_SDRAM_RBURST_DISABLE
STM32_FMC_SDRAM_RPIPE_1>;
st,sdram-timing = <2 7 4 7 2 2 2>;
};
};
};
&adc2 {
compatible = "st,stm32f4-adc", "st,stm32-adc";
pinctrl-0 = <&adc2_in6_pa6>;
pinctrl-names = "default";
st,adc-prescaler = <2>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
channel@6 {
reg = <6>;
zephyr,gain = "ADC_GAIN_1";
zephyr,reference = "ADC_REF_INTERNAL";
zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
zephyr,resolution = <12>;
};
};
&dac1 {
pinctrl-0 = <&dac_out2_pa5>;
pinctrl-names = "default";
status = "okay";
};
zephyr_udc0: &usbotg_hs {
pinctrl-0 = <&usb_otg_hs_dm_pb14 &usb_otg_hs_dp_pb15 &usb_otg_hs_id_pb12>;
pinctrl-names = "default";
status = "okay";
};

15
boards/iar/stm32f429ii_aca/stm32f429ii_aca.yaml

@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
identifier: stm32f429ii_aca
name: IAR STM32F429II ACA
type: mcu
arch: arm
toolchain:
- zephyr
- gnuarmemb
- iar
ram: 192
flash: 2048
supported:
- counter
- i2c
- spi
vendor: iar

10
boards/iar/stm32f429ii_aca/stm32f429ii_aca_defconfig

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
# SPDX-License-Identifier: Apache-2.0
# Enable MPU
CONFIG_ARM_MPU=y
# Enable HW stack protection
CONFIG_HW_STACK_PROTECTION=y
# Enable GPIO
CONFIG_GPIO=y

17
boards/iar/stm32f429ii_aca/support/openocd.cfg

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
source [find interface/cmsis-dap.cfg]
set CHIPNAME STM32F429IITx
set BOARDNAME STM32F429II-ACA
source [find target/stm32f4x.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
}

1
dts/bindings/vendor-prefixes.txt

@ -303,6 +303,7 @@ hynitron Hynitron @@ -303,6 +303,7 @@ hynitron Hynitron
hyundai Hyundai Technology
hzgrow Hangzhou Grow Technology Co., Ltd.
i2se I2SE GmbH
iar IAR Systems AB
ibm International Business Machines (IBM)
icplus IC Plus Corp.
idt Integrated Device Technologies, Inc.

Loading…
Cancel
Save