2025 Nordic Tech Tour,中国 →
  1. Home
  2. 博客

    NR+ PHY 入门指南

NR+ PHY 入门指南

Nordic Semiconductor

本文将详细介绍如何在nRF Connect SDK中配置现有的DECT NR+示例项目,并解析用于调试调制解调器的DECT PHY API接口。

DECT NR+标准正稳步成熟,随着nRF Connect SDK v2.7.0的发布,我们距离看到NR+商用产品面世又近了一步。若想快速了解NR+技术,请参阅我们之前的博客文章:《DECT NR+:非蜂窝5G技术深度解析》

最新发布的nRF Connect SDK v2.7.0为DECT NR+技术开发带来重大改进。该SDK现包含NR+ 物理层(PHY) API,可与NR+物理层调制解调器固件交互,并提供DECT Hello示例应用程序,支持用户开箱即用测试解决方案。

本文将详细介绍如何在nRF Connect SDK中配置现有的DECT NR+示例项目,并解析用于调试调制解调器的DECT PHY API接口。

Nordic的NR+产品组合

Nordic提供三款支持该标准的集成电路封装(SiP):nRF9161 SiP、nRF9131迷你SiP和nRF9151 SiP。

我们提供基于nRF91调制解调器内核运行的DECT NR+物理层实现方案。因部分地区存在监管限制,调制解调器固件目前通过Nordic销售渠道分发,可通过此表单申请获取。

nRF Connect SDK v2.7.0版本已包含DECT NR+ PHY API,该接口可对接NR+物理层调制解调器固件。

关于其余NR+协议栈组件,Nordic正与解决方案合作伙伴协作,共同提供基于Nordic硬件支持的商用NR+协议栈。

Wirepas

Wirepas 拥有其 Wirepas 5G 网状网络解决方案,当前处于 1.0.0 版本发布状态。该方案配备专属的 Wirepas SDK(即非基于 Zephyr 的开发工具包),这是 Wirepas 提供的独立授权软件。如需更多信息,请联系 Wirepas

Lynqn

另一方面,Lynq 专注于通过 RavenTalk 和 RavenConnect 产品实现低延迟音频和长距离数据应用。这些软件堆栈也需单独向 Lynq 获取许可。如需更多信息,请联系 Lynq

先决条件

DECT NR+ PHY 握手示例

在配置设备前,让我们先了解nRF Connect SDK新增的NR+示例:DECT NR+ PHY握手示例

该示例以循环方式运行,先发送递增计数器值,随后监听5秒(由CONFIG_RX_PERIOD_S设定)的接收数据。完成30次传输(由CONFIG_TX_TRANSMISSIONS设定)后,循环终止。

示例文件路径:<安装路径>/nrf/samples/dect/dect_phy/hello_dect。

该示例包含两个区域配置覆盖文件:overlay-eu.conf(适用于欧洲)和overlay-us.conf(适用于美国),请根据所在地区选用对应文件。

  1. overlay-eu.conf 适用于欧洲,将 CONFIG_CARRIER 设置为 1677,对应频段编号 1(详见下文表 1)。频段编号 1(约 1880-1900 MHz)是欧洲的 DECT 频率分配。
  2. overlay-us.conf 适用于北美地区,将 CONFIG_CARRIER 设置为 1711,对应频段编号 9,该频段(1920-1930 MHz)为该区域 DECT 频率分配。此外,必须将CONFIG_TX_POWER值从13(对应19 dBm)调低至11(对应13 dBm),详见下表2。

若您所在地区不属于上述两类区域,则需查阅当地法规并创建调整后的覆盖配置。在任何情况下,您均有责任按照当地法规操作设备。样本运行须确保符合当地法规要求。

Table 1: ETSI TS 103 636-2 Table 5.4.2-1 - Absolute channel number range

表1:ETSI TS 103 636-2 表5.4.2-1 - 绝对信道编号范围

Table 2: ETSI TS 103 636-4 Table 6.2.1-3a - Transmit Power

表2:ETSI TS 103 636-4 表6.2.1-3a - 发射功率

最后,您可以通过 CONFIG_NETWORK_ID 配置网络标识符,并使用 CONFIG_MCS 配置调制编码方案。调制编码方案会影响当前时隙内可容纳的数据量,因此增加该值将要求应用程序对消息进行填充。

设备准备

刷写DECT NR+ PHY调制解调器固件

  1. 打开 nRF Connect for Desktop。

  2. 安装并启动 Programmer 应用程序。

  3. 使用 USB-C 线将 nRF91x1 DK 连接到计算机并打开电源。

  4. 在编程器应用程序中,选择左上角的 nRF91x1 开发板。

  5. 选择“添加文件”,然后点击“浏览…”

  6. 定位并选择 DECT NR+ PHY 调制解调器固件压缩包(mwf-nr+_nrf91x1_<版本号>.zip),点击“打开”。

    请联系Nordic销售部门申请此固件。

  7. 选择“写入”,在弹出窗口中再次选择“写入”,并等待调制解调器DFU完成。

    选择“写入”,在弹出窗口中再次选择“写入”,并等待调制解调器DFU完成

    选择“写入”,在弹出窗口中再次选择“写入”,并等待调制解调器DFU完成

  8. 当出现绿色成功消息时,请选择关闭。

    当出现绿色成功消息时,请选择关闭。

  9. 对另一块nRF91x1开发套件重复步骤3-7。

构建并烧录DECT NR+ PHY握手示例

在本博客中,我们将提供两种不同的方法来构建和烧录示例程序。

第一种方法是在Visual Studio Code中自行构建示例程序后再进行烧录。这需要您在计算机上安装nRF Connect SDK、Visual Studio Code以及nRF Connect for VS Code扩展程序。

第二种方法是使用Programmer应用程序刷写预编译的固件二进制文件。

方案1:使用Visual Studio Code

NR+ PHY示例程序有多种构建和烧录方式。以下步骤将通过Visual Studio Code中的nRF Connect for VS Code扩展同时完成示例程序的构建与烧录。

  1. 打开 Visual Studio Code,导航至 nRF Connect SDK 扩展。
  2. 选择创建新应用程序,然后选择复制示例并选取 DECT NR+ PHY hello 示例。
  3. 点击添加构建配置以添加构建配置。
    • 在“Board”选项中,选择以下任一board目标:nrf9161dk_nrf9161_ns 或 nrf9151dk_nrf9151_ns
    • 在Kconfig片段下,选择“Add fragment”,下拉菜单中应显示两个选项:overlay-eu.conf 和 overlay-us.conf。根据所在地区选择其中一个。
    • 请注意,如果两个 .conf 文件均未被选中,CONFIG_CARRIER 将被取消设置,应用程序将无法构建。
  4. 请确保已选中生成后构建配置。
  5. 选择构建配置,并等待构建完成。
  6. 然后在操作选项卡下,点击刷写按钮将镜像刷写至设备。

方案 2:使用 Programmer 应用程序

您也可以使用下方附带的预编译二进制文件,通过 Programmer 应用程序将固件直接刷写至设备:

2024年11月26日,更新至nRF Connect SDK v2.8.0版本。

  1. 下载您所在地区(-eu 或 -us 后缀)的 hello_dect 示例固件二进制文件。
  2. 在编程器应用程序中,选择“Add file”,然后点击“Browse…”
  3. 导航至 hello_dect 固件文件并选中,点击“Open”。
  4. 选择“Erase & write”,等待操作完成。

当右侧窗口中的图案停止时,操作即告完成。

当右侧窗口中的图案停止时,操作即告完成。

以下日志输出也显示写入操作成功:

13:16:25.241	Recovering Application core
13:16:25.242	Recovering Application core 0%
13:16:26.440	Recovering Application core 100%
13:16:26.440	Recovering Application core completed
13:16:26.441	Writing HEX to Application core
13:16:26.865	Writing HEX to Application core 33%
13:16:26.866	Writing HEX to Application core 33%
13:16:27.431	Writing HEX to Application core 100%
13:16:27.432	Writing HEX to Application core completed
13:16:27.432	Loading core information for Application core
13:16:27.433	Update files regions according to Application core
13:16:27.433	Parse memory regions for file
13:16:27.434	Loading core information for Application core 0%
13:16:27.463	Loading core information for Application core 100%
13:16:27.463	Loading core information for Application core completed
13:16:27.464	Update files regions according to Application core
13:16:27.464	Parse memory regions for file
13:16:31.436	Reading readback protection status for Application core
13:16:31.436	Reading readback protection status for Application core 0%
13:16:31.452	Reading readback protection status for Application core 100%
13:16:31.452	Application core protection status 'NRFDL_PROTECTION_STATUS_NONE'
13:16:31.452	Reading readback protection status for Application core completed

测试

为每个开发板打开终端以查看运行状态。

  1. 在 Visual Studio Code 中,转到 nRF Connect for VS Code 窗口。

  2. 在 CONNECTED DEVICES 下,展开 nRF91x1 开发套件。

    请注意存在两个 COM 端口,因为 nRF91x1 SiP 应用核心通过 TF-M 分割为安全域和非安全域。我们需要查看应用程序运行的非安全域中的终端输出。

  3. 点击COM端口右侧的图标,然后在窗口顶部选择设备。

    1512.VS Code - terminal 1

    3678.VS Code - terminal 2

屏幕底部应出现一个终端窗口,类似于下图所示。

若两台设备同时运行,日志输出应类似于下图所示,显示数据包的发送与接收情况。

0116.VS Code - terminal 3

提示:若需调试信息,请将main.c文件第13行修改为LOG_MODULE_REGISTER(app, LOG_LEVEL_DBG);

让应用程序运行一段时间,注意在第29次传输后它会自动关闭

让应用程序运行一段时间,注意在第29次传输后它会自动关闭

注意:在 prj.conf 文件中添加 CONFIG_TX_TRANSMISSION=0 将使应用程序配置为永久传输。

NR+ PHY API

让我们来分析hello_dect示例程序用于与NR+ PHY固件交互的NR+ PHY API。

当使用NR+ PHY API构建自有应用程序时,需注意以下结构体struct phy_ctrl_field_common必须由应用程序自行定义。应用程序使用PHY API的发送和接收函数(nrf_modem_dect_phy_tx()和nrf_modem_dect_phy_rx()),必须构造PHY头部及可能的有效载荷。调制解调器会检查头部结构,格式错误的头部将被拒绝。

/* Header type 1, due to endianness the order is different than in the specification. */
struct phy_ctrl_field_common {
	uint32_t packet_length : 4;
	uint32_t packet_length_type : 1;
	uint32_t header_format : 3;
	uint32_t short_network_id : 8;
	uint32_t transmitter_id_hi : 8;
	uint32_t transmitter_id_lo : 8;
	uint32_t df_mcs : 3;
	uint32_t reserved : 1;
	uint32_t transmit_power : 4;
	uint32_t pad : 24;
};

这是PHY header的结构,其定义详见NR+规范。有关各字段的详细信息,请参阅下表。

ETSI TS 103 636-4 Table 6.2.1-1 Physical Layer Control Field

ETSI TS 103 636-4 表 6.2.1-1 物理层控制字段

传输

首先,我们来填充PHY header,其类型为struct phy_ctrl_field_common。

struct phy_ctrl_field_common header = {
	.header_format = 0x0,
	.packet_length_type = 0x0,
	.packet_length = 0x01,
	.short_network_id = (CONFIG_NETWORK_ID & 0xff),
	.transmitter_id_hi = (device_id >> 8),
	.transmitter_id_lo = (device_id & 0xff),
	.transmit_power = CONFIG_TX_POWER,
	.reserved = 0,
	.df_mcs = CONFIG_MCS,
};

接着将定义TX操作参数,这些参数存储在struct nrf_modem_dect_phy_tx_params结构体中,其中会传递我们之前定义的header。

struct nrf_modem_dect_phy_tx_params tx_op_params = {
	.start_time = 0,
	.handle = handle,
	.network_id = CONFIG_NETWORK_ID,
	.phy_type = 0,
	.lbt_rssi_threshold_max = 0,
	.carrier = CONFIG_CARRIER,
	.lbt_period = NRF_MODEM_DECT_LBT_PERIOD_MAX,
	.phy_header = (union nrf_modem_dect_phy_hdr *)&header,
	.data = data,
	.data_size = data_len,
};

最后,为发送数据包,需将存储于 tx_op_params 中的传输参数传递给函数 nrf_modem_dect_phy_tx(),该函数的签名如下:

Finally, to send the packet, pass the transmission parameters stored in tx_op_params to the function nrf_modem_dect_phy_tx(), which has the following signature:

需要特别注意的是,在DECT频段进行传输时,必须由MAC层负责控制该过程。MAC层负责管理射频资源,并根据接收信号强度指示(RSSI)测量结果确定工作信道和子时隙。仅允许使用测量结果显示为空闲的频-时窗口进行传输。

仅凭物理层API无法实现传输功能。

结语

对于希望探索DECT NR+技术的开发者,Nordic Semiconductor的nRF Connect SDK v2.7.0中提供的NR+物理层API及DECT Hello示例程序是极具价值的资源。依托Wirepas、Lynq等解决方案合作伙伴的支持,以及我们持续优化的产品组合,我们致力于协助客户应对现代无线通信标准的复杂挑战。

若对Nordic NR+产品、DECT物理层或示例代码存在疑问,请通过DevZone提交工单。如需获取DECT NR+物理层固件,请联系销售部门

参考

 

 

 

订阅Nordic新闻简报

了解最新信息!订阅后即可获取最新Nordic及物联网资讯

立即订阅