1、启动server端程序,读取蓝牙适配器的蓝牙mac地址。
2、启动client端程序,获取所述蓝牙适配器的蓝牙mac地址。
3、待测蓝牙设备与所述蓝牙适配器根据所述蓝牙mac地址建立连接。
4、所述待测蓝牙设备向所述蓝牙适配器发送用于测试的数据包。
5、测试结束后,输出tx吞吐率测试结果。
表1 HCI包格式First Byte Last BytePacket 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手机测试系统中,可以在生产测试中减少测试站的设置,降低成本。■
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)