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

.. 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 (EFR32BG22-BRD4184A)
- Vishay VEML6035 ambient light sensor (EFR32BG22-BRD4184B)
- Silicon Labs Si7210 hall effect sensor
- TDK InvenSense ICM-20648 6-axis inertial sensor
- Two Knowles SPK0641HT4H-1 MEMS microphones with PDM output (EFR32BG22-BRD4184B)
- 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-BRD4184A User Guide`_
- `EFR32BG22-BRD4184B User Guide`_
- `EFR32BG22-BRD4184A Schematics`_
- `EFR32BG22-BRD4184B Schematics`_

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

The efr32bg22_brd4184a/b 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 files:
- ``boards/arm/efr32_thunderboard/efr32bg22_brd4184a_defconfig``
- ``boards/arm/efr32_thunderboard/efr32bg22_brd4184b_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:

BRD4184A:

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

BRD4184B:

.. zephyr-app-commands::
   :zephyr-app: samples/hello_world
   :board: efr32bg22_brd4184b
   :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:

BRD4184A:

.. code-block:: console

   Hello World! efr32bg22_brd4184a

BRD4184B:

.. code-block:: console

   Hello World! efr32bg22_brd4184b

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.

BRD4184A:

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

BRD4184B:

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


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

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

.. _EFR32BG22-BRD4184B User Guide:
   https://www.silabs.com/documents/public/user-guides/ug464-brd4184b-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
