蓝牙技术及其协议栈
迁移自http://adaishu.blog.163.com/blog/static/1758312862011330113948888/
蓝牙(Bluetooth)计划是由Ericsson、IBM、Intel、Nokia和Toshiba等公司在1998年联合推出的一项先进的无线网络技术。遵循蓝牙协议的各类数据及语音设备将能够用微波取代传统网络中错综复杂的电缆,非常方便地实现快速、灵活、安全、低代价、低功耗的数据和语音通信。由于蓝牙技术将在人们的日常生活和工作中扮演重要角色,市场潜力巨大,因此,它将成为21世纪的投资热点。文章将重点介绍蓝牙技术的工作原理和蓝牙协议栈内容。分为四个部分:术语、蓝牙技术工作原理、蓝牙硬件模块的组成、蓝牙软件协议栈的介绍。
1. 术语
* 微微网(Piconet):是由采用蓝牙技术的设备以特定方式组成的网络。 微微网的建立是由两台设备(如便携式电脑和蜂窝电话)的连接开始,最多由8台设备构成。所有的蓝牙设备都是对等的,以同样的方式工作。然而,当一个微微网建立时,只有一台为主设备,其他均为从设备,而且在一个微微网存在期间将一直维持这一状况。
* 分布式网络(Scatternet):是由多个独立、非同步的微微网形成的。
* 主设备(Master unit):在微微网中,如果某台设备的时钟和跳频序列用于同步其他设备,则称它为主设备。
* 从设备(Slave unit):非主设备的设备均为从设备。
* MAC地址(MAC address):用3比特表示的地址,用于区分微微网中的设备。
* 休眠设备(Parked units):在微微网中只参与同步,但没有MAC地址的设备。
* 监听及保持方式(Sniff and Hold mode):指微微网中从设备的两种低功耗工作方式。
2. 蓝牙技术工作原理
其基本实现原理为蓝牙设备依靠专用的蓝牙微芯片能使设备在短距离范围内发送无线电信号,来寻找另一个蓝芽设备。一旦找到,相互之间便开始通信,交换信息。
1) 蓝牙的无线通信技术特征
蓝牙的无线通信技术采用每秒1600次的快跳频和短分组技术,减少干扰和信号衰落,保证传输的可靠性;
以时分方式进行全双工通信,传输速率设计为1MHz;
采用前向纠错(FEC)编码技术,减少远距离传输时的随机噪声影响;
其工作频段为非授权的工业、医学、科学频段(2.4GHz的ISM频段),保证能在全球范围内使用这种无线通用接口和通信技术;
话音采用抗衰落能力很强的连续可变斜率调制(CVSD)编码方式以提高话音质量;
采用频率调制方式,降低设备的复杂性。
2)拓扑结构
蓝牙系统支持点对点以及点对多点通信。几个相互独立、以特定方式连接在一起的微微网构成分布式网络,各微微网由不同的跳频序列来区分。在同一微微网中,所有的用户均用同一跳频序列同步。拓扑结构如图1所示。
图1 分布式网络
3)连接建立的过程及其工作状态的转换
在微微网建立之前,所有设备都处于就绪(STANDBY)状态。在该状态下,未连接的设备每隔1.28秒监听一次消息,设备一旦被唤醒,就在预先设定的32个跳频频率上监听信息。跳频数目因地区而异,但32个跳频频率为绝大多数国家所采用。 连接进程由主设备初始化。如果一个设备的地址已知,就采用寻呼消息(Page message)建立连接;如果地址未知,就采用紧随寻呼消息的查询消息(Inquiry message)建立连接。查询消息主要用来查询地址未知的设备(如公用打印机、传真机等),它与寻呼消息类似,但需要附加一个周期来收集所有的应答。在寻呼状态(PAGE state),主设备在16个跳频频率上发送一串相同的页信息给从设备,如果没有收到应答,主设备就在另外的16个跳频频率上发送寻呼消息。主设备到从设备的最大时延为两个唤醒周期(2.56秒),平均时延为半个唤醒周期(0.64秒)。
在微微网中,无数据传输的设备转入节能工作状态。主设备可将从设备设置为保持方式(HOLD mode),此时,只有内部定时器工作;从设备也可以要求转入保持方式。设备由保持方式转出后,可以立即恢复数据传输。连接几个微微网或管理低功耗器件(如温度传感器)时,常使用保持方式。监听方式(SNIFF mode)和休眠方式(PARK mode)是另外两种低功耗工作方式。在监听方式下,从设备监听网络的时间间隔增大,其间隔大小视应用情况由编程确定;在休眠方式下,设备放弃了MAC地址,仅偶尔监听网络同步信息和检查广播信息。各节能方式依电源效率高低排列为:休眠方式→保持方式→监听方式。
4)蓝牙对语音和数据的支持
为了保证各种使用场合的应用,蓝牙的基带协议是电路交换和分组交换的组合,可以同时支持语音和数据的传输。该技术支持两种连接方式:面向连接(SCO)方式,主要用于话音传输;无连接(ACL)方式,主要用于分组数据传输。
在同一微微网中,不同的主从设备可以采用不同的连接方式,在一次通信中,连接方式可以任意改变。每一连接方式可支持16种不同的分组类型,其中控制分组有4种,是SCO和ACL通用的分组,两种连接方式均采用时分双工 (TDD)通信。SCO为对称连接,每一个话音通道支持64kbps的同步话音,支持限时话音传送,主从设备无需轮询即可发送数据。SCO的分组既可以是话音又可以是数据,当发生中断时,只有数据部分需要重传。ACL是面向分组的连接,它支持对称和非对称两种传输流量:ACL的非对称连接支持正向速率721kbps、反向应答速率为57.6kbps的;对称连接速率为432.6kbps。ACL也支持通过广播方式发送信息。在ACL方式下,主设备控制链路带宽,负责从设备带宽的分配;从设备依轮询发送数据。
3、蓝牙硬件模块的组成
蓝牙模块包括以下两个部分:
1.无线射频(RF)单元
蓝牙系统的天线发射功率符合FCC关于ISM波段的要求。系统的最大跳频速率为1600跳/秒,在2.402GHz到2.480GHz之间,采用79个1MHz带宽的频点。系统设计的通信距离为10米(0db),如果增加发射功率(20db),这一距离也可以达到100米。
2. 基带(Baseband,BB)和链路管理(LinkManager,LM)单元
BB负责跳频和蓝芽数据及信息帧的传输。LM负责连接的建立和拆除。它们实现的功能包括:对SCO和ACL连接方式的支持;差错控制,可以采用多种检纠错方式,其中包括前向纠错编码(FEC);物理层的认证与加密;链路管理。
4.蓝牙软件协议栈的介绍
1)协议栈结构
底部协议层包括链路管理协议(Link Manager Protocol, LMP)和基带(Baseband)控制部分。链路管理协议实现链路的建立、认证及链路配置等。其中的服务项目包括:接收和发送数据、设备号请求、链路地址查询、建立连接、认证与加密、协商并建立连接方式、确定分组的帧类型、设置监听方式、设置保持方式以及设置休眠方式等。基带(Baseband)控制部分负责跳频和蓝芽数据及信息帧的传输,包括对纠错编码的支持,对SCO和ACL包的组织,流控等。
中间协议层包括逻辑链路控制和适应协议(Logical Link Control and Adaptation Protocol,L2CAP)、服务发现协议(Service Discovery Protocol,SDP)、串口仿真协议RFCOMM和电话通信协议(Telephony Control Protocol,TCS),对象交换协议(Object Exchange,OBEX)。L2CAP完成数据的拆装、服务质量和协议复用等功能,是其他上层协议实现的基础。SDP为上层应用程序提供一种机制来发现网络中可用的服务及其特性。RFCOMM基于ETSI标准TS07.10在L2CAP上仿真9针RS232串口的功能。TCS提供蓝芽设备间话音和数据的呼叫控制信令。对象交换协议(Object Exchange,OBEX)是Extended Systems公司为红外通信的高层应用开发的协议,现在已成功的应用于蓝牙协议栈中。
在BB和LM上与L2CAP之间还有一个主机控制接口层(Host Controller Interface,HCI)。HCI是蓝芽协议中软硬件之间的接口,它提供了一个调用下层BB、LM、状态和控制寄存器等硬件的统一命令接口。HCI协议以上的协议软件实体运行在主机上,而HCI以下的功能由蓝牙模块来完成,二者之间通过一个对两端透明的传输层进行交互。
吸收现成的协议有PPP、TCP/IP、OBEX 、WAP…
协议结构如图2所示。
图2 蓝牙协议栈结构示意图
2)蓝牙的应用模型(Profile)
在蓝芽协议栈的最上部是各种应用模型(Profile)。其中较典型的有服务发现(Service Discovery Application),互通(Intercom),无绳电话(Cordless Telephony),传真(FAX),拨号网络(Dial-up Networking),耳机(Headset),局域网访问(LAN Access),文件传输(File Transfer),同步(Synchronization),Object Push等。各种Profile从协议栈中选取不同的协议组合来完成特定的功能。
下面列出各种Profile需要的协议组合,协议排列顺序按照从上到下的顺序:
服务发现(Service Discovery Application):SDP,L2CAP,LMP,Baseband;
互通(Intercom),无绳电话(Cordless Telephony):TCS,SDP,L2CAP,LMP,Baseband;
传真(FAX),拨号网络(Dial-up Networking),耳机(Headset):SDP/RFCOMM,L2CAP,LMP,Baseband;
局域网访问(LAN Access):TCP/IP,PPP,SDP/RFCOMM,L2CAP,LMP,Baseband;
文件传输(File Transfer),同步(Synchronization),Object Push:OBEX,SDP/RFCOMM,L2CAP,LMP,Baseband。
看看一个公司的蓝牙实现: