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

时间:2007-04-29
摘 要:本文介绍了基于Labwindows/CVI的蓝牙手机自动测试系统的设计,该系统具有测试手机中蓝牙射频性能的功能。
关键词:蓝牙手机;Labwindows/CVI;HCI命令

引言
目前,越来越多的手机置入了蓝牙芯片。在生产过程中,必须对手机进行严格的测试,由于蓝牙制式与GSM完全不同,原有的测试系统无法满足测试的需求,这就需要在原有的测试系统中加入蓝牙测试程序。一般测试都采用两个程序分别控制蓝牙芯片和蓝牙综测仪的方法来实现自动测试,这实际上只是一种半自动方式。有的蓝牙综测仪,如安立公司的MT8852,提供了生产用的测试系统软件,但是由于无法得到程序的源代码,对于生产线的维护是非常不方便的。为了提高测试效率,并且兼顾手机在GSM制式下的RF及蓝牙性能,需要一套同时涵盖GSM及蓝牙的自动测试系统,本文主要介绍针对蓝牙性能的自动测试系统的设计。

自动测试系统设计思路
要实现测试系统的自动化,必须在一个测试系统中对蓝牙手机端和测试仪器端分别实现自动控制。
如所示,蓝牙协议栈以主控制器接口为界,分为两部分:主控制器接口以下为无线信道、基带物理层和链路管理层协议;主控制器接口以上为逻辑链路控制和适应层协议、服务发现协议(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规范的串口线相连,蓝牙测试仪和待测手机之间通过射频电缆或耦合天线连接。

740)this.width=740" border=undefined>

蓝牙协议栈

表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 0x0800,0x0012
HCI_Write_InquireScan_Activity 0x001e 0x0800,0x0012
HCI_Write_Scan_Enable 0x0c1a 0x03
HCI_Write_Device_Under_Test_Mode 0x1803 无

系统的软件实现
测试软件在Labwindows/CVI软件开发平台下完成。Labwindows/CVI是由NI公司开发的半图形化的编程工具,该工具以标准C语言为基础,具有强大的库函数,提供了灵活的开发手段和良好的用户界面。该测试系统的软件从功能角度可以划分为四部分:对综测仪的初始化、对蓝牙手机的初始化、建立连接和测试指标子程序。
部分:对综测仪的初始化,步骤如下:
步骤1. 查找听者。函数原形为:
ibln(int Board/Device,int Primary Address,int Second Address,short Found Listener );
查找听者的主要目的是为了确认听者的Primary Address,由于一个总线上多有30个听者,可以通过有限循环查找,如果确认只有一个听者,当找到一个听者时即可停止查找。
步骤2. 打开设备。函数原形为:
ibdev(int Board_Index,int Primary_Address,int Secondary_Address,int Timeout_Value,int END_Message,int EOS_Character);
函数返回值相当于一个操作句柄,当成功打开设备后,对仪器的读写操作均通过操作句柄完成。
对于有些仪器,通过以上两个步骤就可以得到一个有效的操作句柄,但有的仪器,如R&S公司的CMU200,不但有Primary Address,还有Secondary Address,这就需要在得到总的操作句柄后,通过ibwrt函数对各子项(这里指的是bluetooth signalling和bluetooth non-signalling)设置次地址,当次地址设置完成后,可以通过ibdev函数得到具体的针对子项的操作句柄。
第二部分:对手机的初始化。对手机的初始化是通过串行通信端口(RS-232)实现的,步骤如下:
步骤1. 打开串口。函数原形如下:
int OpenComConfig(int COM_Port,char Device_Name[],long Baud_Rate,int Parity,int Data_Bits,int Input_Queue_Size,int Output_Queue_Size);
函数中的参数根据蓝牙模块所支持的方式进行设置。
步骤2. 发送HCI命令,使手机进入测试模式。通过函数ComWrtByte(int Com Port,char Byte)发送,发送时按照HCI命令标准包格式,选择相应的参数,从高字节向低字节,以16进制的形式,逐字节发送。HCI包格式如表1所示。其中Packet Type Indicator按照表2确定。而详细的HCI命令包组成见表3。其中OCF,OGF为操作码,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个(本软件选择2402MHz,2441 MHz,2480 MHz)
测试标准:
平均功率:在-6dBm至4dBm之间;功率: 不大于23dBm
首先通过ibwrt函数设置蓝牙测试仪的各项配置,使之符合以上的测试条件,然后在3个测试频点上进行循环测试,用ibrd函数从蓝牙测试仪上读取相应的测试结果,根据规范要求的测试标准进行判断,得出的结果。

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

740)this.width=740" border=undefined>

740)this.width=740" border=undefined>


  

参考文献:

[1]. RS-232 datasheet https://www.dzsc.com/datasheet/RS-232_584855.html.


上一篇:基于BESSEL函数的带通滤波器设计
下一篇:一种Wi-Fi手机的设计与实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料