Skip to content

Commit 049da14

Browse files
committed
boards: silabs: Add support for xg22_ek2710a (EFR32xG22E Explorer Kit)
Signed-off-by: James Smith <james@loopj.com>
1 parent 155cbc4 commit 049da14

File tree

9 files changed

+432
-0
lines changed

9 files changed

+432
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Copyright The Zephyr Project Contributors
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if BOARD_XG22_EK2710A
5+
6+
config LOG_BACKEND_SWO_FREQ_HZ
7+
default 875000
8+
depends on LOG_BACKEND_SWO
9+
10+
if SOC_GECKO_USE_RAIL
11+
12+
config FPU
13+
default y
14+
15+
endif # SOC_GECKO_USE_RAIL
16+
17+
if BT
18+
19+
config FPU
20+
default y
21+
22+
config COMMON_LIBC_MALLOC_ARENA_SIZE
23+
default 8192
24+
25+
config MAIN_STACK_SIZE
26+
default 3072 if PM
27+
default 2304
28+
29+
endif # BT
30+
31+
endif # BOARD_XG22_EK2710A
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright The Zephyr Project Contributors
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_XG22_EK2710A
5+
select SOC_PART_NUMBER_EFR32MG22E224F512IM40
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Copyright The Zephyr Project Contributors
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
board_runner_args(jlink "--device=EFR32MG22C224F512IM40" "--reset-after-load")
5+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
6+
7+
board_runner_args(silabs_commander "--device=EFR32MG22E224F512IM40")
8+
include(${ZEPHYR_BASE}/boards/common/silabs_commander.board.cmake)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
board:
2+
name: xg22_ek2710a
3+
full_name: EFR32xG22 Explorer Kit (xG22-EK2710A)
4+
vendor: silabs
5+
socs:
6+
- name: efr32mg22e224f512im40
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
.. zephyr:board:: xg22_ek2710a
2+
3+
Overview
4+
********
5+
6+
The EFR32xG22E Explorer Kit (xG22-EK2710A) contains
7+
a Wireless System-On-Chip from the EFR32MG22 family built on an
8+
ARM Cortex®-M33 processor with excellent low power capabilities.
9+
10+
Hardware
11+
********
12+
13+
- EFR32MG22E224F512IM40 Mighty Gecko SoC
14+
- CPU core: ARM Cortex®-M33 with FPU
15+
- Flash memory: 512 kB
16+
- RAM: 32 kB
17+
- Transmit power: up to +6 dBm
18+
- Operation frequency: 2.4 GHz
19+
- Crystal for HFXO (38.4 MHz)
20+
21+
For more information about the EFR32MG22 SoC and BRD2710A board, refer to these
22+
documents:
23+
24+
- `EFR32MG22 Website`_
25+
- `EFR32MG22E Datasheet`_
26+
- `EFR32xG22 Reference Manual`_
27+
- `BRD2710A User Guide`_
28+
29+
Supported Features
30+
==================
31+
32+
.. zephyr:board-supported-hw::
33+
34+
Connections and IOs
35+
===================
36+
37+
In the following table, the column **Name** contains Pin names. For example, PA2
38+
means Pin number 2 on PORTA, as used in the board's datasheets and manuals.
39+
40+
+-------+-------------+-------------------------------------+
41+
| Name | Function | Usage |
42+
+=======+=============+=====================================+
43+
| PA4 | GPIO | LED0 |
44+
+-------+-------------+-------------------------------------+
45+
| PC7 | GPIO | Push Button 0 |
46+
+-------+-------------+-------------------------------------+
47+
| PA5 | USART1_TX | UART Console VCOM_TX US0_TX |
48+
+-------+-------------+-------------------------------------+
49+
| PA6 | USART1_RX | UART Console VCOM_RX US0_RX |
50+
+-------+-------------+-------------------------------------+
51+
52+
The default configuration can be found in
53+
:zephyr_file:`boards/silabs/dev_kits/xg22_ek2710a/xg22_ek2710a_defconfig`
54+
55+
System Clock
56+
============
57+
58+
The EFR32MG22E SoC is configured to use the 38.4 MHz external oscillator on the
59+
board, and can operate a clock speeds of up to 76.8 MHz.
60+
61+
Serial Port
62+
===========
63+
64+
The EFR32MG22E SoC has two USARTs and one EUART.
65+
USART1 is connected to the board controller and is used for the console.
66+
67+
Programming and Debugging
68+
*************************
69+
70+
.. zephyr:board-supported-runners::
71+
72+
.. note::
73+
Before using the kit the first time, you should update the J-Link firmware
74+
in Simplicity Studio.
75+
76+
Flashing
77+
========
78+
79+
The sample application :zephyr:code-sample:`hello_world` is used for this example.
80+
Build the Zephyr kernel and application:
81+
82+
.. zephyr-app-commands::
83+
:zephyr-app: samples/hello_world
84+
:board: xg22_ek2710a
85+
:goals: build
86+
87+
Connect the xg22_ek2710a to your host computer using the USB port and you
88+
should see a USB connection.
89+
90+
Open a serial terminal (minicom, putty, etc.) with the following settings:
91+
92+
- Speed: 115200
93+
- Data: 8 bits
94+
- Parity: None
95+
- Stop bits: 1
96+
97+
Reset the board and you'll see the following message on the corresponding serial port
98+
terminal session:
99+
100+
.. code-block:: console
101+
102+
Hello World! xg22_ek2710a/efr32mg22e224f512im40
103+
104+
Bluetooth
105+
=========
106+
107+
To use the BLE function, run the command below to retrieve necessary binary
108+
blobs from the SiLabs HAL repository.
109+
110+
.. code-block:: console
111+
112+
west blobs fetch hal_silabs
113+
114+
Then build the Zephyr kernel and a Bluetooth sample with the following
115+
command. The :zephyr:code-sample:`bluetooth_observer` sample application is used in
116+
this example.
117+
118+
.. zephyr-app-commands::
119+
:zephyr-app: samples/bluetooth/observer
120+
:board: xg22_ek2710a
121+
:goals: build
122+
123+
.. _EFR32MG22 Website:
124+
https://www.silabs.com/wireless/zigbee/efr32mg22-series-2-socs#
125+
126+
.. _EFR32MG22E Datasheet:
127+
https://www.silabs.com/documents/public/data-sheets/efr32mg22e-datasheet.pdf
128+
129+
.. _EFR32xG22 Reference Manual:
130+
https://www.silabs.com/documents/public/reference-manuals/efr32xg22-rm.pdf
131+
132+
.. _BRD2710A User Guide:
133+
https://www.silabs.com/documents/public/user-guides/ug582-brd2710a-user-guide.pdf
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* Copyright The Zephyr Project Contributors
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <dt-bindings/pinctrl/silabs/xg22-pinctrl.h>
8+
9+
&pinctrl {
10+
itm_default: itm_default {
11+
group0 {
12+
pins = <GPIO_SWV_PA3>;
13+
drive-push-pull;
14+
output-high;
15+
};
16+
};
17+
18+
i2c0_default: i2c0_default {
19+
group0 {
20+
pins = <I2C0_SCL_PD2>, <I2C0_SDA_PD3>;
21+
bias-pull-up;
22+
drive-open-drain;
23+
};
24+
};
25+
26+
pti_default: pti_default {
27+
group0 {
28+
pins = <PTI_DOUT_PC4>, <PTI_DFRAME_PC5>;
29+
drive-push-pull;
30+
output-high;
31+
};
32+
};
33+
34+
usart1_default: usart1_default {
35+
group0 {
36+
pins = <USART1_TX_PA5>;
37+
drive-push-pull;
38+
output-high;
39+
};
40+
41+
group1 {
42+
pins = <USART1_RX_PA6>;
43+
input-enable;
44+
silabs,input-filter;
45+
};
46+
};
47+
};

0 commit comments

Comments
 (0)