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通过串口控制,做环回测试。
DTM控制需要使用nRF Connect for Desktop中的Direct Test Mode插件。
注意:老的nRFgo Studio已经停止更新,DTM控制,程序下载等功能已经全部迁移到nRF Connect for Desktop中,因此建议使用nRF Connect for Desktop。
下载安装完成后,打开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; }; }; };