.. _efm32hg_slstk3400a:

EFM32HG-SLSTK3400A
##################

Overview
********

The EFM32 Happy Gecko Starter Kit EFM32HG-SLSTK3400A contains a MCU from the
EFM32HG family built on ARM® Cortex®-M0+ processor with excellent low
power capabilities.

.. figure:: efm32hg_slstk3400a.jpg
   :align: center
   :alt: EFM32HG-SLSTK3400A

   EFM32HG-SLSTK3400A (image courtesy of Silicon Labs)

Hardware
********

- Advanced Energy Monitoring system for precise current tracking
- Real-time energy and power profiling
- ARM Cortex M0+ with 64 kB Flash and 8 kB RAM
- 128 X 128 pixel Memory LCD
- 2 user buttons, 2 user LEDs and 2 touch buttons
- 20 pin expansion header
- Silicon Labs Si7021 Relative Humidity/Temperature sensor
- USB device interface
- Integrated SEGGER J-Link USB debugger/emulator with debug out functionality


See these documents for more information

- `EFM32HG Website`_
- `EFM32HG Datasheet`_
- `EFM32HG Reference Manual`_
- `EFM32HG-SLSTK3400A Website`_
- `EFM32HG-SLSTK3400A User Guide`_
- `EFM32HG-SLSTK3400A Schematics`_

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

The efm32hg_slstk3400 board configuration supports the following hardware features:

+-----------+------------+-------------------------------------+
| Interface | Controller | Driver/Component                    |
+===========+============+=====================================+
| NVIC      | on-chip    | nested vector interrupt controller  |
+-----------+------------+-------------------------------------+
| SYSTICK   | on-chip    | systick                             |
+-----------+------------+-------------------------------------+
| FLASH     | on-chip    | flash memory                        |
+-----------+------------+-------------------------------------+
| GPIO      | on-chip    | gpio                                |
+-----------+------------+-------------------------------------+
| USART     | on-chip    | serial port-polling;                |
|           |            | serial port-interrupt               |
+-----------+------------+-------------------------------------+

The default configuration can be found in the defconfig file:
``boards/arm/efm32hg_slstk3400a/efm32hg_slstk3400a_defconfig``

Other hardware features are currently not supported by the port.

Connections and IOs
===================

The EFM32HG SoC has six GPIO controllers (PORTA to PORTF), but only three are
currently enabled (PORTB, PORTE and PORTF) for the EFM32HG-SLSTK3400A board.

In the following table, the column Name contains Pin names. For example, PF4
means Pin number 4 on PORTF, as used in the board's datasheets and manuals.

+-------+-------------+-------------------------------------+
| Name  | Function    | Usage                               |
+=======+=============+=====================================+
| PF4   | GPIO        | LED0                                |
+-------+-------------+-------------------------------------+
| PF5   | GPIO        | LED1                                |
+-------+-------------+-------------------------------------+
| PC9   | GPIO        | Push Button PB0                     |
+-------+-------------+-------------------------------------+
| PC10  | GPIO        | Push Button PB1                     |
+-------+-------------+-------------------------------------+
| PF7   | GPIO        | Board Controller Enable             |
|       |             | EFM_BC_EN                           |
+-------+-------------+-------------------------------------+
| PF2   | USART0_TX   | USART Console EFM_BC_TX U0_TX #4    |
+-------+-------------+-------------------------------------+
| PA9   | USART0_RX   | USART Console EFM_BC_RX U0_RX #4    |
+-------+-------------+-------------------------------------+

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

The EFM32HG SoC is configured to use the 24 MHz external oscillator on the
board.

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

The EFM32HG SoC has two USARTs, two UARTs and two Low Energy UARTs (LEUART).
USART1 is connected to the board controller and is used for the console.

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

.. note::
   Before using the kit the first time, you should update the J-Link firmware
   from `J-Link-Downloads`_

Flashing
========

The EFM32HG-SLSTK3400 includes an `J-Link`_ serial and debug adaptor built into the
board. The adaptor provides:

- A USB connection to the host computer, which exposes a Mass Storage and a
  USB Serial Port.
- A Serial Flash device, which implements the USB flash disk file storage.
- A physical UART connection which is relayed over interface USB Serial port.

Flashing an application to EFM32-SLSTK3400A
-------------------------------------------

The sample application :ref:`hello_world` is used for this example.
Build the Zephyr kernel and application:

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

Connect the EFM32HG-SLSTK3400A to your host computer using the USB port and
you should see a USB connection that exposes a mass storage device (STK3400)
and a USB Serial Port. Copy the generated ``zephyr.bin`` in the STK3400 drive.

Open a serial terminal (minicom, putty, etc.) with the following settings:

- Speed: 115200
- Data: 8 bits
- Parity: None
- Stop bits: 1

Reset the board and you will see this message written to the serial port:

.. code-block:: console

   Hello World! arm


.. _EFM32HG-SLSTK3400A Website:
   https://www.silabs.com/products/development-tools/mcu/32-bit/efm32-happy-gecko-starter-kit

.. _EFM32HG-SLSTK3400A User Guide:
   https://www.silabs.com/documents/public/user-guides/ug255-stk3400-user-guide.pdf

.. _EFM32HG-SLSTK3400A Schematics:
   https://www.silabs.com/documents/public/schematic-files/EFM32HG_BRD2012A_B01_schematic.PDF

.. _EFM32HG Website:
   https://www.silabs.com/products/mcu/32-bit/efm32-happy-gecko

.. _EFM32HG Datasheet:
   https://www.silabs.com/documents/public/data-sheets/EFM32HG322.pdf

.. _EFM32HG Reference Manual:
   https://www.silabs.com/documents/public/reference-manuals/EFM32HG-RM.pdf

.. _J-Link:
   https://www.segger.com/jlink-debug-probes.html

.. _J-Link-Downloads:
   https://www.segger.com/downloads/jlink
