Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

boards: arm: introduce support for ST Nucleo F722ZE #66050

Merged
merged 3 commits into from
Dec 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 8 additions & 0 deletions boards/arm/nucleo_f722ze/Kconfig.board
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# STM32F722ZE Nucleo board configuration

# Copyright (c) 2023 Evan Perry Grove
# SPDX-License-Identifier: Apache-2.0

config BOARD_NUCLEO_F722ZE
bool "Nucleo F722ZE Development Board"
depends on SOC_STM32F722XX
15 changes: 15 additions & 0 deletions boards/arm/nucleo_f722ze/Kconfig.defconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# STM32F722ZE Nucleo board configuration
#
# Copyright (c) 2023 Evan Perry Grove
# SPDX-License-Identifier: Apache-2.0

if BOARD_NUCLEO_F722ZE

config BOARD
default "nucleo_f722ze"

config SPI_STM32_INTERRUPT
default y
depends on SPI

endif # BOARD_NUCLEO_F722ZE
41 changes: 41 additions & 0 deletions boards/arm/nucleo_f722ze/arduino_r3_connector.dtsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright (c) 2021, Tom Owen
* Copyright (c) 2023 Evan Perry Grove
*
* SPDX-License-Identifier: Apache-2.0
*/

/ {
arduino_header: connector {
compatible = "arduino-header-r3";
#gpio-cells = <2>;
gpio-map-mask = <0xffffffff 0xffffffc0>;
gpio-map-pass-thru = <0 0x3f>;
gpio-map = <0 0 &gpioa 3 0>, /* A0 */
<1 0 &gpioc 0 0>, /* A1 */
<2 0 &gpioc 3 0>, /* A2 */
<3 0 &gpiof 3 0>, /* A3 */
<4 0 &gpiof 5 0>, /* A4 */
<5 0 &gpiof 10 0>, /* A5 */
<6 0 &gpiog 9 0>, /* D0 */
<7 0 &gpiog 14 0>, /* D1 */
<8 0 &gpiof 15 0>, /* D2 */
<9 0 &gpioe 13 0>, /* D3 */
<10 0 &gpiof 14 0>, /* D4 */
<11 0 &gpioe 11 0>, /* D5 */
<12 0 &gpioe 9 0>, /* D6 */
<13 0 &gpiof 13 0>, /* D7 */
<14 0 &gpiof 12 0>, /* D8 */
<15 0 &gpiod 15 0>, /* D9 */
<16 0 &gpiod 14 0>, /* D10 */
<17 0 &gpioa 7 0>, /* D11 */
<18 0 &gpioa 6 0>, /* D12 */
<19 0 &gpioa 5 0>, /* D13 */
<20 0 &gpiob 9 0>, /* D14 */
<21 0 &gpiob 8 0>; /* D15 */
};
};

arduino_i2c: &i2c1 {};
arduino_spi: &spi1 {};
arduino_serial: &usart6 {};
6 changes: 6 additions & 0 deletions boards/arm/nucleo_f722ze/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# SPDX-License-Identifier: Apache-2.0

board_runner_args(jlink "--device=STM32F722ZE" "--speed=4000")

include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
243 changes: 243 additions & 0 deletions boards/arm/nucleo_f722ze/doc/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
.. _nucleo_f722ze_board:

ST Nucleo F722ZE
################

Overview
********

The Nucleo F722ZE board features an ARM Cortex-M7 based STM32F722ZE MCU.

Key Features:

- STM32 microcontroller in LQFP144 package
- USB full-speed/high-speed device
- 3 user LEDs
- 1 user button and 1 reset button
- 32.768 kHz crystal oscillator
- Board connectors:
- USB Micro-AB
- SWD
- ST Zio connector (Arduino Uno R3 compatible)
- ST Morpho connector
- On-board ST-LINK debugger/programmer
- Flexible power supply options, including ST-LINK VBUS and external sources.

.. image:: img/nucleo_f722ze.jpg
:width: 800px
:align: center
:alt: Nucleo F722ZE

Hardware
********

Nucleo F722ZE provides the following hardware components:

- STM32F722ZET6 microcontroller in LQFP144 package
- ARM |reg| Cortex |reg|-M4 with FPU
- Adaptive Real-Time Accelerator (ART Accelerator)
- 216MHz max CPU frequency
- 512 KB flash
- 256 KB RAM
- I2C (3)
- USART/UART (4)
- SPI (5)
- I2S (3)
- SAI (2)
- USB OTG Full-speed (1)
- USB OTG Full-speed/high-speed (1)
- SDMMC (2)
- CAN (1)
- Dual mode Quad-SPI
- Random number generator (RNG)
- 3x 12-bit ADC, up to 2.4 MSPS with 24 channels or 7.2 MSPS in triple-interleaved mode
- 2x 12-bit DAC
- 16-channel DMA controller
- 16-bit timers (13) with PWM, pulse counter, and quadrature features
- 32-bit timers (2) with PWM, pulse counter, and quadrature features
- CRC
- 96-bit unique ID
- Die temperature

Supported Features
==================

+---------------+------------+-------------------------------+
| Interface | Controller | Driver/Component |
+===============+============+===============================+
| NVIC | on-chip | arch/arm |
+---------------+------------+-------------------------------+
| MPU | on-chip | arch/arm |
+---------------+------------+-------------------------------+
| ADC | on-chip | adc |
+---------------+------------+-------------------------------+
| CAN | on-chip | can |
+---------------+------------+-------------------------------+
| USART/UART | on-chip | console, serial |
+---------------+------------+-------------------------------+
| TIMER | on-chip | counter, pwm, timer |
+---------------+------------+-------------------------------+
| DAC | on-chip | dac |
+---------------+------------+-------------------------------+
| DMA | on-chip | dma |
+---------------+------------+-------------------------------+
| GPIO | on-chip | gpio |
+---------------+------------+-------------------------------+
| HWINFO | on-chip | hwinfo |
+---------------+------------+-------------------------------+
| I2C | on-chip | i2c |
+---------------+------------+-------------------------------+
| EXTI | on-chip | interrupt_controller |
+---------------+------------+-------------------------------+
| BACKUP_SRAM | on-chip | memory |
+---------------+------------+-------------------------------+
| QUADSPI | on-chip | memory |
+---------------+------------+-------------------------------+
| PINMUX | on-chip | pinctrl |
+---------------+------------+-------------------------------+
| RCC | on-chip | reset |
+---------------+------------+-------------------------------+
| RTC | on-chip | rtc |
+---------------+------------+-------------------------------+
| DIE_TEMP | on-chip | sensor |
+---------------+------------+-------------------------------+
| VREF | on-chip | sensor |
+---------------+------------+-------------------------------+
| VBAT | on-chip | sensor |
+---------------+------------+-------------------------------+
| SPI | on-chip | spi |
+---------------+------------+-------------------------------+
| USBOTG_HS | on-chip | usb |
+---------------+------------+-------------------------------+
| USBOTG_FS | on-chip | usb |
+---------------+------------+-------------------------------+
| IWDG | on-chip | watchdog |
+---------------+------------+-------------------------------+
| WWDG | on-chip | watchdog |
+---------------+------------+-------------------------------+

Connections and IOs
===================

- SDMMC1: Pins marked as "SDMMC" on the ST Zio connector.
- D0: PC8 (CN8 pin 2)
- D1: PC9 (CN8 pin 4)
- D2: PC10 (CN8 pin 6)
- D3: PC11 (CN8 pin 8)
- CK: PC12 (CN8 pin 10)
- CMD: PD2 (CN8 pin 12)
- ADC1:
- IN3: PA3 (CN9 pin 1, Arduino A0)
- IN10: PC0 (CN9 pin 3, Arduino A1)
- DAC1:
- OUT1: PA4 (CN7 pin 17)
- I2C2: Pins marked as "I2C" on the ST Zio connector.
- SCL: PF1 (CN9 pin 19)
- SDA: PF0 (CN9 pin 21)
- CAN1: Pins marked as "CAN" on the ST Zio connector.
- RX: PD0 (CN9 pin 25)
- TX: PD1 (CN9 pin 27)
- USART2: Pins marked as "USART" on the ST Zio connector.
- RX: PD6 (CN9 pin 4)
- TX: PD5 (CN9 pin 6)
- RTS: PD4 (CN9 pin 8)
- CTS: PD3 (CN9 pin 10)
- PWM1: Uses TIMER1.
- PE13 (CN10 pin 10, Arduino D3)
- PE11 (CN10 pin 6, Arduino D5)
- USART3: Connected to ST-Link virtual COM port.
- TX: PD8
- RX: PD9
- USART6: Arduino UART port.
- RX: PG9 (CN10 pin 16, Arduino D0)
- TX: PG14 (CN10 pin 14, Arduino D1)
- USBOTG_FS: Connected to USB Micro-AB connector (CN13)
- DM: PA11
- DP: PA12
- ID: PA10
- QUADSPI: Pins marked as "QSPI" on the ST Zio connector.
- CS: PB6 (CN10 pin 13)
- CLK: PB2 (CN10 pin 15)
- IO3: PD13 (CN10 pin 19)
- IO1: PD12 (CN10 pin 21)
- IO0: PD11 (CN10 pin 23)
- IO2: PE2 (CN10 pin 25)

System Clock
------------

By default, the system clock is driven by the external clock supplied by
the ST-LINK interface. Nucleo F722ZE system clock can be driven by internal
or external sources.

Serial Port
-----------

Zephyr console is assigned to UART3 (ST-Link Virtual COM Port) by default,
using 115200 8N1.

Programming and Debugging
*************************

The ``nucleo_f722ze`` can be flashed and debugged in the typical manner.
The Nucleo F722ZE board includes an ST-LINK V2-1 debugger, which can be used
with the OpenOCD version provided with the Zephyr SDK. Refer to
:ref:`build_an_application` and :ref:`application_run` for detailed
instructions.

Flashing
========

Build the :ref:`hello_world` application and flash it using the on-board
ST-LINK interface:

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: nucleo_f722ze
:goals: build flash

Debugging
=========

.. zephyr-app-commands::
:zephyr-app: samples/hello_world
:board: nucleo_f722ze
:maybe-skip-config:
:goals: debug

J-Link OB Firmware
------------------

Like many other STM32 evaluation boards, the Nucleo F722ZE's on-board ST-LINK
debug interface may be flashed with `SEGGER J-Link OB firmware`_. This
firmware turns the ST-LINK into a J-Link probe. If the on-board debugger has
been re-flashed with J-Link OB firmware, simply append ``--runner jlink`` to
all flashing/debugging commands.

References
**********

More information about the STM32F722ZE:

- `STM32F722ZE on www.st.com`_
- `STM32F722ZE Reference Manual (RM0431)`_ (PDF)

More information about Nucleo F722ZE:

- `Nucleo F722ZE on www.st.com`_
- `STM32 Nucleo-144 User Manual (UM1974)`_ (PDF)

.. _SEGGER J-Link OB firmware:
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/

.. _STM32F722ZE on www.st.com:
https://www.st.com/en/microcontrollers-microprocessors/stm32f722ze.html

.. _STM32F722ZE Reference Manual (RM0431):
https://www.st.com/resource/en/reference_manual/rm0431-stm32f72xxx-and-stm32f73xxx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

.. _Nucleo F722ZE on www.st.com:
https://www.st.com/en/evaluation-tools/nucleo-f722ze.html

.. _STM32 Nucleo-144 User Manual (UM1974):
https://www.st.com/resource/en/user_manual/um1974-stm32-nucleo144-boards-mb1137-stmicroelectronics.pdf