.. _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/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
