蓝牙技术与协议的开发应用与实现

  1 什么是蓝牙技术

  所谓蓝牙技术,实际上是一种短距离无线电技术,利用"蓝牙技术"能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备,并且能够成功地简化以上这些设备与因特网之间的通信,从而使这些现代通信设备与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。通俗地讲,蓝牙技术使得现代一些轻易携带的移动通信设备和电脑设备,不必借助电缆就能联网,并且能够实现无线上因特网。其实际应用范围还可以拓展到各种家电产品、消费电子产品和汽车等信息家电,组成一个巨大的无线通信网络。

  2 蓝牙技术的特点

  2.1 蓝牙协议体系结构

  整个蓝牙协议体系结构可分为底层硬件模块、中间协议层和高端应用层三大部分。链路管理层(LMP)、基带层(BBP)和蓝牙无线电信道构成蓝牙的底层模块。BBP层负责跳频和蓝牙数据及信息帧的传输。LMP层负责连接的建立和拆除以及链路的安全和控制,它们为上层软件模块提供了不同的访问人口,但是两个模块接口之间的消息和数据传递必须通过蓝牙主机控制器接口的解释才能进行。也就是说,中间协议层包括逻辑链路控制与适配协议(L2CAP)、服务发现协议(SDP)、串口仿真协议(RFCOMM)和电话控制协议规范(TCS)。L2CAP完成数据拆装、服务质量控制、协议复用和组提取等功能,是其他上层协议实现的基础,因此也是蓝牙协议栈的核心部分。SDP为上层应用程序提供一种机制来发现网络中可用的服务及其特性。在蓝牙协议栈的最上部是高端应用层,它对应于各种应用模型的剖面,是剖面的一部分。目前定义了13种剖面。

  2.2 蓝牙低层模块

  蓝牙的低层模块是蓝牙技术的核心,是任何蓝牙设备都必须包括的部分。

  蓝牙工作在2.4GHZ的ISM频段。采用了蓝牙结束的设备讲能够提供高达720kbit/s 的数据交换速率。

  蓝牙支持电路交换和分组交换两种技术,分别定义了两种链路类型,即面向连接的同步链路(SCO)和面向无连接的异步链路(ACL)。

  为了在很低的功率状态下也能使蓝牙设备处于连接状态,蓝牙规定了三种节能状态,即停等(Park)状态、保持(Hold)状态和呼吸(Sniff)状态。这几种工作模式按照节能效率以升序排依次是:Sniff模式、Hold模式、Park模式。

  蓝牙采用三种纠错方案:1/3前向纠错(FEC)、2/3前向纠错和自动重发(ARQ)。前向纠错的目的是减少重发的可能性,但同时也增加了额外开销。然而在一个合理的无错误率环境中,多余的投标会减少输出,故分组定义的本身也保持灵活的方式,因此,在软件中可定义是否采用FEC。一般而言,在信道的噪声干扰比较大时蓝牙系统会使用前向纠错方案,以保证通信质量:对于SCO链路,使用1/3前向纠错;对于ACL链路,使用2/3前向纠错。在无编号的自动请求重发方案中,一个时隙传送的数据必须在下一个时隙得到收到的确认。只有数据在收端通过了报头错误检测和循环冗余校验(CRC)后认为无错时,才向发端发回确认消息,否则返回一个错误消息。

  蓝牙系统的移动性和开放性使得安全问题变得及其重要。虽然蓝牙系统所采用的调频技术就已经提供了一定的安全保障,但是蓝牙系统仍然需要链路层和应用层的安全管理。在链路层中,蓝牙系统提供了认证、加密和密钥管理等功能。每个用户都有一个个人标识码(PIN),它会被译成128bit的链路密钥(Link Key)来进行单双向认证。一旦认证完毕,链路就会以不同长度的密码(Encryphon Key)来加密(此密码以shit为单位增减,最大的长度为128bit)链路层安全机制提供了大量的认证方案和一个灵活的加密方案(即允许协商密码的长度)。当来自不同国家的设备互相通信时,这种机制是极其重要的,因为某些国家会指定最大密码长度。蓝牙系统会选取微微网中各个设备的最小的最大允许密码长度。例如,美国允许128bit的密码长度,而西班牙仅允许48bit,这样当两国的设备互通时,将选择48bit来加密。蓝牙系统也支持高层协议栈的不同应用体内的特殊的安全机制。例如两台计算机在进行商业卡信息交流时,一台计算机就只能访问另一台计算机的该项业务,而无权访问其他业务。蓝牙安全机制依赖PIN在设备间建立信任关系,一旦这种关系建立起来了,这些PIN就可以存储在设备中以便将来更快捷地连接。

  2.3 软件模块

  L2CAP是数据链路层的一部分,位于基带协议之上。L2CAP向上层提供面向连接的和无连接的数据服务,它的功能包括:协议的复用能力、分组的分割和重新组装(Segmentation And Reaassembly)以及提取(Group Abstraction)。L2CAP允许高层协议和应用发送和接受高达64K Byte的数据分组。

  SDP为应用提供了一个发现可用协议和决定这些可用协议的特性的方法。蓝牙环境下的服务发现与传统的网络环境下的服务发现有很大的不同,在蓝牙环境下,移动的RF环境变化很大,因此业务的参数也是不断变换的。SDP将强调蓝牙环境的独特的特性。蓝牙使用基于客户/服务器机制定义了根据蓝牙服务类型和属性发现服务的方法,还提供了服务浏览的方法。

  RFCOMM是射频通信协议,它可以仿真串行电缆接口协议,符合ETSI0710串口仿真协议。通过RFCOMM,蓝牙可以在无线环境下实现对高层协议,如PPP、TCP/IP、WAP等的支持。另外,RFCOMM可以支持AT命令集,从而可以实现移动电话机和传真机及调制解调器之间的无线连接。

  蓝牙对语音的支持是它与WLAN相区别的一个重要的标志。蓝牙电话控制规范是一个基于ITU-T建议Q.931的采用面向比特的洗衣,它定义了用于蓝牙设备间建立语音和数据呼叫的呼叫控制信令以及用于处理蓝牙TCS设备的移动性管理过程。

  3 蓝牙开发概述

  3.1蓝牙开发的意义

  鉴于蓝牙再未来信息产品中的重要地位,开发具有我国自主只是产权的蓝牙产品具有非常重要的意义。对一些信息家电厂家,其主要目的是将蓝牙作为通信模块集成到自己的产品中,它们可以使用其他厂家的蓝牙产品,自己只需着力于开发应用部分;而对那些专门从事蓝牙研发生产的厂家,就需要进行从底层到高层的全面开发,只有这样才能掌握蓝牙的核心技术,才能生产出具有自主知识产权的产品。

  3.1.1开发前的准备工作

  (1)对蓝牙相关的规范和协议有一个初步的了解,对要开发的部分进行细致的研究,协议的要求必须明确,对产品的应用环境也必须非常清楚。

  蓝牙的规范包括协议的核心部分和蓝牙的应用剖面(用户模型),内容应该非常丰富,对整个协议进行全面地了解,但是由于客观上难以实现,因此,可以先从一些简单的介绍开始,从整体上对蓝牙的结构体系有一个较为全面的了解,再从用户的角度了解蓝牙系统的概况,这样,根据自己准备开发的产品,有目的地选择相关的协议进行专门研究。

  (2)对同类产品做细致的调研。可以根据分类查看相关的产品,以及产品的性能和使用方法,还能够得到有关厂商的信息。 (3)另外也可以申请加入蓝牙SIG,成为SIG成员。

  (4)制定一个详尽的产品开发计划,尽可能做到周全。

  (5)建立一个开发工作平台、开发环境,准备和选择相应的开发工具

  在蓝牙开发工具中,应包括一个蓝牙硬件的接口部件和需要的软件部分,至少要有一对节点,这样,才能建立一条链路,如果要开发更为复杂的应用,可能需要更多的节点。硬件可以是各种形式,像IC卡、USB dougle、开发工具、UART附件等,也可以是自己开发的或专门定制的硬件。

  在选择硬件时需要注意,首先必须明确待开发的应用是什么,是用于嵌入式系统还是用于计算机系统?如果是用于计算机系统,使用PC卡或USB dougle就足够了,这时选用简单的开发工具。如果是用于嵌入式系统,就需要更为复杂的开发工具,要求开发工具允许进行固件的开发和允许下载到开发工具中,或者如果希望能够对微处理器或FPGA进行直接的测试,可以制造一块开发板,这需要购买一块包括蓝牙模块和微处理器或FPGA的PCB板,同时还需要对微处理器/FPGA进行编程的外围设备。其次,要注意的问题是应用中是否包括语音?因为有一些开发系统不包括语音接口,如果应用只有数据传输,应该考虑数据的速率,可以使用UART连接器,对于全速率的数据应用,需要使用USB。

  在决定了使用什么硬件之后需要考虑的就是软件栈。如果要开发的应用可以使用蓝牙规范中某个剖面,那么就只需要实现与该剖面有关的软件栈。这种情况往往要开发自己定制的栈,这样更能符合应用的要求。如果要开发的应用不能使用现有的剖面结构,它就必须与属于特定剖面的设备进行交互。再进行协议栈需求设计事必须牢记兼容性。在决定使用一个协议栈之前,还必须仔细地检查协议栈能够提供的能力,并不是所有的协议栈都实现了规范中所列出的所有功能,有一些功能可能还没有实现。另外除了比较价格,文档的质量和公司的售后支持也是需要特别考虑的。

  (6)开发之前还必须了解蓝牙SIG规定的相关认证和测试规范,以及与之有关的程序,以便在开发过程中理出测试的接口。