.. _stm32l4r9i_disco_board:

ST STM32L4R9I Discovery
#######################

Overview
********

The 32L4R9IDISCOVERY Discovery kit is a complete demonstration and development platform
for STMicroelectronics Arm® Cortex®-M4 core-based STM32L4R9AI microcontroller.

Leveraging the innovative ultra-low-power oriented features, 640 Kbytes of embedded RAM,
graphics performance (Chrom-ART Accelerator), and DSI controller offered by the STM32L4R9AI,
the 32L4R9IDISCOVERY Discovery kit enables users to easily prototype applications with
state-of-the-art energy efficiency, as well as stunning audio and graphics rendering with direct
support for AMOLED DSI round LCD display.

For even more user-friendliness, the on-board ST-LINK/V2-1 debugger provides out-of-the-box
programming and debugging capabilities.

.. image:: img/stm32l4r9i_disco.jpg
    :align: center
    :alt: STM32L4R9I-DISCO

More information about the board can be found at the `STM32L4R9I-DISCOVERY website`_.
More information about STM32L4R9 can be found here:

- `STM32L4R9/S9 on www.st.com`_
- `STM32L4+ Series reference manual`_
- `STM32L4R5xx/R7xx/R9xx datasheet`_

Supported Features
==================

The current Zephyr stm32l4r9i_disco board configuration supports the following hardware features:

+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component                    |
+===========+============+=====================================+
| NVIC      | on-chip    | nested vector interrupt controller  |
+-----------+------------+-------------------------------------+
| UART      | on-chip    | serial port-polling                 |
+-----------+------------+-------------------------------------+
| PINMUX    | on-chip    | pinmux                              |
+-----------+------------+-------------------------------------+
| GPIO      | on-chip    | gpio                                |
+-----------+------------+-------------------------------------+
| FLASH     | on-chip    | on-chip flash memory;               |
|           |            | external OctoSPI memory             |
+-----------+------------+-------------------------------------+
| ADC       | on-chip    | ADC Controller                      |
+-----------+------------+-------------------------------------+
| RTC       | on-chip    | Real Time Clock                     |
+-----------+------------+-------------------------------------+
| I2C       | on-chip    | i2c                                 |
+-----------+------------+-------------------------------------+
| SPI       | on-chip    | spi                                 |
+-----------+------------+-------------------------------------+
| PWM       | on-chip    | pwm                                 |
+-----------+------------+-------------------------------------+
| SDMMC     | on-chip    | sd/mmc                              |
+-----------+------------+-------------------------------------+

Other hardware features are not yet supported on Zephyr porting.

The default configuration can be found in the defconfig file:

	:zephyr_file:`boards/st/stm32l4r9i_disco/stm32l4r9i_disco_defconfig`


Pin Mapping
===========

For more details, please refer to `STM32L4R9I-DISCOVERY website`_.

System Clock
============

The STM32L4R9AI System Clock can be driven by an internal or external oscillator,
as well as by the main PLL clock. By default, the System clock is driven by
the PLL clock at 120MHz. PLL clock is driven by a 4MHz medium speed internal clock.

Serial Port
===========

The STM32L4R9I Discovery board has up to 6 U(S)ARTs.
The Zephyr console output is assigned to UART2, which is connected to the onboard
ST-LINK Virtual COM port interface. Default communication settings are 115200 8N1.


Programming and Debugging
*************************

Flashing
========

The STM32L4R9I Discovery board includes an ST-LINK/V2-1 debug tool.

Applications for the ``stm32l4r9i_disco`` board configuration can be
built and flashed in the usual way (see :ref:`build_an_application`
and :ref:`application_run` for more details).


Flashing an application to STM32L4R9I Discovery
-----------------------------------------------

Connect the STM32L4R9I Discovery to your host computer using the ST-LINK
USB port, then run a serial host program to connect with the board. For example:

.. code-block:: console

   $ minicom -b 115200 -D /dev/ttyACM0

You can then build and flash applications in the usual way.
Here is an example for the :ref:`hello_world` application.

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: stm32l4r9i_disco
   :goals: build flash

You should see the following message in the serial host program:

.. code-block:: console

   $ Hello World! stm32l4r9i_disco


Debugging
=========

You can debug an application in the usual way.  Here is an example for the
:ref:`hello_world` application.

.. zephyr-app-commands::
    :zephyr-app: samples/hello_world
    :board: stm32l4r9i_disco
    :goals: debug

.. _STM32L4R9I-DISCOVERY website:
    https://www.st.com/en/evaluation-tools/32l4r9idiscovery.html

.. _STM32L4R9/S9 on www.st.com:
    https://www.st.com/en/microcontrollers-microprocessors/stm32l4r9-s9.html

.. _STM32L4+ Series reference manual:
    https://www.st.com/resource/en/reference_manual/rm0432-stm32l4-series-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

.. _STM32L4R5xx/R7xx/R9xx datasheet:
    https://www.st.com/resource/en/datasheet/stm32l4r5vi.pdf
