BLE DTM by HCI

1、背景介绍:

依据蓝牙技术规范core_v5.2,Classic Bluetooth(BR/EDR)经典蓝牙测试模式为Test Mode,是信令测试模式,Bluetooth Low Energy(BLE)低功耗蓝牙测试模式为Direct Test Mode(DTM),为非信令测试模式。DTM测试有两种方式实现,一是通过HCI,二是通过2-wire uart接口,在core_v5.2 Vol6 Part F有DTM这两种测试方式的介绍,如下图。

无论是通过HCI来进行DTM测试还是两线的方式,本质上都是通过上位机发一些指令来控制待测BLE芯片进行相关设置,比如设置信道、跳频模式、发射功率、调制方式以及数据包类型等等。

使用HCI的方式进行DTM测试时,用于连接上位机和BLE DUT之间的接口可以为UART、SPI、I2C等,常用的是UART,上位机一般为PC,在PC端通过上位机软件或者串口终端发送HCI命令来控制BLE DUT,比如 NXP test tool 12软件。但该软件测试命令有限,并不能完全满足某些测试项,比如HCI_LE_Transmitter_Test只有[v1]没有[V2],比如HCI_VENDOR_CONFIG_TX_POWER命令参数是错误的,需要修改相关的xml文件,所以完全依赖test tool 12软件进行HCI DTM测试是不现实的,但是当客户自己根据BLE协议写HCI命令时,test tool 12是一个很好的参考。另外有时候客户为了测试的效率与成本会使用MCU作为上位机,通过MCU 发送HCI命令来控制BLE DTU,进而完成相关DTM测试。

在BLUETOOTH CORE SPECIFICATION Version 5.2规范里翻来覆去查找相关HCI命令是非常繁琐的事情,本文主要介绍用HCI的方式来实现BLE DTM测试时常用的一些HCI测试命令以及这些命令的用法,不至于每次涉及做DTM HCI测试时都需要去查阅BLE相关规范。

2、常用HCI命令:

首先看一下HCI命令包格式,在BLUETOOTH CORE SPECIFICATION Version 5.2 Vol 4 Part E 5.4里HCI包格式如下定义:

 

关于具体OGF和OCF是如何确定的可以参考BLE 5.2规范,在各命令介绍章节的前部分有说明,在此直接参考NXP Test Tool 12里面已经设置好的就可以了,以下会结合NXP test tool 12对HCI命令包进行分析。

2.1、HCI_Reset命令

关于HCI_Reset命令BLUETOOTH CORE SPECIFICATION Version 5.2规范描述如下:

 

 

NXP Test Tool 12里该命令实例如下图:

 

该命令raw data为:01 03 0C 00,既直接通过串口发送16进制数01 03 0C 00也可以对HCI的控制,实现HCI reset,具体参数含义如上图。

2.2、HCI_LE_Transmitter_Test命令

在BLUETOOTH CORE SPECIFICATION Version 5.2里HCI_LE_Transmitter_Test命令有4个版本,支持的BLE版本各不相同,注意各版本是向下兼容的,如下图:

该命令各版本的参数说明在规范里也有描述,注意OCF的差异,如下:

NXP KW38支持的BLE最高版本为5.0,我们可以使用HCI_LE_Transmitter_Test[V2],但是NXP Test Tool 12里面默认是使用V1版本的,我们有客户要求使用V2版本,所以我们重点关注V2版本各参数如何设置。V1和V2最大区别在于V2版本可以设置phy,关于各参数说明如下:

 

在NXP Test Tool 12里该命令V1版使用方式如下图:

该V1版本命令raw data为:01 1E 20 03 13 ff 00 ,各命令参数说明如上图,我们需要修改该命令以满足V2,首先修改OCF 0x1E为0x34,然后需要修改Length为0x04,因为V2比V1多了一个phy这个参数,最后添加phy的值在此为04(实际为0x00--0x04之间的某个值都可)。最后该命令raw data实例如下:

01 34 20 04 13 ff 00 04

2.3、HCI_LE_Receiver_Test命令

在BLUETOOTH CORE SPECIFICATION Version 5.2里HCI_LE_Receiver_Test命令有3个版本,如下图:

 

各版本参数以及OCF如下图:

 

关于V2版本,我们主要关心的参数如下:

 

 

返回参数如下:

 

NXP Test Tool 12默认使用的V1版本,raw data为01 1D 20 01 03如下图:

 

若要修改为V2版本,则需要修改OCF 0x1D为0x33,修改Length为0x03,然后再加上PHY和Modulation_Index参数值。

实例如:

01 33 20 03 03 00

2.4、HCI_LE_Test_End命令

在BLUETOOTH CORE SPECIFICATION Version 5.2里HCI_LE_Test_End命令简介如下图:

 

OCF及参数描述如下图:

NXP Test Tool 12软件里HCI_LE_Test_End命令实例如下图:

Raw data为:01 1F 20 00

2.5、HCI_VENDOR_CONFIG_TX_POWER命令

该命令是NXP提供的,在BLE 5.2规范里没有,该命令主要目的是设置BLE RF发射功率。

HCI_VENDOR_CONFIG_TX_POWER举例:01 2D FD 04 XX XX XX XX

参数说明

(1)Tx_power(Frist byte XX):发射功率值,单位为dbm,最大为0x14。         

(2)Channel(second byte XX):

              (0x0)广播通道

              (0x1)连接通道

 (3)NotUsed(last two byte XXXX):未使用

返回参数:

status:0x00, Config TX power Command succeeded

0x01-0xFF, Config TX power command failed. See “Error Codes”defined in Bluetooth Specification (Volume 2, Part D)

可以更具NXP Test Tool 12软件里相关用法来使用,值得注意的是该命令配置参数是错误的,需要修改BLE HCI 5.0 1.6.1.xml文件。

BLE HCI 5.0 1.6.1.xml文件修改为如下配置:

<Vendor_Commands>

<GroupDesc>Vendor_Commands</GroupDesc>

<Cmd>

<CmdName>HCI_VENDOR_CONFIG_TX_POWER</CmdName>

<CmdDesc>HCI_VENDOR_CONFIG_TX_POWER Desc. OgB: FD OcB: 2D </CmdDesc>

<CmdSync>01</CmdSync>

<CmdHeader>3F 012D</CmdHeader>

<CmdParms>

<Parm>

<ParmName>tx_power</ParmName>

<ParmDesc>tx_power Desc</ParmDesc>

<ParmSize>1</ParmSize>

<ParmType>tInt</ParmType>

<ParmLastValue>00</ParmLastValue>

<ParmDefaultValue>00</ParmDefaultValue>

</Parm>

<Parm>

<ParmName>Channel</ParmName>

<ParmDesc>type Desc</ParmDesc>

<ParmSize>1</ParmSize>

<ParmType>tInt</ParmType>

<ParmLastValue>00</ParmLastValue>

<ParmDefaultValue>00</ParmDefaultValue>

</Parm>

<Parm>

<ParmName>NotUsed</ParmName>

<ParmDesc>Not Used</ParmDesc>

<ParmSize>2</ParmSize>

<ParmType>tInt</ParmType>

<ParmLastValue>00</ParmLastValue>

<ParmDefaultValue>00</ParmDefaultValue>

</Parm>

</CmdParms>

</Cmd>

</Vendor_Commands>

修改后,在NXP Test Tool 12使用如下图:

 

Raw data为:01 2D FD 04 14 01 ff ff

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值