- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
蓝牙技术与协议的开发应用与实现
录入:edatop.com 点击:
摘要 围绕最新的蓝牙1.1版本规范,概括了蓝牙的生产背景、技术特点和市场潜力、蓝牙开发等方面,最后介绍了有关的产品
关键词 蓝牙技术 蓝牙规范
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规定的相关认证和测试规范,以及与之有关的程序,以便在开发过程中理出测试的接口。
3.1.2蓝牙软件与硬件的独立实现
蓝牙在实现的时候,一般分成两部分实现,一是硬件部分,它包括蓝牙协议栈的下三个层次,即无线收发、基带和链路管理层(LMP);是软件部分,它包括蓝牙协议栈的上层,包括L2CAP、RFCOMM、SDP和TCS以及一些蓝牙应用。
3.2蓝牙硬件模块开发
3.2.1硬件模块设计的目标
蓝牙的硬件部分包括三个层次:无线层、基带层和链路管理器层。无线层主要完成频率的合成、比特到符号的转换和过滤,以及符号和收发操作;基带层主要完成编码/解码、加密/解密、分组处理和调频频率的生成和选择;键路管理器层主要完成连接的建立和链路的管理。蓝牙设计的初衷是实现所有电子产品之间的无线互连,这些设想中的设备大都是便携的和移动的,因此在体积、重量、功耗和安全性方面具有较高的要求,这也成为对蓝牙硬件设计的主要目标。
硬件设计的目标是:(1)最大限度地降低硬件实现模块的体积;(2)实现的费用要低;(3)实现的功耗要低;(4)在开放的ISM频段上实现安全性和顽健性。
需注意解决主要技术是:(1)快速调频技术;(2)单芯片集成技术
3.2.2模块的构成
在单个芯片中把蓝牙低三层的功能都包括进去确实是一个困难,不过现在已经有了一些现成的产品能。这些产品一般都是使用片上系统(OSC:System-On-Chip)技术,把几个功能模块集成到一个芯片上。这样的一个OSC一般包括几个模块: 蓝牙基带核心模块、微处理器模块、HCI模块、语音处理模块和一些可选的测试模块,在这些模块中,有些模块可以比较独立地开发实现,也可以购买成熟的产品,例如蓝牙基带核心模块和语音处理模块。这样有的开发者便可以利用独立的模块集成自己的蓝牙硬件实现方案。
3.2.3高层协议栈开发
蓝牙的SIG定义了蓝牙的协议栈,但这是一个不可见的软件,用户是看不到的,必须开发一个可以为用户使用的可见的用户接口UI,用户使用这个接口可以对蓝牙进行配置,实现通信功能。蓝牙的协议栈中没有给出API,开发人员很难开发基于蓝牙的应用,所以协议栈必须提供相应的API。开发人员使用这些API就可以开发基于蓝牙的应用,而不必对蓝牙的具体技术进行深入的研究。
一般地,蓝牙高层协议栈设计成一个软件部件,由于是运行在主机设备上的,所以在很多场合是以主机栈(Host Stack)的名字出现的。作为主机应用的一个部分,它依赖于使用的操作系统和硬件平台。为了使设计的协议栈具有很好的可移植性,必须尽量减少它对平台和操作系统的依赖。另外,虽然蓝牙技术在一个实际系统中只是提供一个无线通信的功能,但是它也是一项非常复杂的技术,对于应用层的设计人员来说可能对蓝牙了解的不是很清楚。为了使这些应用开发人员也能够开发基于蓝牙的应用,高层协议栈必须提供丰富的和详细的API。目前的系统具有很多非蓝牙的应用,这些应用使用非常广泛,要把这些应用统一地改成基于蓝牙的应用是非常困难的,所以需要提供一个与传统应用之间的接口。总的来说,高层协议栈的设计目标是(1)支持确定目标的用户模型;(2)支持多种硬件平台;(3)良好的用户使用接口,能够使用传统的应用,在可能的情况下使用现有的协议;(4)最小的源码数量;(5)最大的重用;(6)可维护。
另外,在开发过程中还应该尽量满足如下的要求:(1)使用ANSIC进行编码,实现编译器的独立性;(2)使用基于规范描述语言(SDL);(3)强化的检查,在功能规范、结构、设计、设计确认、编码和模块测试、主机集成和目标集成的各个环节都进行详细的检查;(4)使用文化档的软件。
4 结束语
近年来移动通信发展迅速,便携式计算机如膝上型电脑、笔记本电脑、手持式电脑以及个人数字辅助器等也迅速发展起来,还有因特网的迅速发展,使人们对电话通信以外的各种数据信息传递的需求日益增长。"蓝牙"技术把各种便携式电脑与蜂窝移动电话用无线电链路连接起来,使计算机与通信更加密切结合起来,使人们能随时进行数据信息交换与传输。因此计算机行业、移动通信行业都对"蓝牙"技术很重视,认为将对未来的无线移动数据通信业务有巨大的促进作用,预计在最近几年内无线数据通信业务将迅速增长。"蓝牙"技术被认为是无线数据通信最为重大的进展之一。
摘自《通信技术》