Skip to content

Commit

Permalink
boards: arm: introduce support for ST Nucleo F722ZE board
Browse files Browse the repository at this point in the history
Nucleo F722ZE is a development board for the STM32F722ZE,
one of ST's higher-end MCU offerings. Add support for the
board, aligning with conventions set by similar boards
already in the Zephyr distribution.

Signed-off-by: Evan Perry Grove <evan@4grove.com>
  • Loading branch information
ryukoposting committed Dec 2, 2023
1 parent 8611317 commit c15e3b0
Show file tree
Hide file tree
Showing 17 changed files with 840 additions and 0 deletions.
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

0 comments on commit c15e3b0

Please sign in to comment.