Skip to content

Commit f688b62

Browse files
committed
[nrf fromlist] 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> Upstream PR #: 106289
1 parent 544950b commit f688b62

32 files changed

Lines changed: 1480 additions & 0 deletions
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Copyright (c) 2026 Nordic Semiconductor ASA.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if(CONFIG_BOARD_NRF93M1DK_NRF54L15_CPUAPP
5+
OR (CONFIG_BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS AND CONFIG_BUILD_WITH_TFM))
6+
zephyr_library()
7+
zephyr_library_sources(board.c)
8+
endif()
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
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 BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
8+
9+
config BOARD_NRF93M1DK
10+
select USE_DT_CODE_PARTITION if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
11+
12+
config HAS_BT_CTLR
13+
default BT
14+
15+
# By default, if we build for a Non-Secure version of the board,
16+
# enable building with TF-M as the Secure Execution Environment.
17+
config BUILD_WITH_TFM
18+
default y
19+
20+
# If building with TF-M, disable UART in TF-M to avoid conflicts with
21+
# the UART used by the modem
22+
if BUILD_WITH_TFM
23+
24+
config TFM_SECURE_UART
25+
default n
26+
27+
config TFM_LOG_LEVEL_SILENCE
28+
default n
29+
30+
endif # BUILD_WITH_TFM
31+
32+
endif # BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
33+
34+
if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS || BOARD_NRF93M1DK_NRF54L15_CPUAPP
35+
36+
# Configure default init priority:
37+
# 1. I2C
38+
# 2. NPM13xx MFD (CONFIG_MFD_INIT_PRIORITY)
39+
# 3. NPM13xx charger (CONFIG_SENSOR_INIT_PRIORITY)
40+
# 4. board.c set the current limits
41+
# 5. Power domain GPIO (CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY)
42+
# 6. Cellular modem (CONFIG_MODEM_CELLULAR_INIT_PRIORITY)
43+
#
44+
45+
config I2C_INIT_PRIORITY
46+
default 50
47+
48+
config MFD_INIT_PRIORITY
49+
default 80
50+
51+
config SENSOR_INIT_PRIORITY
52+
default 90
53+
54+
config POWER_DOMAIN_GPIO_INIT_PRIORITY
55+
default 92
56+
57+
config MODEM_CELLULAR_INIT_PRIORITY
58+
default 93
59+
60+
config BOARD_LATE_INIT_HOOK
61+
default y
62+
63+
endif # BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS || BOARD_NRF93M1DK_NRF54L15_CPUAPP
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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
8+
9+
config BOARD_NRF93M1DK_INIT_PRIORITY
10+
int "Initialization priority"
11+
default 91
12+
help
13+
Initialization priority of nrf93m1dk board.

boards/nordic/nrf93m1dk/board.c

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* Copyright (c) 2026 Nordic Semiconductor ASA
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
#include <zephyr/kernel.h>
8+
#include <zephyr/device.h>
9+
#include <zephyr/drivers/mfd/npm13xx.h>
10+
#include <zephyr/drivers/sensor.h>
11+
#include <zephyr/drivers/gpio.h>
12+
13+
#include <zephyr/logging/log.h>
14+
LOG_MODULE_REGISTER(board, CONFIG_LOG_DEFAULT_LEVEL);
15+
16+
void board_late_init_hook(void)
17+
{
18+
#if DT_HAS_COMPAT_STATUS_OKAY(nordic_npm1300_charger)
19+
20+
static const struct device *charger = DEVICE_DT_GET(DT_NODELABEL(npm1300_charger));
21+
int ret;
22+
23+
/* Set USB current limit */
24+
struct sensor_value limit = {
25+
.val1 = 1,
26+
.val2 = 500000,
27+
};
28+
29+
if (!device_is_ready(charger)) {
30+
LOG_ERR("Device not ready");
31+
return;
32+
}
33+
34+
ret = sensor_attr_set(charger, SENSOR_CHAN_CURRENT, SENSOR_ATTR_CONFIGURATION, &limit);
35+
36+
if (ret < 0) {
37+
LOG_ERR("Failed to set current limit: %d", ret);
38+
return;
39+
}
40+
#endif /* DT_HAS_COMPAT_STATUS_OKAY(nordic_npm1300_charger) */
41+
}
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/nrf91m1_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/

0 commit comments

Comments
 (0)