基于Labwindows的蓝牙手机测试系统设计

[日期:2008-11-18 14:57:00] 作者:未知来源:

        本文介绍了基于Labwindows/CVI的蓝牙手机自动测试系统的设计该系统具有测试手机中蓝牙射频性能的功能

       引言

       目前越来越多的手机置入了蓝牙芯片在生产过程中必须对手机进行严格的测试由于蓝牙制式与GSM完全不同原有的测试系统无法满足测试的需求这就需要在原有的测试系统中加入蓝牙测试程序

       一般测试都采用两个程序分别控制蓝牙芯片和蓝牙综测仪的方法来实现自动测试这实际上只是一种半自动方式有的蓝牙综测仪如安立公司的MT8852提供了生产用的测试系统软件但是由于无法得到程序的源代码对于生产线的维护是非常不方便的为了提高测试效率并且兼顾手机在GSM制式下的RF及蓝牙性能需要一套同时涵盖GSM及蓝牙的自动测试系统本文主要介绍针对蓝牙性能的自动测试系统的设计

       自动测试系统设计思路

        要实现测试系统的自动化必须在一个测试系统中对蓝牙手机端和测试仪器端分别实现自动控制

       如图1所示蓝牙协议栈以主控制器接口为界分为两部分:主控制器接口以下为无线信道、基带物理层和链路管理层协议;主控制器接口以上为逻辑链路控制和适应层协议、服务发现协议(SDP)、串口仿真协议(RFCOMM)、无线应用协议(WAP)及TCP/IP协议等根据BT_Core_V1_2规定可以通过主控制器接口直接发送HCI命令来控制蓝牙芯片的工作模式、状态建立连接等符合蓝牙规范的动作因此对蓝牙手机端的控制就通过主控制器接口直接发送HCI命令来实现有的蓝牙芯片生产厂商在RFCOMM层上进行封装支持AT指令可以通过PC机上的操作系统自带的超级终端对蓝牙模块进行控制这种封装可以给研发过程中的调试工作带来一定的便利但是对于从事测试系统开发的测试工程师来说这种方式则难以解决用一套系统对不同蓝牙芯片进行测试时的兼容问题为此本套测试系统中对蓝牙模块的控制是基于蓝牙兴趣小组所颁发的蓝牙规范中规定的标准HCI命令实现的

        对于测试仪器的控制目前最为广泛的方式是通过GPIB总线(General Purpose Interface Bus通用接口总线)程控仪器其控制顺序、一般数据格式、状态报告和通用命令集等遵守IEEE488.2规范GPIB总线通过24根线与仪器设备进行通信包括8根数据线、3根信号交换线、5根通用控制线和8根地线连接在总线上的设备统称为器件向总线发送数据的设备称为讲者从总线接收数据的设备称为听者控制总线的设备称为控者在一次数据传输的过程中只能有一个讲者但可以指定多个听者在本测试系统中只有一个讲者即PC;一个听者即蓝牙测试仪

       系统的硬件环境

       测试系统的硬件环境由一台PC、一台蓝牙综测仪、GPIB卡、GPIB电缆、串口线、射频电缆或耦合天线及待测手机组成其中PC和蓝牙综测仪之间用GPIB线相连PC和待测手机之间用遵从RS-232规范的串口线相连蓝牙测试仪和待测手机之间通过射频电缆或耦合天线连接

图1  蓝牙协议栈

       表1  HCI包格式

First Byte                      Last Byte
Packet Type Indicator(1byte)    HCI Packet(Variable length)

        表2  HCI 包类型

HCI Packet Type                 Packet Type Indicator
HCI Command Packet              0x01
HCI ACL Data Packet             0x02
HCI SCO Data Packet             0x03
HCI Event Packet                0x04

       表3  HCI命令包结构

First                                 Last
OCF    OGF   Length   Para0  Para1    ------

       表4  进入测试模式的HCI命令

命令                             操作码    参数
HCI_Write_PageScan_Activity      0x001c    0x08000x0012
HCI_Write_InquireScan_Activity   0x001e    0x08000x0012
HCI_Write_Scan_Enable            0x0c1a    0x03
HCI_Write_Device_Under_Test_Mode 0x1803    无

       系统的软件实现

      测试软件在Labwindows/CVI软件开发平台下完成Labwindows/CVI是由NI公司开发的半图形化的编程工具该工具以标准C语言为基础具有强大的库函数提供了灵活的开发手段和良好的用户界面该测试系统的软件从功能角度可以划分为四部分:对综测仪的初始化、对蓝牙手机的初始化、建立连接和测试指标子程序

       第一部分:对综测仪的初始化步骤如下:

       步骤1. 查找听者函数原形为:
ibln(int Board/Deviceint Primary Addressint Second Addressshort Found Listener );
查找听者的主要目的是为了确认听者的Primary Address由于一个总线上最多有30个听者可以通过有限循环查找如果确认只有一个听者当找到一个听者时即可停止查找

       步骤2. 打开设备函数原形为:

       ibdev(int Board_Indexint Primary_Addressint Secondary_Addressint Timeout_Valueint END_Messageint EOS_Character);
函数返回值相当于一个操作句柄当成功打开设备后对仪器的读写操作均通过操作句柄完成

       对于有些仪器通过以上两个步骤就可以得到一个有效的操作句柄但有的仪器如R&S公司的CMU200不但有Primary Address还有Secondary Address这就需要在得到总的操作句柄后通过ibwrt函数对各子项(这里指的是bluetooth signalling和bluetooth non-signalling)设置次地址当次地址设置完成后可以通过ibdev函数得到具体的针对子项的操作句柄

       第二部分:对手机的初始化对手机的初始化是通过串行通信端口(RS-232)实现的步骤如下:

       步骤1. 打开串口函数原形如下:
int OpenComConfig(int COM_Portchar Device_Name[]long Baud_Rateint Parityint Data_Bitsint Input_Queue_Sizeint Output_Queue_Size);
函数中的参数根据蓝牙模块所支持的方式进行设置

       步骤2. 发送HCI命令使手机进入测试模式通过函数ComWrtByte(int Com Portchar Byte)发送发送时按照HCI命令标准包格式选择相应的参数从高字节向低字节以16进制的形式逐字节发送HCI包格式如表1所示其中Packet Type Indicator按照表2确定而详细的HCI命令包组成见表3其中OCFOGF为操作码Length指的是参数长度如果参数为一个则Length值为1参数为HCI命令自身所带的参数因命令而异以HCI_Write_Scan_Enable命令为例因为是命令包故Packet Type Indicator应为0x01;又操作码为0x0c1a打开扫描时参数为0x03故参数长度为1所以该命令的发送序列应为(16进制):01 1a 0c 01 03

        使手机进入测试模式首先激活寻呼扫描和查询扫描然后才能发送进入测试模式的指令主要通过发送表4中的HCI命令实现

       第三部分:建立连接在讨论蓝牙建立连接的过程之前首先要了解蓝牙设备的组网过程蓝牙根据网络的概念提出点对点和点对多点的无线连接在任意一个有效通信范围内所有设备的地位都是平等的首先提出通信要求的设备成为主设备(Master)被动进行通信的设备成为从设备(Slave)利用TDMA一个Master可以最多和7个Slave进行通信在本测试系统中考虑到生产线上一般采用屏蔽箱防止干扰所以认为系统中只有1个Master和1个Slave同时由于测试的需要并考虑到实际情况(现在很多蓝牙综测仪在测试过程中并不能作为Slave)一般将蓝牙综测仪作为Master待测手机作为Slave

       本测试系统软件中通过ibwrt函数控制蓝牙综测仪发出查询指令查找当前有效范围内的待测手机当查找完成后ibwrt函数继续控制蓝牙综测仪发出连接请求当已经进入测试模式的待测手机收到连接请求后将会返回接受或拒绝连接请求的信息该信息通过发送HCI_Accept_Connection_Request指令完成当蓝牙综测仪收到该信息后即确认可以建立连接这样双方的连接就建立成功了

      第四部分:测试指标子程序

       建立连接成功后下一步就是测试手机的性能指标这里测试的主要是蓝牙的发射机和接收机的性能指标由于在蓝牙规范中对于每个测试指标都有相应的测试条件及测试标准的详细规定而每项测试指标的测试条件相差很大特别是对蓝牙综测仪的设置方面因此在本测试软件中将每个测试指标封装成子函数程序通过调用每个测试项的子函数来实现对指标的测试这样也有利于程序的优化使程序看起来一目了然同时也利于在测试过程中根据需要选择测试项这里以测试蓝牙发射机的输出功率为例来说明测试子项的软件实现

       蓝牙规范中对蓝牙发射机的输出功率的测试条件和测试结果要求如下:
Hopping: on;Test Type: Loopback;Payload Pattern: PRBS9
Packet Type: DH5;测试频点:3个(本软件选择2402MHz2441 MHz2480 MHz)

      测试标准:

      平均功率:在-6dBm至4dBm之间;最大功率: 不大于23dBm
首先通过ibwrt函数设置蓝牙测试仪的各项配置使之符合以上的测试条件然后在3个测试频点上进行循环测试用ibrd函数从蓝牙测试仪上读取相应的测试结果根据规范要求的测试标准进行判断得出最后的结果

      结语

      通过对蓝牙规范的研究已编写了一套以GPIB协议控制蓝牙测试仪通过串口控制蓝牙芯片的自动测试程序界面灵活易于维护该测试系统软件也可作为子程序被嵌入GSM手机测试系统中可以在生产测试中减少测试站的设置降低成本

图2

图3