.. _efm32wg_stk3800:

EFM32WG-STK3800
###############

Overview
********

The EFM32 Wonder Gecko Starter Kit EFM32WG-STK3800 contains a MCU from the
EFM32WG family built on ARM® Cortex®-M4F processor with excellent low
power capabilities.

.. figure:: ./efm32wg_stk3800.jpg
   :width: 375px
   :align: center
   :alt: EFM32WG-STK3800

   EFM32WG-STK3800 (image courtesy of Silicon Labs)


Hardware
********

- Advanced Energy Monitoring provides real-time information about the energy
  consumption of an application or prototype design.
- 32MByte parallel NAND Flash
- 160 segment Energy Micro LCD
- 2 user buttons, 2 LEDs and a touch slider
- Ambient Light Sensor and Inductive-capacitive metal sensor
- On-board Segger J-Link USB debugger

For more information about the EFM32WG SoC and EFM32WG-STK3800 board:

- `EFM32WG Website`_
- `EFM32WG Datasheet`_
- `EFM32WG Reference Manual`_
- `EFM32WG-STK3800 Website`_
- `EFM32WG-STK3800 User Guide`_
- `EFM32WG-STK3800 Schematics`_

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

The efm32wg_stk3800oard configuration supports the following hardware features:

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

The default configuration can be found in the defconfig file:

	``boards/arm/efm32wg_stk3800/efm32wg_stk3800_defconfig``

Other hardware features are currently not supported by the port.

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

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

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

+-------+-------------+-------------------------------------+
| Name  | Function    | Usage                               |
+=======+=============+=====================================+
| PE2   | GPIO        | LED0                                |
+-------+-------------+-------------------------------------+
| PE3   | GPIO        | LED1                                |
+-------+-------------+-------------------------------------+
| PB9   | GPIO        | Push Button PB0                     |
+-------+-------------+-------------------------------------+
| PB10  | GPIO        | Push Button PB1                     |
+-------+-------------+-------------------------------------+
| PF7   | GPIO        | Board Controller Enable             |
|       |             | EFM_BC_EN                           |
+-------+-------------+-------------------------------------+
| PE0   | UART0_TX    | UART Console EFM_BC_TX U0_TX #1     |
+-------+-------------+-------------------------------------+
| PE1   | UART0_RX    | UART Console EFM_BC_RX U0_RX #1     |
+-------+-------------+-------------------------------------+

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

The EFM32WG SoC is configured to use the 48 MHz external oscillator on the
board.

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

The EFM32WG SoC has three USARTs, two UARTs and two Low Energy UARTs (LEUART).
UART0 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 EFM32WG-STK3800 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-STK3800
----------------------------------------

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: efm32wg_stk3800
   :goals: build

Connect the EFM32WG-STK3800 to your host computer using the USB port and you
should see a USB connection which exposes a Mass Storage (STK3800) and a
USB Serial Port. Copy the generated zephyr.bin in the STK3800 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 should be able to see on the corresponding Serial Port
the following message:

.. code-block:: console

   Hello World! arm


.. _EFM32WG-STK3800 Website:
   http://www.silabs.com/products/development-tools/mcu/32-bit/efm32-wonder-gecko-starter-kit

.. _EFM32WG-STK3800 User Guide:
   http://www.silabs.com/documents/public/user-guides/efm32wg-stk3800-ug.pdf

.. _EFM32WG-STK3800 Schematics:
   http://www.silabs.com/documents/public/schematic-files/BRD2400A_A00.pdf

.. _EFM32WG Website:
   http://www.silabs.com/products/mcu/32-bit/efm32-wonder-gecko

.. _EFM32WG Datasheet:
   http://www.silabs.com/documents/public/data-sheets/EFM32WG990.pdf

.. _EFM32WG Reference Manual:
   http://www.silabs.com/documents/public/reference-manuals/EFM32WG-RM.pdf

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

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