Nordic DTM测试

BLE设备在做RF调试如调整频偏、二三次谐波、阻抗匹配、天线有源测试以及过诸如CE、FCC、SRRC、BQB等认证的时候,需要用到BLE的DTM(Direct test mode,即直接测试模式),DTM的指令是由SIG定义的标准HCI指令,是按照蓝牙规范中Direct test mode所要求数据格式来编写(数据格式定义参看:Bluetooth Core Specification v5.0->Vol 6->Part F第4小节),BLE设备烧录DTM程序后可以由电脑的DTM上位机控制BLE设备进入相对应的发射或是接受模式,也可以由蓝牙综合测试仪如CMW500通过串口控制,做环回测试。

 

电脑上位机控制BLE DTM测试示意图

 

综测仪控制BLE DTM做环回测试示意图
注:因为BLE协议不支持信令测试,所以综测仪和BLE设备的测试使用了伪信令的方法,即环回测试,综测仪使用USB口发送标准BLE的HCI指令给BLE设备的串口,BLE设备进入相应的模式和信道,综测仪的RF Input口接BLE的RF输出,根据综测仪发送的HCI指令来判断BLE设备是否符合相应的规范,此方法在BQB认证和BLE接收测试中较为常用。
 
一、使用电脑上位机控制DTM
1、软件安装

DTM控制需要使用nRF Connect for Desktop中的Direct Test Mode插件。

注意:老的nRFgo Studio已经停止更新,DTM控制,程序下载等功能已经全部迁移到nRF Connect for Desktop中,因此建议使用nRF Connect for Desktop。

下载地址:https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-desktop/Download?lang=en#infotabs

下载安装完成后,打开nRF Connect for Desktop,安装Direct Test Mode插件。

 

2、DTM控制

下载安装Direct Test Mode插件后,打开Direct Test Mode插件

(1)、将USB转串口和烧录好DTM的BLE设备连接并插在电脑上,可以看到列表中有USB转串口工具。

(2)、选择USB转串口工具即可

 

 注:如果出现列表中没有USB转串口,则需要检查USB转串口的驱动是否有成功安装,查看方法:我的电脑 --> 设备 --> 端口

 

选择设备后,插件会进入如下界面

(1)、发射模式

(2)、接收模式

(3)、选择DTM模式,Single是控制BLE设备在单频点,Sweep可以控制BLE设备跳频,一般认证测试只会用到Single模式。

(4)、选择BLE信道,信道表详见右边 BLE Channel

(5)、设置发射功率

(6)、选择BLE的PHY

(7)、选择BLE包的类型,其中PRBS9、11110000、10101010都是调制波,Constant Carrier是单载波。

(8)、设置好上述选项后,点击Start开始定频,定频成功开启的如下图

 注:Nordic的nRF51\52\53系列,都可以使用此插件来控制DTM定频

 

二、综测仪设置(以CMW500为例)

这里需要注意的是EUT Control中的设置

 

(1)、EUT Comm Protocol中需要选择 2-Wire 而不是 HCI,Nordic的DTM只支持 2-Wire,不支持HCI。

(2)、Virtual Comm Port是选择USB转串口的COM口,这里需要注意的是CMW500的操作系统是Windows,但因为市面上不同年代不同型号的CMW500的操作系统存在差异,所以需要选择能够和自己的CMW500兼容的USB转串口设备,设备的驱动可以正常安装在CMW500上,避免CMW500无法识别到USB转串口设备。

(3)、Baud Rate这里是选择串口波特率,Nordic默认的DTM串口波特率是19200,但是此波特率可以在DTM程序中更改,后面会详细介绍。

CMW500其他的设置和nRF Connect for Desktop中的Direct Test Mode插件的设置大通小异,参考Direct Test Mode插件即可。

 

三、DTM固件修改

Nordic现在有两套SDK,nRF5 SDK和nRF Connect SDK(简称NCS),一般来说,nRF51\52建议使用nRF5 SDK中的DTM,nRF53及后续的型号使用NCS中的DTM。

1、nRF5 SDK

nRF5 SDK的DTM程序在nRF5_SDK\examples\dtm\direct_test_mode路径下,此路径下有一个hex文件夹,里面有编译好的DTM固件,但串口是固定的,串口定义如下:

注:PCA10028  对应的是 nRF51822

  PCA10040  对应的是 nRF52832

  PCA10040e 对应的是 nRF52810

       PCA10056  对应的是 nRF52840

       PCA10056e 对应的是 nRF52811

       PCA10100  对应的是 nRF52833

       PCA10100e 对应的是 nRF52820

       PCA10112  对应的是 nRF52840+nRF21540DK

nRF51系列只支持到nRF5 SDK 12.3.0,所以使用nRF51系列的设备需下载对应版本的SDK。

想要修改串口的引脚定义就需要进入DTM程序的 uart_init() 函数,此函数定义了串口的引脚和波特率,所以想要修改串口引脚和波特率,只要修改此处的宏定义即可。

 

2、NCS

NCS中的DTM程序在NCS SDK\nrf\samples\bluetooth\direct_test_mode 路径下,因为NCS使用了Zephyr,所以修改串口引脚和波特率需要通过定义设备树 .overlay文件的形式来定义

因为在nRF5340上,DTM是跑在网络核中的,因此需要在网络核的.overlay文件中对串口引脚的定义

在SDK\nrf\samples\bluetooth\direct_test_mode\boards路径下新建一个名为nrf5340dk_nrf5340_cpunet.overlay的文件(如果已存在此文件,可以直接使用文本打开编辑)

然后加入以下内容,其中注释部分的波特率和TX RX引脚可以替换成自己想要的引脚,然后编译即可。

&uart0 {
	status = "okay";
	current-speed = <19200>; //串口波特率
};

&pinctrl {
	uart0_default: uart0_default {
		group1 {
			psels = <NRF_PSEL(UART_TX, 1, 1)>, //定义TX引脚
				<NRF_PSEL(UART_RTS, 0, 11)>;
		};
		group2 {
			psels = <NRF_PSEL(UART_RX, 1, 0)>, //定义RX引脚
				<NRF_PSEL(UART_CTS, 0, 10)>;
			bias-pull-up;
		};
	};

	uart0_sleep: uart0_sleep {
		group1 {
			psels = <NRF_PSEL(UART_TX, 1, 1)>, //定义TX引脚
				<NRF_PSEL(UART_RX, 1, 0)>,  //定义RX引脚
				<NRF_PSEL(UART_RTS, 0, 11)>,
				<NRF_PSEL(UART_CTS, 0, 10)>;
			low-power-enable;
		};
	};
};

  

 

posted @ 2023-07-19 16:53  HannibalWang  阅读(2587)  评论(0编辑  收藏  举报