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

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

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                    |
+===========+============+=====================================+
| NVIC      | on-chip    | nested vector interrupt controller  |
+-----------+------------+-------------------------------------+
| SYSTICK   | on-chip    | systick                             |
+-----------+------------+-------------------------------------+
| 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                                |
+-------+-------------+-------------------------------------+
| PB0   | GPIO        | Push Button PB0                     |
+-------+-------------+-------------------------------------+
| PB1   | 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 useing 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:

.. code-block:: console

   $ cd <zephyr_root_path>
   $ . zephyr-env.sh
   $ cd samples/hello_world/
   $ make BOARD=efm32wg_stk3800

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
