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