Skip to content

Commit 9860218

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 1d0310b commit 9860218

32 files changed

Lines changed: 1484 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 AND NOT CONFIG_MCUBOOT)
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: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
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+
config HAS_BT_CTLR
20+
default BT
21+
22+
# By default, if we build for a Non-Secure version of the board,
23+
# enable building with TF-M as the Secure Execution Environment.
24+
config BUILD_WITH_TFM
25+
default y
26+
27+
# If building with TF-M, disable UART in TF-M to avoid conflicts with
28+
# the UART used by the modem
29+
if BUILD_WITH_TFM
30+
31+
config TFM_SECURE_UART
32+
default n
33+
34+
config TFM_LOG_LEVEL_SILENCE
35+
default y
36+
37+
endif # BUILD_WITH_TFM
38+
39+
endif # BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS
40+
41+
if BOARD_NRF93M1DK_NRF54L15_CPUAPP_NS || BOARD_NRF93M1DK_NRF54L15_CPUAPP
42+
43+
# Configure default init priority:
44+
# 1. I2C
45+
# 2. NPM13xx MFD (CONFIG_MFD_INIT_PRIORITY)
46+
# 3. NPM13xx charger (CONFIG_SENSOR_INIT_PRIORITY)
47+
# 4. board.c set the current limits
48+
# 5. Power domain GPIO (CONFIG_POWER_DOMAIN_GPIO_INIT_PRIORITY)
49+
# 6. Cellular modem (CONFIG_MODEM_CELLULAR_INIT_PRIORITY)
50+
#
51+
52+
config I2C_INIT_PRIORITY
53+
default 50
54+
55+
config MFD_INIT_PRIORITY
56+
default 80
57+
58+
config SENSOR_INIT_PRIORITY
59+
default 90
60+
61+
config POWER_DOMAIN_GPIO_INIT_PRIORITY
62+
default 92
63+
64+
config MODEM_CELLULAR_INIT_PRIORITY
65+
default 93
66+
67+
config BOARD_LATE_INIT_HOOK
68+
default y if !MCUBOOT
69+
70+
if !MCUBOOT
71+
72+
config I2C
73+
default y
74+
75+
config REGULATOR
76+
default y
77+
78+
config REGULATOR_NPM13XX
79+
default y
80+
81+
config SENSOR
82+
default y
83+
84+
config NPM13XX_CHARGER
85+
default y
86+
87+
config POWER_DOMAIN
88+
default y
89+
90+
endif # !MCUBOOT
91+
92+
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

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)