.. _efr32bg22_brd4184:

SiLabs EFR32BG22-BRD4184(A/B) (Thunderboard EFR32BG22)
######################################################

BRD4184 is a board based on EFR32BG22 SoC and is one of
:ref:`efr32_thunderboard`. It comes in two revisions, which differ from each
other slightly: BRD4184A and BRD4184B.

.. note::
   Currently only the "A" revision is fully supported and tested.

.. image:: ./efr32bg_sltb010a.jpg
   :align: center
   :alt: EFR32BG-SLTB010A

Hardware
********

- EFR32BG22 Blue Gecko Wireless SoC with upto 76.8 MHz operating frequency
- ARM® Cortex® M33 core with 32 kB RAM and 512 kB Flash
- Macronix ultra low power 8-Mbit SPI flash (MX25R8035F)
- 2.4 GHz ceramic antenna for wireless transmission
- Silicon Labs Si7021 relative humidity and temperature sensor
- Silicon Labs Si1133 UV index and ambient light sensor
- Silicon Labs Si7210 hall effect sensor
- TDK InvenSense ICM-20648 6-axis inertial sensor
- One LED and one push button
- Power enable signals and isolation switches for ultra low power operation
- On-board SEGGER J-Link debugger for easy programming and debugging, which
  includes a USB virtual COM port and Packet Trace Interface (PTI)
- Mini Simplicity connector for access to energy profiling and advanced wireless
  network debugging
- Breakout pads for GPIO access and connection to external hardware
- Reset button
- Automatic switch-over between USB and battery power
- CR2032 coin cell holder and external battery connector

For more information about the EFR32BG SoC and Thunderboard EFR32BG22 board:

- `EFR32BG22 Website`_
- `EFR32BG22 Datasheet`_
- `EFR32xG22 Reference Manual`_
- `Thunderboard EFR32BG22 Website`_
- `EFR32BG22-BRD4184 User Guide`_
- `EFR32BG22-BRD4184A Schematics`_
- `EFR32BG22-BRD4184B Schematics`_

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

The efr32bg22_brd4184a board 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                             |
+-----------+------------+-------------------------------------+
| COUNTER   | on-chip    | stimer                              |
+-----------+------------+-------------------------------------+
| SPI(M/S)  | on-chip    | spi                                 |
+-----------+------------+-------------------------------------+
| FLASH     | on-chip    | flash memory                        |
+-----------+------------+-------------------------------------+
| GPIO      | on-chip    | gpio                                |
+-----------+------------+-------------------------------------+
| UART      | on-chip    | serial                              |
+-----------+------------+-------------------------------------+
| WATCHDOG  | on-chip    | watchdog                            |
+-----------+------------+-------------------------------------+
| TRNG      | on-chip    | true random number generator        |
+-----------+------------+-------------------------------------+
| I2C(M/S)  | on-chip    | i2c                                 |
+-----------+------------+-------------------------------------+
| RADIO     | on-chip    | bluetooth                           |
+-----------+------------+-------------------------------------+

The default configuration can be found in the defconfig file:
``boards/arm/efr32_thunderboard/efr32bg22_brd4184a_defconfig``.

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

The EFR32BG SoC has six gpio controllers (PORTA, PORTB, PORTC, PORTD,
PORTE and PORTF).

In the following tables, the column Name contains Pin names. For example, PE2
means Pin number 2 on PORTE and #27 represents the location bitfield, as used
in the board's and microcontroller's datasheets and manuals.

There are two variants of this board, "A" and "B". Please take a look at your PCB,
to determine which one you have, as the GPIO pin bindings vary between those two.

BRD4184A:

+------+-------------+-----------------------------------+
| Name | Function    | Usage                             |
+======+=============+===================================+
| PB0  | GPIO        | LED0 (YELLOW)                     |
+------+-------------+-----------------------------------+
| PB1  | GPIO        | SW0 Push Button PB0               |
+------+-------------+-----------------------------------+
| PA5  | UART_TX     | UART TX Console VCOM_TX US1_TX #1 |
+------+-------------+-----------------------------------+
| PA6  | UART_RX     | UART RX Console VCOM_RX US1_RX #1 |
+------+-------------+-----------------------------------+

BRD4184B:

+------+-------------+-----------------------------------+
| Name | Function    | Usage                             |
+======+=============+===================================+
| PA4  | GPIO        | LED0 (YELLOW)                     |
+------+-------------+-----------------------------------+
| PB3  | GPIO        | SW0 Push Button PB0               |
+------+-------------+-----------------------------------+
| PA5  | UART_TX     | UART TX Console VCOM_TX US1_TX #1 |
+------+-------------+-----------------------------------+
| PA6  | UART_RX     | UART RX Console VCOM_RX US1_RX #1 |
+------+-------------+-----------------------------------+

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

The EFR32BG SoC is configured to use the 38.4 MHz external oscillator on the
board.

Programming and Debugging
=========================

Flashing an application
-----------------------

Connect your device to your host computer using the USB port.
The sample application :ref:`hello_world` is used for this example.
Build the Zephyr kernel and application, then flash it to the device:

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

.. note::
   `west flash` requires `SEGGER J-Link software`_ to be installed on you host
   computer.

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! efr32bg22_brd4184a

Bluetooth
=========

To use the BLE function, run the command below to retrieve necessary binary
blobs from the SiLabs HAL repository.

.. code-block:: console

   west blobs fetch silabs

Then build the Zephyr kernel and a Bluetooth sample with the following
command. The :ref:`bluetooth-observer-sample` sample application is used in
this example.

.. zephyr-app-commands::
   :zephyr-app: samples/bluetooth/observer
   :board: efr32bg22_brd4184a
   :goals: build


.. _Thunderboard EFR32BG22 Website:
   https://www.silabs.com/development-tools/thunderboard/thunderboard-bg22-kit

.. _EFR32BG22-BRD4184 User Guide:
   https://www.silabs.com/documents/public/user-guides/ug415-sltb010a-user-guide.pdf

.. _EFR32BG22-BRD4184A Schematics:
   https://www.silabs.com/documents/public/schematic-files/BRD4184A-A01-schematic.pdf

.. _EFR32BG22-BRD4184B Schematics:
   https://www.silabs.com/documents/public/schematic-files/BRD4184B-A02-schematic.pdf

.. _EFR32BG22 Website:
   https://www.silabs.com/wireless/bluetooth/efr32bg22-series-2-socs

.. _EFR32BG22 Datasheet:
   https://www.silabs.com/documents/public/data-sheets/efr32bg22-datasheet.pdf

.. _EFR32xG22 Reference Manual:
   https://www.silabs.com/documents/public/reference-manuals/efr32xg22-rm.pdf

.. _SEGGER J-Link software:
   https://www.segger.com/downloads/jlink
