Skip to content

Commit 01f8090

Browse files
committed
boards: fk723m1_zgt6: initial support
Add the FK723M1-ZGT6 V1.0 board based on the stm32h723zgt6. Signed-off-by: Paul Wedeck <[email protected]>
1 parent 62f62db commit 01f8090

File tree

10 files changed

+462
-0
lines changed

10 files changed

+462
-0
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Copyright (c) 2025 Paul Wedeck <[email protected]>
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_FK723M1_ZGT6
5+
select SOC_STM32H723XX
6+
7+
if BOARD_FK723M1_ZGT6
8+
9+
config SDMMC_STM32_CLOCK_CHECK
10+
default n
11+
12+
endif # BOARD_FK723M1_ZGT6

boards/fanke/fk723m1_zgt6/board.cmake

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
# keep first
4+
board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=sw")
5+
board_runner_args(jlink "--device=STM32H723ZG" "--speed=4000")
6+
7+
# keep first
8+
include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake)
9+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
10+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

boards/fanke/fk723m1_zgt6/board.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: fk723m1_zgt6
3+
full_name: FK723M1-ZGT6
4+
vendor: fanke
5+
socs:
6+
- name: stm32h723xx
Binary file not shown.
Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
.. zephyr:board:: fk723m1_zgt6
2+
3+
Overview
4+
********
5+
6+
The FK723M1-ZGT6 board is a development board for the STM32H723ZGT6 SoC.
7+
8+
Key Features
9+
10+
- STM32 microcontroller in LQFP144 package
11+
- USB OTG or full-speed device
12+
- 1 user LEDs
13+
- 1 boot and reset push-buttons
14+
- 15 MHz and 32.768 kHz crystal oscillators
15+
16+
Board connectors:
17+
- USB with USB-C
18+
- FPC10P LCD connector
19+
- FPC20P Camera connector
20+
- 8 pin debug connector
21+
22+
More information about the board can be found at the `FK723M1-ZGT6 Schematic`_.
23+
24+
Hardware
25+
********
26+
27+
FK723M1-ZGT6 provides the following hardware components:
28+
29+
- STM32H723ZG in LQFP144 package
30+
- ARM 32-bit Cortex-M7 CPU with FPU
31+
- Chrom-ART Accelerator
32+
- Hardware JPEG Codec
33+
- 550 MHz max CPU frequency
34+
- VDD from 1.62 V to 3.6 V
35+
- 1 MB Flash
36+
- 562 kB SRAM max (376 kb used currently)
37+
- High-resolution timer (2.1 ns)
38+
- 32-bit timers(2)
39+
- 16-bit timers(12)
40+
- SPI(6)
41+
- I2C(4)
42+
- I2S (3)
43+
- USART(4)
44+
- UART(4)
45+
- USB OTG Full Speed(1)
46+
- CAN FD(2)
47+
- SAI(2)
48+
- SPDIF_Rx(4)
49+
- HDMI_CEC(1)
50+
- Dual Mode Quad SPI(1)
51+
- Camera Interface
52+
- GPIO (up to 114) with external interrupt capability
53+
- 16-bit ADC(3) with 36 channels / 3.6 MSPS
54+
- 12-bit DAC with 2 channels(2)
55+
- True Random Number Generator (RNG)
56+
- 16-channel DMA
57+
- LCD-TFT Controller with XGA resolution
58+
59+
Supported Features
60+
==================
61+
62+
The Zephyr fk723m1_zgt6 board configuration supports the following hardware
63+
features:
64+
65+
+-------------+------------+-------------------------------------+
66+
| Interface | Controller | Driver/Component |
67+
+=============+============+=====================================+
68+
| NVIC | on-chip | nested vector interrupt controller |
69+
+-------------+------------+-------------------------------------+
70+
| UART | on-chip | serial port |
71+
+-------------+------------+-------------------------------------+
72+
| PINMUX | on-chip | pinmux |
73+
+-------------+------------+-------------------------------------+
74+
| GPIO | on-chip | gpio |
75+
+-------------+------------+-------------------------------------+
76+
| RTC | on-chip | counter |
77+
+-------------+------------+-------------------------------------+
78+
| I2C | on-chip | i2c |
79+
+-------------+------------+-------------------------------------+
80+
| SPI | on-chip | spi |
81+
+-------------+------------+-------------------------------------+
82+
| PWM | on-chip | pwm |
83+
+-------------+------------+-------------------------------------+
84+
| ETHERNET | on-chip | ethernet |
85+
+-------------+------------+-------------------------------------+
86+
| RNG | on-chip | True Random number generator |
87+
+-------------+------------+-------------------------------------+
88+
| Backup SRAM | on-chip | Backup SRAM |
89+
+-------------+------------+-------------------------------------+
90+
| RTC | on-chip | rtc |
91+
+-------------+------------+-------------------------------------+
92+
| FDCAN | on-chip | CAN-FD Controller |
93+
+-------------+------------+-------------------------------------+
94+
95+
Other hardware features are not yet supported on this Zephyr port.
96+
97+
The default configuration can be found in the defconfig files:
98+
:zephyr_file:`boards/fanke/fk723m1_zgt6/fk723m1_zgt6_defconfig`
99+
100+
Default Zephyr Peripheral Mapping:
101+
----------------------------------
102+
103+
The FK723M1-ZGT6 board features one USB port, two 30x2 pin headers, one 4x2 debug header,
104+
one micro SD slot, one FPC10P LCD interface, one FPC20P Camera interface and one built-in external Quad SPI flash.
105+
The board is configured as follows:
106+
107+
- UART_1 TX/RX : PA9/PA10 (debug header UART)
108+
- LD1 : PG7
109+
110+
System Clock
111+
------------
112+
113+
FK723M1-ZGT6 System Clock could be driven by an internal or external
114+
oscillator, as well as the main PLL clock. By default, the System clock is
115+
driven by the PLL clock at 550MHz, driven by an 15MHz high-speed external clock.
116+
117+
Serial Port
118+
-----------
119+
120+
FK723M1-ZGT6 board has 4 UARTs and 4 USARTs. The Zephyr console output is
121+
assigned to UART1. Default settings are 115200 8N1.
122+
123+
Programming and Debugging
124+
*************************
125+
126+
FK723M1-ZGT6 provides a special SWD header.
127+
128+
Flashing
129+
========
130+
131+
The board is configured to be flashed using west `STM32CubeProgrammer`_ runner,
132+
so its :ref:`installation <stm32cubeprog-flash-host-tools>` is required.
133+
134+
Alternatively, OpenOCD or JLink can also be used to flash the board using
135+
the ``--runner`` (or ``-r``) option:
136+
137+
.. code-block:: console
138+
139+
$ west flash --runner openocd
140+
$ west flash --runner jlink
141+
142+
Flashing an application to FK723M1-ZGT6
143+
----------------------------------------
144+
145+
First, connect a SWD capable debugger to the debug header on FK723M1-ZGT6.
146+
Then connect the debugger to the host computer to prepare the board for flashing.
147+
Finally, build and flash your application.
148+
149+
Here is an example for the :zephyr:code-sample:`blinky` application.
150+
151+
Optional: Connect a USB-to-serial adapter to RX and TX (cross connect!).
152+
153+
.. code-block:: console
154+
155+
$ minicom -b 115200 -D /dev/ttyACM0
156+
157+
or use screen:
158+
159+
.. code-block:: console
160+
161+
$ screen /dev/ttyACM0 115200
162+
163+
Build and flash the application:
164+
165+
.. zephyr-app-commands::
166+
:zephyr-app: samples/basic/blinky
167+
:board: fk723m1_zgt6
168+
:goals: build flash
169+
170+
You should see the following messages on the console repeatedly:
171+
172+
.. code-block:: console
173+
174+
$ LED state: ON
175+
$ LED state: OFF
176+
177+
Hello World example can also be used:
178+
179+
.. zephyr-app-commands::
180+
:zephyr-app: samples/hello_world
181+
:board: fk723m1_zgt6
182+
:goals: build flash
183+
184+
Debugging
185+
=========
186+
187+
You can debug an application in the usual way. Here is an example for the
188+
:zephyr:code-sample:`hello_world` application.
189+
190+
.. zephyr-app-commands::
191+
:zephyr-app: samples/hello_world
192+
:board: fk723m1_zgt6
193+
:maybe-skip-config:
194+
:goals: debug
195+
196+
.. _FK723M1-ZGT6 Schematic:
197+
https://community.st.com/ysqtg83639/attachments/ysqtg83639/mcu-boards-hardware-tools-forum/20009/1/FK723M1-ZGT6.zh-CN.en.pdf
198+
199+
.. _STM32H723ZG on www.st.com:
200+
https://www.st.com/en/microcontrollers-microprocessors/stm32h723zg.html
201+
202+
.. _STM32H723 reference manual:
203+
https://www.st.com/resource/en/reference_manual/dm00603761-stm32h723733-stm32h725735-and-stm32h730-value-line-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
204+
205+
.. _STM32CubeIDE:
206+
https://www.st.com/en/development-tools/stm32cubeide.html
207+
208+
.. _STM32CubeProgrammer:
209+
https://www.st.com/en/development-tools/stm32cubeprog.html
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
/*
2+
* Copyright (c) 2020 Alexander Kozhinov <[email protected]>
3+
* Copyright (c) 2024 zack jiang <[email protected]>
4+
* Copyright (c) 2025 Paul Wedeck <[email protected]>
5+
* SPDX-License-Identifier: Apache-2.0
6+
*/
7+
8+
/dts-v1/;
9+
#include <st/h7/stm32h723Xg.dtsi>
10+
#include <st/h7/stm32h723zgtx-pinctrl.dtsi>
11+
12+
/ {
13+
model = "FK723M1-ZGT6 board";
14+
compatible = "fanke,fk723m1-zgt6";
15+
16+
chosen {
17+
zephyr,console = &usart1;
18+
zephyr,shell-uart = &usart1;
19+
zephyr,dtcm = &dtcm;
20+
zephyr,sram = &sram0;
21+
zephyr,flash = &flash0;
22+
zephyr,canbus = &fdcan1;
23+
};
24+
25+
leds: leds {
26+
compatible = "gpio-leds";
27+
blue_led: led_0 {
28+
gpios = <&gpiog 7 GPIO_ACTIVE_LOW>;
29+
label = "User LED";
30+
};
31+
};
32+
33+
aliases {
34+
led0 = &blue_led;
35+
sdhc0 = &sdmmc1;
36+
};
37+
};
38+
39+
&clk_lsi {
40+
status = "okay";
41+
};
42+
43+
&clk_hsi {
44+
status = "okay";
45+
};
46+
47+
&clk_hsi48 {
48+
status = "okay";
49+
};
50+
51+
&clk_hse {
52+
clock-frequency = <DT_FREQ_M(25)>;
53+
status = "okay";
54+
};
55+
56+
&clk_lse {
57+
status = "okay";
58+
};
59+
60+
&pll {
61+
div-m = <2>;
62+
mul-n = <44>;
63+
div-p = <1>;
64+
div-q = <22>;
65+
div-r = <2>;
66+
clocks = <&clk_hse>;
67+
status = "okay";
68+
};
69+
70+
&pll2 {
71+
div-m = <2>;
72+
mul-n = <32>;
73+
div-p = <5>;
74+
div-q = <5>;
75+
div-r = <5>;
76+
clocks = <&clk_hse>;
77+
status = "okay";
78+
};
79+
80+
&rcc {
81+
clocks = <&pll>;
82+
clock-frequency = <DT_FREQ_M(550)>;
83+
d1cpre = <1>;
84+
hpre = <2>; /* HCLK: 275 MHz */
85+
d1ppre = <2>; /* APB1: 137.5 MHz */
86+
d2ppre1 = <2>; /* APB2: 137.5 MHz */
87+
d2ppre2 = <2>; /* APB3: 137.5 MHz */
88+
d3ppre = <2>; /* APB4: 137.5 MHz */
89+
};
90+
91+
&usart1 {
92+
pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>;
93+
pinctrl-names = "default";
94+
current-speed = <115200>;
95+
status = "okay";
96+
};
97+
98+
&rtc {
99+
clocks = <&rcc STM32_CLOCK_BUS_APB4 0x00010000>,
100+
<&rcc STM32_SRC_LSI RTC_SEL(2)>;
101+
status = "okay";
102+
};
103+
104+
&backup_sram {
105+
status = "okay";
106+
};
107+
108+
zephyr_udc0: &usbotg_hs {
109+
pinctrl-0 = <&usb_otg_hs_dm_pa11 &usb_otg_hs_dp_pa12>;
110+
pinctrl-names = "default";
111+
status = "okay";
112+
};
113+
114+
&rng {
115+
status = "okay";
116+
};
117+
118+
&sdmmc1 {
119+
pinctrl-0 = <&sdmmc1_d0_pc8 &sdmmc1_d1_pc9 &sdmmc1_d2_pc10
120+
&sdmmc1_d3_pc11 &sdmmc1_ck_pc12 &sdmmc1_cmd_pd2>;
121+
pinctrl-names = "default";
122+
clocks = <&rcc STM32_CLOCK(AHB3, 16U)>,
123+
<&rcc STM32_SRC_PLL1_Q SDMMC_SEL(0)>;
124+
disk-name = "SD";
125+
status = "okay";
126+
bus-width = <4>;
127+
};
128+
129+
&octospi1 {
130+
pinctrl-0 = <&octospim_p1_ncs_pg6 &octospim_p1_clk_pf10
131+
&octospim_p1_io0_pf8 &octospim_p1_io1_pf9
132+
&octospim_p1_io2_pf7 &octospim_p1_io3_pf6>;
133+
pinctrl-names = "default";
134+
status = "okay";
135+
136+
/* Winbond external flash */
137+
qspi: qspi-nor-flash@0 {
138+
compatible = "st,stm32-ospi-nor";
139+
reg = <0 DT_SIZE_M(8)>; /* 64 Mbits */
140+
ospi-max-frequency = <DT_FREQ_M(133)>;
141+
spi-bus-width = <OSPI_QUAD_MODE>;
142+
data-rate = <OSPI_STR_TRANSFER>;
143+
writeoc = "PP_1_1_4";
144+
size = <DT_SIZE_M(512)>;
145+
status = "okay";
146+
147+
partitions {
148+
compatible = "fixed-partitions";
149+
#address-cells = <1>;
150+
#size-cells = <1>;
151+
storage_partition: partition@0 {
152+
reg = <0x00000000 DT_SIZE_M(8)>; /* 64 Mbits */
153+
};
154+
};
155+
};
156+
};

0 commit comments

Comments
 (0)