1.. _nucleo_l4a6zg_board:
2
3ST Nucleo L4A6ZG
4################
5
6Overview
7********
8
9The Nucleo L4A6ZG board features an ARM Cortex-M4 based STM32L4A6ZG MCU
10with a wide range of connectivity support and configurations. Here are
11some highlights of the Nucleo L4A6ZG board:
12
13
14- STM32 microcontroller in QFP144 package
15- USB OTG FS with Micro-AB connector
16- Two types of extension resources:
17
18  - Arduino Uno V3 connectivity
19  - ST morpho extension pin headers for full access to all STM32 I/Os
20
21- On-board ST-LINK/V2-1 debugger/programmer with SWD connector
22- Flexible board power supply:
23
24  - USB VBUS or external source(3.3V, 5V, 7 - 12V)
25  - Power management access point
26
27- 8 LEDs: user LEDs (LD1, LD2, LD3), communication LED (LD4), USB
28  power fault(LD5), power LED (LD6), USB FS OTG (LD7, LD8)
29- 2 push buttons: USER and RESET
30
31.. image:: ../../nucleo_l496zg/doc/img/nucleo_l496zg.jpg
32   :align: center
33   :alt: Nucleo L4A6ZG
34
35More information about the board can be found at the `Nucleo L4A6ZG website`_.
36
37Hardware
38********
39
40The STM32L4A6ZG SoC provides the following hardware capabilities:
41
42- Ultra-low-power with FlexPowerControl (down to 108 nA Standby mode and 91 uA/MHz run mode)
43- Core: ARM |reg| 32-bit Cortex |reg|-M4 CPU with FPU, frequency up to 80 MHz, 100DMIPS/1.25DMIPS/MHz (Dhrystone 2.1)
44- Clock Sources:
45
46  - 4 to 48 MHz crystal oscillator
47  - 32 kHz crystal oscillator for RTC (LSE)
48  - Internal 16 MHz factory-trimmed RC ( |plusminus| 1%)
49  - Internal low-power 32 kHz RC ( |plusminus| 5%)
50  - Internal multispeed 100 kHz to 48 MHz oscillator, auto-trimmed by
51    LSE (better than  |plusminus| 0.25 % accuracy)
52  - 3 PLLs for system clock, USB, audio, ADC
53
54- RTC with HW calendar, alarms and calibration
55- LCD 8 x 40 or 4 x 44 with step-up converter
56- Up to 24 capacitive sensing channels: support touchkey, linear and rotary touch sensors
57- 16x timers:
58
59  - 2x 16-bit advanced motor-control
60  - 2x 32-bit and 5x 16-bit general purpose
61  - 2x 16-bit basic
62  - 2x low-power 16-bit timers (available in Stop mode)
63  - 2x watchdogs
64  - SysTick timer
65
66- Up to 136 fast I/Os, most 5 V-tolerant, up to 14 I/Os with independent supply down to 1.08 V
67- Memories
68
69  - Up to 1 MB Flash, 2 banks read-while-write, proprietary code readout protection
70  - Up to 320 KB of SRAM including 64 KB with hardware parity check
71  - External memory interface for static memories supporting SRAM, PSRAM, NOR and NAND memories
72  - Quad SPI memory interface
73
74- 4x digital filters for sigma delta modulator
75- Rich analog peripherals (independent supply)
76
77  - 3x 12-bit ADC 5 MSPS, up to 16-bit with hardware oversampling, 200 uA/MSPS
78  - 2x 12-bit DAC, low-power sample and hold
79  - 2x operational amplifiers with built-in PGA
80  - 2x ultra-low-power comparators
81
82- 20x communication interfaces
83
84  - USB OTG 2.0 full-speed, LPM and BCD
85  - 2x SAIs (serial audio interface)
86  - 4x I2C FM+(1 Mbit/s), SMBus/PMBus
87  - 5x U(S)ARTs (ISO 7816, LIN, IrDA, modem)
88  - 1x LPUART
89  - 3x SPIs (4x SPIs with the Quad SPI)
90  - 2x CAN (2.0B Active) and SDMMC interface
91  - SWPMI single wire protocol master I/F
92  - IRTIM (Infrared interface)
93
94- 14-channel DMA controller
95- True random number generator
96- CRC calculation unit, 96-bit unique ID
97- AES and HASH hardware accelerators
98- Development support: serial wire debug (SWD), JTAG, Embedded Trace Macrocell |trade|
99
100
101More information about STM32L4A6ZG can be found here:
102
103- `STM32L4A6ZG on www.st.com`_
104- `STM32L4A6 reference manual`_
105
106Supported Features
107==================
108
109The Zephyr nucleo_l4a6zg board configuration supports the following hardware features:
110
111+-----------+------------+-------------------------------------+
112| Interface | Controller | Driver/Component                    |
113+===========+============+=====================================+
114| AES       | on-chip    | crypto                              |
115+-----------+------------+-------------------------------------+
116| FLASH     | on-chip    | flash memory                        |
117+-----------+------------+-------------------------------------+
118| GPIO      | on-chip    | gpio                                |
119+-----------+------------+-------------------------------------+
120| I2C       | on-chip    | i2c                                 |
121+-----------+------------+-------------------------------------+
122| NVIC      | on-chip    | nested vector interrupt controller  |
123+-----------+------------+-------------------------------------+
124| PINMUX    | on-chip    | pinmux                              |
125+-----------+------------+-------------------------------------+
126| PWM       | on-chip    | pwm                                 |
127+-----------+------------+-------------------------------------+
128| RTC       | on-chip    | rtc                                 |
129+-----------+------------+-------------------------------------+
130| SPI       | on-chip    | spi                                 |
131+-----------+------------+-------------------------------------+
132| UART      | on-chip    | serial port-polling;                |
133|           |            | serial port-interrupt               |
134+-----------+------------+-------------------------------------+
135| WATCHDOG  | on-chip    | System Window Watchdog              |
136+-----------+------------+-------------------------------------+
137
138Other hardware features are not yet supported on this Zephyr port.
139
140The default configuration can be found in the defconfig file:
141``boards/arm/nucleo_l4a6zg/nucleo_l4a6zg_defconfig``
142
143
144Connections and IOs
145===================
146
147Nucleo L4A6ZG Board has 8 GPIO controllers. These controllers are responsible for pin muxing,
148input/output, pull-up, etc.
149
150For mode details please refer to `STM32 Nucleo-144 board User Manual`_.
151
152Default Zephyr Peripheral Mapping:
153----------------------------------
154
155- LPUART_1 TX/RX : PG7/PG8 (ST-Link Virtual COM Port)
156- UART_3 TX/RX : PD8/PD9 (Arduino Serial)
157- I2C_1 SCL/SDA : PB8/PB7 (Arduino I2C)
158- SPI_1 SCK/MISO/MOSI/NSS : PA5/PA6/PA7/PD14 (Arduino SPI)
159- USER_PB : PC13
160- PWM_15_CH1 : PB14 (Red LED)
161- LD1 : PC7 (Green LED)
162- LD2 : PB7 (Blue LED)
163- LD3 : PB14 (Red LED)
164
165System Clock
166------------
167
168Nucleo L4A6ZG system clock could be driven by internal or external oscillator,
169as well as main PLL clock. By default, system clock is driven by PLL at 80MHz, which is
170driven by 16MHz high speed internal oscillator (HSI). High speed external oscillator
171(HSE) is not soldered on the board, so it cannot be used to drive the PLL.
172
173Serial Port
174-----------
175
176Nucleo L4A6ZG board has 5 UARTs. The Zephyr console output is assigned to LPUART1,
177which is connected to the onboard ST-LINK/V2-1. Virtual COM port interface.
178Default settings are 115200 8N1.
179
180
181Programming and Debugging
182*************************
183
184Applications for the ``nucleo_l4a6zg`` board configuration can be built and
185flashed in the usual way (see :ref:`build_an_application` and
186:ref:`application_run` for more details).
187
188Flashing
189========
190
191Nucleo L4A6ZG board includes an ST-LINK/V2-1 embedded debug tool
192interface. This interface is supported by the OpenOCD version
193included in the Zephyr SDK since v0.9.5.
194
195Flashing an application to Nucleo L4A6ZG
196----------------------------------------
197
198Connect the Nucleo L4A6ZG to your host computer using the ST-LINK USB port.
199Then build and flash an application. Here is an example for the
200:ref:`hello_world` application.
201
202Run a serial host program to connect with your Nucleo board:
203
204.. code-block:: console
205
206   $ minicom -D /dev/ttyUSB0
207
208Then build and flash the application.
209
210.. zephyr-app-commands::
211   :zephyr-app: samples/hello_world
212   :board: nucleo_l4a6zg
213   :goals: build flash
214
215You should see the following message on the console:
216
217.. code-block:: console
218
219   Hello World! nucleo_l4a6zg
220
221Debugging
222=========
223
224You can debug an application in the usual way.  Here is an example for the
225:ref:`hello_world` application.
226
227.. zephyr-app-commands::
228   :zephyr-app: samples/hello_world
229   :board: nucleo_l4a6zg
230   :maybe-skip-config:
231   :goals: debug
232
233.. _Nucleo L4A6ZG website:
234   https://www.st.com/en/evaluation-tools/nucleo-l4a6zg.html
235
236.. _STM32 Nucleo-144 board User Manual:
237   https://www.st.com/resource/en/user_manual/dm00368330.pdf
238
239.. _STM32L4A6ZG on www.st.com:
240   https://www.st.com/en/microcontrollers-microprocessors/stm32l4a6zg.html
241
242.. _STM32L4A6 reference manual:
243   https://www.st.com/resource/en/reference_manual/dm00083560.pdf
244