Skip to content

Commit 1a6611e

Browse files
committed
[nrf fromtree] boards: nordic: Add nRF93M1 DK board
Add build targets for nRF93M1 DK board which includes nRF54L15 as a host MCU. Bulk of the board definitions are copied from nRF54L15DK. Main differences: * The console UART is changed to uart20 as uart30 is routed to modem * Few GPIO hogs to control the modem and UART switches * nPM1300 PMIC set up to enable various voltages on board Signed-off-by: Seppo Takalo <seppo.takalo@nordicsemi.no> (cherry picked from commit 503c4ca327839949463690d98f36cf8d37f5e09b)
1 parent 2091bad commit 1a6611e

31 files changed

Lines changed: 1198 additions & 0 deletions
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Copyright (c) 2026 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config HW_STACK_PROTECTION
5+
default ARCH_HAS_STACK_PROTECTION
6+
7+
if SPI_NOR
8+
9+
config SPI_NOR_FLASH_LAYOUT_PAGE_SIZE
10+
default 4096 if MCUBOOT || BOOTLOADER_MCUBOOT
11+
12+
endif # SPI_NOR
13+
14+
if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
15+
16+
config BOARD_NRF93M1DK
17+
select USE_DT_CODE_PARTITION if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
18+
19+
# By default, if we build for a Non-Secure version of the board,
20+
# enable building with TF-M as the Secure Execution Environment.
21+
config BUILD_WITH_TFM
22+
default y
23+
24+
# If building with TF-M, disable UART in TF-M to avoid conflicts with
25+
# the UART used by the modem
26+
if BUILD_WITH_TFM
27+
28+
config TFM_SECURE_UART
29+
default n
30+
31+
config TFM_LOG_LEVEL_SILENCE
32+
default y
33+
34+
endif # BUILD_WITH_TFM
35+
36+
endif # BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
37+
38+
if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS || BOARD_NRF93M1DK_NRF54L15_CPUAPP
39+
40+
# Configure default init priority:
41+
# 1. I2C (CONFIG_I2C_INIT_PRIORITY, default 50)
42+
# 2. NPM13xx MFD (CONFIG_MFD_INIT_PRIORITY, default 80)
43+
# 3. NPM13xx charger (CONFIG_SENSOR_INIT_PRIORITY, default 90)
44+
# 4. Power domain GPIO (CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY, default was 75)
45+
# 5. Cellular modem (CONFIG_MODEM_CELLULAR_INIT_PRIORITY, default was 79)
46+
#
47+
# The order of 3, 4 and 5 is critical to ensure that the Vbus current limit
48+
# is set before the modem is initialized.
49+
50+
config POWER_DOMAIN_GPIO_INIT_PRIORITY
51+
default 92
52+
53+
config MODEM_CELLULAR_INIT_PRIORITY
54+
default 93
55+
56+
if !MCUBOOT
57+
58+
config REGULATOR
59+
default y
60+
61+
config SENSOR
62+
default y
63+
64+
config POWER_DOMAIN
65+
default y
66+
67+
endif # !MCUBOOT
68+
69+
endif # BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS || BOARD_NRF93M1DK_NRF54L15_CPUAPP
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Copyright (c) 2026 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
config BOARD_NRF93M1DK
5+
select SOC_NRF54L15_CPUAPP if BOARD_NRF93M1DK_NRF54L15_CPUAPP || BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
6+
select SOC_NRF54L15_CPUFLPR if BOARD_NRF93M1DK_NRF54L15_CPUFLPR || \
7+
BOARD_NRF93M1DK_NRF54L15_CPUFLPR_XIP
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Copyright (c) 2026 Nordic Semiconductor ASA
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if(CONFIG_SOC_NRF54L15_CPUAPP)
5+
board_runner_args(jlink "--device=nRF54L15_M33" "--speed=4000")
6+
elseif(CONFIG_SOC_NRF54L15_CPUFLPR)
7+
board_runner_args(jlink "--device=nRF54L15_RV32")
8+
endif()
9+
10+
if(CONFIG_TRUSTED_EXECUTION_NONSECURE)
11+
set(TFM_PUBLIC_KEY_FORMAT "full")
12+
endif()
13+
14+
if(CONFIG_TFM_FLASH_MERGED_BINARY)
15+
set_property(TARGET runners_yaml_props_target PROPERTY hex_file tfm_merged.hex)
16+
endif()
17+
18+
include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
19+
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)

boards/nordic/nrf93m1dk/board.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
board:
2+
name: nrf93m1dk
3+
full_name: nRF93M1 DK
4+
vendor: nordic
5+
revision:
6+
format: major.minor.patch
7+
default: "0.3.0"
8+
revisions:
9+
- name: "0.1.0"
10+
- name: "0.2.0"
11+
- name: "0.3.0"
12+
socs:
13+
- name: nrf54l15
14+
variants:
15+
- name: xip
16+
cpucluster: cpuflpr
17+
- name: ns
18+
cpucluster: cpuapp
19+
runners:
20+
run_once:
21+
'--recover':
22+
- runners:
23+
- nrfutil
24+
run: first
25+
groups:
26+
- boards:
27+
- nrf93m1dk/nrf54l15/cpuapp
28+
- nrf93m1dk/nrf54l15/cpuapp/ns
29+
- nrf93m1dk/nrf54l15/cpuflpr
30+
- nrf93m1dk/nrf54l15/cpuflpr/xip
31+
'--erase':
32+
- runners:
33+
- jlink
34+
- nrfutil
35+
run: first
36+
groups:
37+
- boards:
38+
- nrf93m1dk/nrf54l15/cpuapp
39+
- nrf93m1dk/nrf54l15/cpuapp/ns
40+
- nrf93m1dk/nrf54l15/cpuflpr
41+
- nrf93m1dk/nrf54l15/cpuflpr/xip
42+
'--reset':
43+
- runners:
44+
- jlink
45+
- nrfutil
46+
run: last
47+
groups:
48+
- boards:
49+
- nrf93m1dk/nrf54l15/cpuapp
50+
- nrf93m1dk/nrf54l15/cpuapp/ns
51+
- nrf93m1dk/nrf54l15/cpuflpr
52+
- nrf93m1dk/nrf54l15/cpuflpr/xip
13.5 KB
Loading
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
.. zephyr:board:: nrf93m1dk
2+
3+
Overview
4+
********
5+
6+
.. note::
7+
You can find more information about the nRF93M1 module on the `nRF93M1 website`_.
8+
9+
The nRF93M1 Development Kit (DK) is a single-board development kit for evaluation
10+
and development of LTE Cat 1 bis IoT applications using the nRF93M1 cellular module.
11+
The board integrates the Nordic Semiconductor nRF54L15 as the host MCU and the
12+
nRF93M1 as the LTE Cat 1 bis modem module, connected over UART.
13+
14+
.. figure:: img/nrf93m1_dk.webp
15+
:align: center
16+
:alt: nRF93M1 DK
17+
18+
nRF93M1 DK (Credit: Nordic Semiconductor)
19+
20+
Hardware
21+
********
22+
23+
The nRF93M1 DK includes the following hardware components:
24+
25+
* nRF54L15 host MCU (ARM Cortex-M33 application core + RISC-V FLPR core)
26+
* nRF93M1 LTE Cat 1 bis modem module
27+
* nPM1300 PMIC with battery charger
28+
* USB-C connector for programming, debugging and power
29+
30+
Supported Features
31+
==================
32+
33+
.. zephyr:board-supported-hw::
34+
35+
Connections and IOs
36+
===================
37+
38+
LED
39+
---
40+
41+
* LED1 (blue) = P2.9
42+
* LED2 (red) = P2.8
43+
* LED3 (green) = P2.10
44+
45+
Push buttons
46+
------------
47+
48+
* BUTTON1 = P0.4
49+
* BUTTON2 = P1.9
50+
51+
nRF93M1 Modem
52+
=============
53+
54+
The nRF93M1 modem module is connected to the nRF54L15 host MCU over UART with
55+
hardware flow control (``uart30``). The following control signals are available:
56+
57+
* DC switch enable = P1.1
58+
* Power key = P1.13
59+
* Reset = P1.12
60+
* USB boot = P1.0
61+
* VCOM1 control = P2.6
62+
63+
Programming and Debugging
64+
*************************
65+
66+
.. zephyr:board-supported-runners::
67+
68+
Applications for the ``nrf93m1dk/nrf54l15/cpuapp`` board target can be
69+
built, flashed, and debugged in the usual way. See
70+
:ref:`build_an_application` and :ref:`application_run` for more details on
71+
building and running.
72+
73+
Flashing
74+
========
75+
76+
As an example, this section shows how to build and flash the :zephyr:code-sample:`hello_world`
77+
application.
78+
79+
Follow the instructions in the :ref:`nordic_segger` page to install
80+
and configure all the necessary software. Further information can be
81+
found in :ref:`nordic_segger_flashing`.
82+
83+
To build and program the sample to the nRF93M1 DK, complete the following steps:
84+
85+
First, connect the nRF93M1 DK to your computer using the USB1 port on the DK.
86+
Next, build the sample by running the following command:
87+
88+
.. zephyr-app-commands::
89+
:zephyr-app: samples/hello_world
90+
:board: nrf93m1dk/nrf54l15/cpuapp
91+
:goals: build flash
92+
93+
Debugging
94+
=========
95+
96+
Refer to the :ref:`nordic_segger` page to learn about debugging Nordic boards with a
97+
Segger IC.
98+
99+
References
100+
**********
101+
102+
.. target-notes::
103+
104+
.. _IDAU:
105+
https://developer.arm.com/docs/100690/latest/attribution-units-sau-and-idau
106+
.. _nRF93M1 website: https://www.nordicsemi.com/Products/nRF93M1
107+
.. _Trusted Firmware M: https://www.trustedfirmware.org/projects/tf-m/
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
* Copyright (c) 2026 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
&pinctrl {
8+
/omit-if-no-ref/ uart20_default: uart20_default {
9+
group1 {
10+
psels = <NRF_PSEL(UART_TX, 1, 4)>,
11+
<NRF_PSEL(UART_RTS, 1, 6)>;
12+
};
13+
14+
group2 {
15+
psels = <NRF_PSEL(UART_RX, 1, 5)>,
16+
<NRF_PSEL(UART_CTS, 1, 7)>;
17+
bias-pull-up;
18+
};
19+
};
20+
21+
/omit-if-no-ref/ uart20_sleep: uart20_sleep {
22+
group1 {
23+
psels = <NRF_PSEL(UART_TX, 1, 4)>,
24+
<NRF_PSEL(UART_RX, 1, 5)>,
25+
<NRF_PSEL(UART_RTS, 1, 6)>,
26+
<NRF_PSEL(UART_CTS, 1, 7)>;
27+
low-power-enable;
28+
};
29+
};
30+
31+
/omit-if-no-ref/ uart30_default: uart30_default {
32+
group1 {
33+
psels = <NRF_PSEL(UART_TX, 0, 0)>,
34+
<NRF_PSEL(UART_RTS, 0, 2)>;
35+
};
36+
37+
group2 {
38+
psels = <NRF_PSEL(UART_RX, 0, 1)>,
39+
<NRF_PSEL(UART_CTS, 0, 3)>;
40+
bias-pull-up;
41+
};
42+
};
43+
44+
/omit-if-no-ref/ uart30_sleep: uart30_sleep {
45+
group1 {
46+
psels = <NRF_PSEL(UART_TX, 0, 0)>,
47+
<NRF_PSEL(UART_RX, 0, 1)>,
48+
<NRF_PSEL(UART_RTS, 0, 2)>,
49+
<NRF_PSEL(UART_CTS, 0, 3)>;
50+
low-power-enable;
51+
};
52+
};
53+
54+
/omit-if-no-ref/ spi00_default: spi00_default {
55+
group1 {
56+
psels = <NRF_PSEL(SPIM_SCK, 2, 1)>,
57+
<NRF_PSEL(SPIM_MOSI, 2, 2)>,
58+
<NRF_PSEL(SPIM_MISO, 2, 4)>;
59+
};
60+
};
61+
62+
/omit-if-no-ref/ spi00_sleep: spi00_sleep {
63+
group1 {
64+
psels = <NRF_PSEL(SPIM_SCK, 2, 1)>,
65+
<NRF_PSEL(SPIM_MOSI, 2, 2)>,
66+
<NRF_PSEL(SPIM_MISO, 2, 4)>;
67+
low-power-enable;
68+
};
69+
};
70+
71+
/omit-if-no-ref/ grtc_default: grtc_default {
72+
group1 {
73+
psels = <NRF_PSEL(GRTC_CLKOUT_FAST, 1, 8)>,
74+
<NRF_PSEL(GRTC_CLKOUT_32K, 0, 4)>;
75+
};
76+
};
77+
78+
/omit-if-no-ref/ grtc_sleep: grtc_sleep {
79+
group1 {
80+
psels = <NRF_PSEL(GRTC_CLKOUT_FAST, 1, 8)>,
81+
<NRF_PSEL(GRTC_CLKOUT_32K, 0, 4)>;
82+
low-power-enable;
83+
};
84+
};
85+
86+
/omit-if-no-ref/ i2c21_default: i2c21_default {
87+
group1 {
88+
psels = <NRF_PSEL(TWIM_SDA, 1, 14)>,
89+
<NRF_PSEL(TWIM_SCL, 1, 11)>;
90+
bias-pull-up;
91+
};
92+
};
93+
94+
/omit-if-no-ref/ i2c21_sleep: i2c21_sleep {
95+
group1 {
96+
psels = <NRF_PSEL(TWIM_SDA, 1, 14)>,
97+
<NRF_PSEL(TWIM_SCL, 1, 11)>;
98+
low-power-enable;
99+
};
100+
};
101+
};

0 commit comments

Comments
 (0)