Skip to content

Commit 2ca889f

Browse files
yishai1999kartben
authored andcommitted
boards: silabs: Add support for SiLabs EFR32ZG23 BRD4210A board
Add support for Silicon Labs BRD4210A (a.k.a xG23-RB4210A) Radio Board. Signed-off-by: Yishai Jaffe <[email protected]>
1 parent 5694b24 commit 2ca889f

File tree

12 files changed

+474
-0
lines changed

12 files changed

+474
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Copyright (c) 2024 Yishai Jaffe
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if BOARD_XG23_RB4210A
5+
6+
config CMU_HFXO_FREQ
7+
default 39000000
8+
9+
config CMU_LFXO_FREQ
10+
default 32768
11+
12+
config LOG_BACKEND_SWO_FREQ_HZ
13+
default 875000
14+
depends on LOG_BACKEND_SWO
15+
16+
if SOC_GECKO_USE_RAIL
17+
18+
config FPU
19+
default y
20+
21+
endif # SOC_GECKO_USE_RAIL
22+
23+
endif # BOARD_XG23_RB4210A
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2024 Yishai Jaffe
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_XG23_RB4210A
5+
select SOC_PART_NUMBER_EFR32ZG23B020F512IM48
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# SPDX-License-Identifier: Apache-2.0
2+
3+
board_runner_args(jlink "--device=EFR32ZG23BxxxF512")
4+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
5+
6+
board_runner_args(openocd)
7+
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
8+
9+
board_runner_args(silabs_commander "--device=EFR32ZG23B020F512IM48")
10+
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: xg23_rb4210a
3+
full_name: EFR32xG23 868-915 MHz 20 dBm (xG23-RB4210A)
4+
vendor: silabs
5+
socs:
6+
- name: efr32zg23b020f512im48
31.1 KB
Loading
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
.. zephyr:board:: xg23_rb4210a
2+
3+
Overview
4+
********
5+
6+
The EFR32ZG23 Radio Board is the radio board delivered with
7+
`xG23-PK6068A Website`_. It contains a Wireless System-On-Chip from the
8+
EFR32ZG23 family built on an ARM Cortex®-M33 processor with excellent low
9+
power capabilities.
10+
11+
The BRD4210A a.k.a. xG23-RB4210A radio board plugs into the Wireless Pro Kit
12+
Mainboard BRD4002A and is supported as one of :ref:`silabs_radio_boards`.
13+
14+
Hardware
15+
********
16+
17+
- EFR32ZG23B020F512IM48 SoC
18+
- CPU core: ARM Cortex®-M33 with FPU
19+
- Flash memory: 512 kB
20+
- RAM: 64 kB
21+
- Transmit power: up to +20 dBm
22+
- Operation frequency: 868-915 MHz
23+
- Crystals for LFXO (32.768 kHz) and HFXO (39 MHz).
24+
25+
For more information about the EFR32ZG23 SoC and BRD4210A board, refer to these
26+
documents:
27+
28+
- `EFR32ZG23 Website`_
29+
- `EFR32ZG23 Datasheet`_
30+
- `EFR32xG23 Reference Manual`_
31+
- `xG23-PK6068A Website`_
32+
- `BRD4210A User Guide`_
33+
34+
Supported Features
35+
==================
36+
37+
The board configuration supports the following hardware features:
38+
39+
+-----------+------------+-------------------------------------+
40+
| Interface | Controller | Driver/Component |
41+
+===========+============+=====================================+
42+
| MPU | on-chip | memory protection unit |
43+
+-----------+------------+-------------------------------------+
44+
| NVIC | on-chip | nested vector interrupt controller |
45+
+-----------+------------+-------------------------------------+
46+
| SYSTICK | on-chip | systick |
47+
+-----------+------------+-------------------------------------+
48+
| COUNTER | on-chip | stimer |
49+
+-----------+------------+-------------------------------------+
50+
| FLASH | on-chip | flash memory |
51+
+-----------+------------+-------------------------------------+
52+
| GPIO | on-chip | gpio |
53+
+-----------+------------+-------------------------------------+
54+
| UART | on-chip | serial |
55+
+-----------+------------+-------------------------------------+
56+
| I2C | on-chip | i2c |
57+
+-----------+------------+-------------------------------------+
58+
| TRNG | on-chip | semailbox |
59+
+-----------+------------+-------------------------------------+
60+
| WATCHDOG | on-chip | watchdog |
61+
+-----------+------------+-------------------------------------+
62+
63+
Other hardware features are currently not supported by the port.
64+
65+
Connections and IOs
66+
===================
67+
68+
In the following table, the column **Name** contains Pin names. For example, PA2
69+
means Pin number 2 on PORTA, as used in the board's datasheets and manuals.
70+
71+
+-------+-------------+-------------------------------------+
72+
| Name | Function | Usage |
73+
+=======+=============+=====================================+
74+
| PB2 | GPIO | LED0 |
75+
+-------+-------------+-------------------------------------+
76+
| PD3 | GPIO | LED1 |
77+
+-------+-------------+-------------------------------------+
78+
| PB1 | GPIO | Push Button 0 |
79+
+-------+-------------+-------------------------------------+
80+
| PB3 | GPIO | Push Button 1 |
81+
+-------+-------------+-------------------------------------+
82+
| PB0 | GPIO | Board Controller Enable |
83+
| | | VCOM_ENABLE |
84+
+-------+-------------+-------------------------------------+
85+
| PA8 | USART0_TX | UART Console VCOM_TX US0_TX |
86+
+-------+-------------+-------------------------------------+
87+
| PA9 | USART0_RX | UART Console VCOM_RX US0_RX |
88+
+-------+-------------+-------------------------------------+
89+
90+
The default configuration can be found in
91+
:zephyr_file:`boards/silabs/radio_boards/xg23_rb4210a/xg23_rb4210a_defconfig`
92+
93+
System Clock
94+
============
95+
96+
The EFR32ZG23 SoC is configured to use the 39 MHz external oscillator on the
97+
board.
98+
99+
Serial Port
100+
===========
101+
102+
The EFR32ZG23 SoC has one USART and three EUSARTs.
103+
USART0 is connected to the board controller and is used for the console.
104+
105+
Programming and Debugging
106+
*************************
107+
108+
Flashing
109+
========
110+
111+
Connect the BRD4002A board with a mounted BRD4210A radio module to your host
112+
computer using the USB port.
113+
114+
Here is an example for the :zephyr:code-sample:`hello_world` application.
115+
116+
.. zephyr-app-commands::
117+
:zephyr-app: samples/hello_world
118+
:board: xg23_rb4210a
119+
:goals: flash
120+
121+
Open a serial terminal (minicom, putty, etc.) with the following settings:
122+
123+
- Speed: 115200
124+
- Data: 8 bits
125+
- Parity: None
126+
- Stop bits: 1
127+
128+
Reset the board and you should see the following message in the terminal:
129+
130+
.. code-block:: console
131+
132+
Hello World! xg23_rb4210a/efr32zg23b020f512im48
133+
134+
135+
.. _xG23-PK6068A Website:
136+
https://www.silabs.com/development-tools/wireless/efr32xg23-pro-kit-20-dbm
137+
138+
.. _BRD4210A User Guide:
139+
https://www.silabs.com/documents/public/user-guides/ug507-brd4210a-user-guide.pdf
140+
141+
.. _EFR32ZG23 Website:
142+
https://www.silabs.com/wireless/z-wave/800-series-modem-soc
143+
144+
.. _EFR32ZG23 Datasheet:
145+
https://www.silabs.com/documents/public/data-sheets/efr32zg23-datasheet.pdf
146+
147+
.. _EFR32xG23 Reference Manual:
148+
https://www.silabs.com/documents/public/reference-manuals/efr32xg23-rm.pdf
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Copyright (c) 2021 Linaro Limited
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# SPI is implemented via usart so node name isn't spi@...
5+
list(APPEND EXTRA_DTC_FLAGS "-Wno-spi_bus_bridge")
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
if {[info exists env(OPENOCD_INTERFACE)]} {
2+
set INTERFACE $env(OPENOCD_INTERFACE)
3+
} else {
4+
# By default connect over Debug USB port using the J-Link interface
5+
set INTERFACE "jlink"
6+
}
7+
8+
source [find interface/$INTERFACE.cfg]
9+
10+
transport select swd
11+
12+
set CHIPNAME efr32
13+
14+
source [find target/efm32.cfg]
15+
16+
$_TARGETNAME configure -event gdb-attach {
17+
echo "Debugger attaching: halting execution"
18+
reset halt
19+
gdb_breakpoint_override hard
20+
}
21+
22+
$_TARGETNAME configure -event gdb-detach {
23+
echo "Debugger detaching: resuming execution"
24+
resume
25+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright (c) 2024 Yishai Jaffe
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <dt-bindings/pinctrl/silabs/xg23-pinctrl.h>
8+
9+
&pinctrl {
10+
usart0_default: usart0_default {
11+
group0 {
12+
pins = <USART0_TX_PA8>;
13+
drive-push-pull;
14+
output-high;
15+
};
16+
group1 {
17+
pins = <USART0_RX_PA9>;
18+
input-enable;
19+
silabs,input-filter;
20+
};
21+
};
22+
};

0 commit comments

Comments
 (0)