Browse Source
Adds support for the IAR STM32F429II-ACA evaluation board Signed-off-by: Ivar Bjerling <ivar@ivarbjerling.com>pull/88409/head
11 changed files with 490 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||||||
|
.. _boards-iar: |
||||||
|
|
||||||
|
IAR |
||||||
|
### |
||||||
|
|
||||||
|
.. toctree:: |
||||||
|
:maxdepth: 1 |
||||||
|
:glob: |
||||||
|
|
||||||
|
**/* |
@ -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 |
@ -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) |
@ -0,0 +1,6 @@ |
|||||||
|
board: |
||||||
|
name: stm32f429ii_aca |
||||||
|
full_name: STM32F429II-ACA |
||||||
|
vendor: iar |
||||||
|
socs: |
||||||
|
- name: stm32f429xx |
After Width: | Height: | Size: 38 KiB |
@ -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 |
@ -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"; |
||||||
|
}; |
@ -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 |
@ -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 |
@ -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 |
||||||
|
} |
Loading…
Reference in new issue