1.. _nucleo_f746zg_board:
2
3ST Nucleo F746ZG
4################
5
6Overview
7********
8
9The STM32 Nucleo-144 boards offer combinations of performance and power that
10provide an affordable and flexible way for users to build prototypes and try
11out new concepts. For compatible boards, the SMPS significantly reduces power
12consumption in Run mode.
13
14The Arduino-compatible ST Zio connector expands functionality of the Nucleo
15open development platform, with a wide choice of specialized Arduino* Uno V3
16shields.
17
18The STM32 Nucleo-144 board does not require any separate probe as it integrates
19the ST-LINK/V2-1 debugger/programmer.
20
21The STM32 Nucleo-144 board comes with the STM32 comprehensive free software
22libraries and examples available with the STM32Cube MCU Package.
23
24Key Features
25
26- STM32 microcontroller in LQFP144 package
27- Ethernet compliant with IEEE-802.3-2002 (depending on STM32 support)
28- USB OTG or full-speed device (depending on STM32 support)
29- 3 user LEDs
30- 2 user and reset push-buttons
31- 32.768 kHz crystal oscillator
32- Board connectors:
33
34 - USB with Micro-AB
35 - SWD
36 - Ethernet RJ45 (depending on STM32 support)
37 - ST Zio connector including Arduino* Uno V3
38 - ST morpho
39
40- Flexible power-supply options: ST-LINK USB VBUS or external sources.
41- On-board ST-LINK/V2-1 debugger/programmer with USB re-enumeration
42- capability: mass storage, virtual COM port and debug port.
43- Comprehensive free software libraries and examples available with the
44  STM32Cube MCU package.
45- Arm* Mbed Enabled* compliant (only for some Nucleo part numbers)
46
47.. image:: img/nucleo_f746zg.jpg
48   :align: center
49   :alt: Nucleo F746ZG
50
51More information about the board can be found at the `Nucleo F746ZG website`_.
52
53Hardware
54********
55
56Nucleo F746ZG provides the following hardware components:
57
58- STM32F746ZG in LQFP144 package
59- ARM 32-bit Cortex-M7 CPU with FPU
60- Chrom-ART Accelerator
61- ART Accelerator
62- 216 MHz max CPU frequency
63- VDD from 1.7 V to 3.6 V
64- 1 MB Flash
65- 320 KB SRAM
66- 16-bit timers(10)
67- 32-bit timers(2)
68- SPI(6)
69- I2C(4)
70- I2S (3)
71- USART(4)
72- UART(4)
73- USB OTG Full Speed and High Speed(1)
74- USB OTG Full Speed(1)
75- CAN(2)
76- SAI(2)
77- SPDIF_Rx(4)
78- HDMI_CEC(1)
79- Dual Mode Quad SPI(1)
80- Camera Interface
81- GPIO(up to 168) with external interrupt capability
82- 12-bit ADC(3) with 24 channels / 2.4 MSPS
83- 12-bit DAC with 2 channels(2)
84- True Random Number Generator (RNG)
85- 16-channel DMA
86- LCD-TFT Controller with XGA resolution
87
88Supported Features
89==================
90
91The Zephyr nucleo_f746zg board configuration supports the following hardware
92features:
93
94+-------------+------------+-------------------------------------+
95| Interface   | Controller | Driver/Component                    |
96+=============+============+=====================================+
97| NVIC        | on-chip    | nested vector interrupt controller  |
98+-------------+------------+-------------------------------------+
99| UART        | on-chip    | serial port                         |
100+-------------+------------+-------------------------------------+
101| PINMUX      | on-chip    | pinmux                              |
102+-------------+------------+-------------------------------------+
103| GPIO        | on-chip    | gpio                                |
104+-------------+------------+-------------------------------------+
105| ETHERNET    | on-chip    | ethernet                            |
106+-------------+------------+-------------------------------------+
107| USB         | on-chip    | usb_device                          |
108+-------------+------------+-------------------------------------+
109| COUNTER     | on-chip    | rtc                                 |
110+-------------+------------+-------------------------------------+
111| I2C         | on-chip    | i2c                                 |
112+-------------+------------+-------------------------------------+
113| PWM         | on-chip    | pwm                                 |
114+-------------+------------+-------------------------------------+
115| SPI         | on-chip    | spi                                 |
116+-------------+------------+-------------------------------------+
117| WATCHDOG    | on-chip    | independent watchdog                |
118+-------------+------------+-------------------------------------+
119| ADC         | on-chip    | ADC Controller                      |
120+-------------+------------+-------------------------------------+
121| DAC         | on-chip    | DAC Controller                      |
122+-------------+------------+-------------------------------------+
123| Backup SRAM | on-chip    | Backup SRAM                         |
124+-------------+------------+-------------------------------------+
125| RTC         | on-chip    | rtc                                 |
126+-------------+------------+-------------------------------------+
127
128Other hardware features are not yet supported on this Zephyr port.
129
130The default configuration can be found in
131:zephyr_file:`boards/st/nucleo_f746zg/nucleo_f746zg_defconfig`
132
133For more details please refer to `STM32 Nucleo-144 board User Manual`_.
134
135Default Zephyr Peripheral Mapping:
136----------------------------------
137
138The Nucleo F746ZG board features a ST Zio connector (extended Arduino Uno V3)
139and a ST morpho connector. Board is configured as follows:
140
141- UART_2 TX/RX/RTS/CTS : PD5/PD6/PD4/PD3
142- UART_3 TX/RX : PD8/PD9 (ST-Link Virtual Port Com)
143- UART_6 TX/RX : PG14/PG9 (Arduino UART)
144- USER_PB : PC13
145- LD1 : PB0
146- LD2 : PB7
147- LD3 : PB14
148- ETH : PA1, PA2, PA7, PB13, PC1, PC4, PC5, PG11, PG13
149- USB DM : PA11
150- USB DP : PA12
151- I2C : PB8, PB9
152- PWM : PE13
153- SPI : PD14, PA5, PA6, PA7
154- ADC1_IN0 : PA0
155- DAC1_OUT1 : PA4
156
157Note. The Arduino Uno v3 specified SPI device conflicts with the on-board ETH
158device on pin PA7.
159
160System Clock
161------------
162
163Nucleo F746ZG System Clock could be driven by an internal or external
164oscillator, as well as the main PLL clock. By default, the System clock is
165driven by the PLL clock at 72MHz, driven by an 8MHz high-speed external clock.
166
167Serial Port
168-----------
169
170Nucleo F746ZG board has 4 UARTs and 4 USARTs. The Zephyr console output is
171assigned to UART3. Default settings are 115200 8N1.
172
173Backup SRAM
174-----------
175
176In order to test backup SRAM you may want to disconnect VBAT from VDD. You can
177do it by removing ``SB156`` jumper on the back side of the board.
178
179Programming and Debugging
180*************************
181
182Applications for the ``nucleo_f746zg`` board configuration can be built and
183flashed in the usual way (see :ref:`build_an_application` and
184:ref:`application_run` for more details).
185
186Flashing
187========
188
189Nucleo F746ZG board includes an ST-LINK/V2-1 embedded debug tool interface.
190
191Flashing an application to Nucleo F746ZG
192----------------------------------------
193
194The board is configured to be flashed using west `STM32CubeProgrammer`_ runner,
195so its installation is required to be able to flash the board.
196
197Alternatively, openocd (provided in Zephyr SDK) or JLink can also be used to
198flash the board using the ``--runner`` (or ``-r``) option:
199
200.. code-block:: console
201
202   $ west flash --runner openocd
203   $ west flash --runner jlink
204
205Here is an example for the :ref:`hello_world` application.
206
207Run a serial host program to connect with your Nucleo board.
208
209.. code-block:: console
210
211   $ minicom -b 115200 -D /dev/ttyACM0
212
213Build and flash the application:
214
215.. zephyr-app-commands::
216   :zephyr-app: samples/hello_world
217   :board: nucleo_f746zg
218   :goals: build flash
219
220You should see the following message on the console:
221
222.. code-block:: console
223
224   $ Hello World! nucleo_f746zg
225
226Debugging
227=========
228
229You can debug an application in the usual way.  Here is an example for the
230:ref:`hello_world` application.
231
232.. zephyr-app-commands::
233   :zephyr-app: samples/hello_world
234   :board: nucleo_f746zg
235   :maybe-skip-config:
236   :goals: debug
237
238.. _Nucleo F746ZG website:
239   https://www.st.com/en/evaluation-tools/nucleo-f746zg.html
240
241.. _STM32 Nucleo-144 board User Manual:
242   https://www.st.com/resource/en/user_manual/dm00244518.pdf
243
244.. _STM32F746ZG on www.st.com:
245   https://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit-arm-cortex-mcus/stm32-high-performance-mcus/stm32f7-series/stm32f7x6/stm32f746zg.html
246
247.. _STM32F746 reference manual:
248   https://www.st.com/resource/en/reference_manual/dm00124865.pdf
249
250.. _STM32CubeProgrammer:
251   https://www.st.com/en/development-tools/stm32cubeprog.html
252