文章转载自:http://www.sunyouqun.com/2017/04/page/3/

BLE协议充分考虑了设备的测试问题,在协议栈层面提供了直接测试模式,用于执行BLE设备的RF物理层一致性的测试。

直接测试模式(Direct Test Mode)常简称为DTM。

DTM测试的核心工作是令设备在指定的频率上发送一段数据序列,在另一端使用测试设备接收数据序列并给出测试报告,或者反过来测试设备发送一段数据序列,BLE设备接收并给出测试报告。

测试报告中会给出通信频率的偏移量,频率的功率,通信丢包率PER(Packet Error Rate)等信息,并根据这些信息判断BLE设备的物理层是否满足设计要求。

1. 工作模式介绍

DTM测试的基本工作模式如下:

左侧DUT(Device Under Test)表示待测设备,右侧Upper Tester表示上位机测试设备,通常使用PC代替,右侧Lower Tester表示下位机测试设备,通常是一台专业的蓝牙RF测试设备。

上位机与DUT之间使用串口线连接,上位机发送测试命令,DUT执行指定的操作,并返回执行结果。串口至少应支持以下几种波特率:1200、2400、9600、14400、19200、38400、57600、115200。

下位机接收DUT发送的信号,或向DUT发送信号,并给出报告。

值得注意的是,图中DUT与下位机之间的连线既有实线又有虚线。实线指二者之间可以用一根同轴电缆传输RF信号,虚线指可以使用RF信号进行无线传输。使用同轴电缆,需要考虑接口处的阻抗匹配和功率损耗,使用无线传输则要考虑外部射频干扰,需要在一个屏蔽箱或屏蔽室内进行测试才能保证准确。

如果RF测试设备具有串口收发能力和数据处理能力,那么该设备可以脱离PC独立完成全部测试任务。

2. 测试内容

PC向DUT发送测试命令,具体如下:

测试命令 含义
LE_TEST_SETUP 设置测试
LE_TRANSMITTER_TEST BLE设备发射机测试
LE_RECEIVER_TEST BLE设备接收机测试
LE_TEST_END 停止测试

DUT收到命令会向PC返回事件消息,具体如下:

事件消息 含义
LE_STATUS 收到命令后,DUT返回命令执行状态
LE_PACKET_REPORT 停止测试后,DUT返回测试报告

实际工作时,PC与DUT之间的工作流程如下所示:

<发送测试>

<接收测试>

3. 命令与事件

命令与事件都是2字节数据,在串口中传输时按照MSB优先传输。

3.1 命令

收发机测试命令的数据帧格式如下:

设置测试和停止测试的命令数据帧格式如下:

两种数据格式的首位2bite都是CMD:

  • CMD = 00b,表示该命令为Test Setup。
  • CMD = 01b,表示该命令为Receiver Test。
  • CMD = 10b,表示该命令为Transmitter Test。
  • CMD = 11b,表示该命令为Test End。

Test Setup命令

Control = 0x00, Param = 0x00,表示重置测试参数。

Control = 0x02, Param = 0x01-0x04,设置不同的物理层。

Test End命令

Control = 0x00, Param = 0x00,表示停止测试。

Transmit Test命令

Frequency = 0x00 ~ 0x27,分别代表0-39信道频率。

PKT = 00b ~ 11b,表示不同的0/1测试序列。

Length的低6位表示Payload的数据长度。

3.2 事件

事件只有两种,一种是LE_Test_Status_Event事件,另一种是LE_Packet_Report_Event事件。

LE_Test_Status_Event事件的数据帧格式如下:

其中EV = 0。Response包含了状态信息。ST(Status)表示结果是成功还是失败。

LE_Packet_Report_Event事件的数据帧格式如下:

其中EV = 1。Packet Count表示收到的数据帧总数,其有效范围是0 – 32767。

4. 测试数据

当进行收发机测试时,RF数据格式不是标准的BLE数据格式,它无法被BLE主机扫描,仅能被BLE射频测试设备识别。

4.1 数据格式

对于非编码型物理层设备,测试数据格式如下:

对于编码型物理层设备,数据格式略有不同,增加了编码相关的字段。

测试时,数据不执行白化操作,不执行CRC计算并将其设置为常数值,前导码和Sync Word也均设置为固定常数值。

4.2 数据PDU

数据PDU的格式如下:

其中Payload的格式如下:

第一部分Payload Type代表了测试数据的类型,可用的测试数据包括:

  • PRBS9
  • PRBS15
  • 有规则的0/1序列
  • 纯0或纯1序列

PRBS9表示9-bit的伪随机数,PRBS15表示15-bit伪随机数。

(完)

BLE 5协议栈-直接测试模式的更多相关文章

  1. 敏捷测试模式之Scrum及其实践

    一.    敏捷开发模式简介 敏捷是近年来软件研发领域很火的一个词,采用敏捷开发模式的研发团队是越来越多了,尤其是敏捷模式中的Scrum更是佼佼者大行其道,这表明敏捷模式确有其好处,能给企业带来效率的 ...

  2. Java经典实例:使用正则表达式:测试模式

    import java.util.regex.Pattern; /** * Created by Frank * 在Java中使用正则表达式:测试模式 */ public class RESimple ...

  3. Win8驱动测试模式

    打开驱动测试模式(保存成bat文件,双击执行) bcdedit /set testsigning on pause 执行完成后,看见提示操作成功的提示,之后我们重启一下,再次进入系统,在桌面的右下角会 ...

  4. win10想开测试模式,提示“设置元素数据时出错

    系统中按WIN键,搜索栏输入'CMD',右键点击找到的cmd.exe,选择'以管理员身份运行'.输入:"bcdedit -set loadoptions DDISABLE_INTEGRITY ...

  5. 初探 Yii2 的测试模式 index-test.php

    有没有发现高级版每个应用的 web 目录下有两个入口文件,一个index.php 一个 index-test.php通过init.bat可以切换到调试模式和产品模式,这两个模式相信同学们都很熟悉了,那 ...

  6. 如何打开或关闭windows的测试模式

    百度经验:jingyan.baidu.com windows的测试模式就如同字面意思一样,是一个测试用的模式.这个模式的标志主要在有非官方驱动或系统关键文件运行时显示.例如安装了大内存补丁(32位系统 ...

  7. windows测试模式

    测试模式通常意义就是让windows 操作系统在测试状态下运行,windows操作系统在这种模式下可以运行非官方或无数字签名的驱动程序 .   目录 1 定义 2 进入/退出windows测试模式方法 ...

  8. 测试模式 windows2008 内部版本7601

    win server 2008 r2 enterprise 64位系统. 最近手贱,对服务器进行了一下更新,结果傻叉了,这是什么鬼,明明显示已经激活的,但就是有这么一串碍眼的字幕. 电脑右下角居然出现 ...

  9. win 10 关闭或打开 测试模式

    一.关闭测试模式 方法: 以管理员身份运行 cmd 运行:bcdedit /set testsigning off 重启电脑 二.开启测试模式 以管理员身份运行 cmd 运行:bcdedit /set ...

随机推荐

  1. eclipse JavaEE spring,spring mvc,mybits-SSM老年人搭建记录

    老求了,好多东西记不住了,再不记以后怕是记不住了. eclipse JAVAEE for web Version: Mars.2 Release (4.5.2) tomcat 7.0.29 sprin ...

  2. 根据文本内容确定UILabel的高度

    NSString *str = @"严重依赖中国的美国公司包括苹果.百胜餐饮集团都感受到了近期人民币贬值带来的痛.这直接导致了苹果股价下跌了5.2%,拥有肯德基.必胜客的百胜也下跌了4.9% ...

  3. go爬虫系列

    一.go语言爬取豆瓣电影top250 package main import ( "net/http" "io/ioutil" "os" & ...

  4. Guava源码阅读-io-Files

    package com.google.common.io; 今天阅读一个非常常用的类Files,文件操作类. readLines(File file, Charset charset),这个方法将Fi ...

  5. 通过SublimeCodeIntel设置JavaScript自动补全

    1.首先安装SublimeCodeIntel包. 进入sublime,通过Ctrl+Shift+P进入包管理,输入pci(首字母),选择Package Contrl:Intall Package,如图 ...

  6. Linux系列(0):入门之Linux版本说明以及用户登录与切换

    你知道你登录时所在目录吗? 知道根目录下有哪些子目录吗? 知道如何切换用户吗? 知道如何添加用户吗? 如果你不知道,那就可以了解一下本章节啦! 前言:你知道Linux有多少发行版吗,如下图所示: 1. ...

  7. Stardew Valley(星露谷物语)Mod开发之路 1环境配置

    首先来说明一下,我写这个章节本身也是对学习过程的记录,主要参考了http://canimod.com/guides/creating-a-smapi-mod中的内容.也推荐大家看看. *这些是我的开发 ...

  8. 牛客 132C 简单瞎搞题 (bitset)

    大意: 给定序列$a$的第$i$个元素的取值范围$[L_i,R_i]$, 求$a$的平方和的种类数. 用bitset优化, 复杂度$O(\frac{n^5}{\omega})$ #include &l ...

  9. pat l2-14 列车调度 dilworth+nlog(n)最长上升子序列

    关于dilworth定理 这里引用一个大神的(http://blog.csdn.net/xuzengqiang/article/details/7266034) 偏序的概念: 设A是一个非空集,P是A ...

  10. 7-Perl 数组

    1.Perl 数组Perl 数组一个是存储标量值的列表变量,变量可以是不同类型.数组变量以 @ 开头.访问数组元素使用 $ + 变量名称 + [索引值] 格式来读取,实例如下:#!/usr/bin/p ...