蓝牙作为一种新的短距离无线通信技术在当今社会的使用是越来越高了,其中最为常见的就是蓝牙耳机。手机呼叫手机呼叫免提接听的功能。在蓝牙Head Set 模型中首先需要明确两个角色: 一个是A G(A udio Gateway) , 他充当音频网关, 既可以作为音频输入也可以作为音频输出; 另一个是HS (Head Set) , 即蓝牙耳机, 他是一个作为蓝牙远端音频输入与输出的设备, 并且提供了一些远端控制方式。
1、蓝牙系统的功能模块
蓝牙系统的基本功能模块如图1 所示。他的功能模块包括天线单元、链路控制器、链路管理、软件功能。
111 无线技术规范
蓝牙天线属于微带天线, 蓝牙无线接口是基于常规无线发射功率0 dBm 设计的, 符合美国联通讯委员会(FCC) 的ISM 频段的规定。扩展频谱技术的应用使得功率可增至100 dBm, 可满足不同国家的需要。在日本、西班牙、法国, 由于当地规定的频段相对较窄, 可用内部软件转换实现。
112 基带技术规范
基带描述了设备的数字信号处理部分, 即蓝牙链路控制器, 他完成基带协议和其他底层的链路规程。主要包括以下几个方面:
(1) 网络连接的建立
(2) 链路类型和分组类型
链路类型决定了哪种分组模式能在特定的链路上使用, 蓝牙基带技术支持2 种链路类型: 即同步面向连接类型SCO (主要用于语音) 和异步非连接类型ACL (主要用于分组数据)。
(3) 纠错
基带控制器采用3 种纠错方式: 1ö3 速率前向纠错编码(FEC) , 2ö3 速率前向纠错编码(FEC) , 对数据的自动请求重传(ACL )。
(4) 鉴权和加密
蓝牙基带部分在物理层为用户提供保护和信息保密机制。鉴权基于“请求响应”运算法则。鉴权是蓝牙系统中的关键部分, 他允许用户为个人的蓝牙设备建立一个信任域, 比如只允许主人自己的笔记本电脑通过主人自己的移动电话通信。加密被用来保护连接的个人信息。密钥由程序的高层来管理。网络传送协议和应用程序可以为用户提供一个较强的安全机制。
2、Head Set 应用模型的协议栈结构
蓝牙的协议栈采用分层结构, 如图2 所示。
各层功能简要介绍如下:
基带(baseband) 是蓝牙的物理层, 主要负责物理信道的编解码, 底层的定时控制, 以及在单个数据包传送期间的链路管理等业务, 在原始的荷载数据上增加地址域和控制域, 并进行错误检测或纠正。
LC (L ink Cont ro l) 层负责在一批数据包传送期间, 响应上层LM 命令(如执行建立数据包的传输链路, 维持链路等功能的LM 命令)。
LM (L inkM anager) 层是蓝牙协议栈的链路管理层协议, 他负责将上层HC I 命令翻译成基带能接受的操作, 建立ACL (数据) 和SCO (语音) 链接, 以及使蓝牙设备进入节能状态的工作模式等。
M E (M anagement Ent ity) 为管理实体, 他的功能是发现远端设备并且与他们建立连接, 为需要管理蓝牙微微网的应用层和其他系统层提供接口A P I。
SE (SecurityM anager) 和M E 一起工作允许应用程序对鉴权和加密进行设置, 真正的鉴权和加密是由硬件来实现的。
逻辑链路控制协议(L 2CA P) 采用了信道的概念在蓝牙设备不同应用之间建立不同的路径, 但他只支持ACL链路。主要功能是为高层应用层提供协议复用, 允许他们共享低层数据链路。并对超过低层支持的大数据包进行分组和重组操作, 同时提供了对上层服务的质量管理。
业务搜寻协议(SDP) 是极其重要的部分, 他提供了一种SDP 客户向SDP 服务器查询关于服务信息的方式。服务器维护一个服务记录列表, 服务记录列表描述与该服务器有关的服务特征。客户端可以通过发送一个SDP 请求从服务器记录中索取服务信息, 业务及业务特征, 并在查询之后建立两个或多个蓝牙设备间的连接。
RFCOMM 提供串口仿真, 蓝牙的低层负责提供无线的连接方式, 但在此之前已经存在很多传统的应用都是基于有线方式开发的, 蓝牙如果不能解决对传统协议的适配问题, 就很难成为一个广泛应用的标准。为此, 蓝牙制定了像RFCOMM 的适配协议来实现对传统应用的支持。
Head Set 控制层: 主要是实现Head Set 的P rofile 定义的功能, 例如对音频网关的M IC (麦克风) 的音量控制,对SPK (扬声器) 的音量控制, SCO 链接的建立与释放,以及音频转移等。
音频端口应用层: 是一些针对应用的功能, 耳机应用层必须实现的应用特征有:
(1) 接到A G 的呼叫时能建立音频链接, 通话结束后能断开音频链接。
(2) 能发起对远方的呼叫, 通话结束后同样能断开音频链接。
(3) 音频链接转移。
(4) 对远端A G 的音量控制。
3、Head Set 的建链
当蓝牙音频网关A G 接收到一个呼叫, 发起与HS 的链接时, 为使应用层语音通信可靠, 需要蓝牙协议栈建立可靠的通信链路。根据蓝牙协议栈运行, 从底层到高层的建链一般要经过以下几个过程:
(1) 建立ACL 即基带层的链接;
(2) 建立L 2CA P 层的链接;
(3) 进行SDP 的查询过程;
(4) 建立RFCOMM 层的链路;
(5) RFCOMM 链路建好后, 将通过RFCOMM 信道传输Head Set 控制层的一些A T 命令;
(6) 建立SCO 链接;
(7) 根据应用层的动作执行蓝牙HS 与A G 之间的音频通信。
蓝牙协议栈的建链过程具体讨论如下。
3.1 建立ACL 即基带层的链接
A G 接收到一个呼叫时, 首先建立与HS 之间的ACL链接, 此HS 与A G 之间需预先绑定, 或者把原来处于休眠状态下的HS 唤醒。这是通过page 进程完成的, 在用page 进程建立ACL 时, 定义A G 是M aster 角色, 于是A G首先发起查询, 通过查询A G 获得HS 的蓝牙地址。然后A G 在应用层的驱动下向查询到的HS 发起一个page 进程, 当接收到HS 返回的应答时, 这时A G 与HS 之间的
ACL 链接已经成功建立。
一旦ACL 链接建立, 他可以被用来传送振铃信号。振铃信号的发送是通过A T 命令R IN G 来完成的。振铃信号也可以在SCO 链路上发送。
3.2 建立L 2CA P 层的链接
ACL 链接好后, 接着建L 2CA P 链路。A G 首先在信令信道上发送一个链接请求信令, 要求建立信道标号为0x0040 的L 2CA P (0x0001~ 0x003F 是协议保留不可动态分配的, 0x0040~ 0xFFFF 可以自由分配) , 此信道的PSM (协议服务复用) 标志0001, 当对方返回链接响应信号, 表明0x0040 信道已经建好。然后对此信道进行配置,配置完信道后, 就可以利用此C ID 为0x0040 的L 2CA P 信道进行SDP 查询了。
3.3 进行SDP 的查询过程
利用C ID 为0x0040 的L 2CA P 信道进行SDP 的查询过程, 首先是A G 在此L 2CA P 信道上发送一个SDP 查询包, SDP 查询包将查询SDP 服务器端HS 是否具有所需要的服务。若查询成功, 在ACL 链路上再建一条标号为0x0041 的L 2CA P 链路, 此信道的PSM 为0003, 用来传输RFCOMM 数据流的。同时断开用作SDP 查询的标号为0x0040 的L 2CA P 链路。
3.4 建立RFCOMM 层的链路
当C ID 为0x0041 的L 2CA P 信道建好之后, 接着就是RFCOMM 的建链过程, 如图3 所示。首先建控制信道, 建链发起方A G 在信道上发送一个SABM 帧, 即要求建RFCOMM 层上的Channel0, 如果响应方HS 希望建立链接, 返回一个UA 帧, 表明已经建立好了Channel0 这条RFCOMM 信道。此信道为控制信道, 用来传送携带控制消息和命令的U IH 帧。如果响应方HS 不希望建立链接,返回一个DM 帧。
其次建立数据信道, 先是对数据传送信道的参数进行协商, 协商命令PN 参数包括对将要建立的信道Channel1的优先级, 最大帧长等, 当双方协商好后建立传输数据的信道Channel1。
RFCOMM 层的数据信道建好后, 再对Head Set 控制层的控制命令进行传输。即在数据传送信道Channel1 上利用U IH 帧传送A T + CKPD= 200 等命令, 当接收到对方的响应OK 之后, 就可以开始建立SCO 链接。
3.5 建立SCO 链接
初始化时HC I 发一个WR ITE_ VO ICE_ SETT IN G命令, 对音频状态进行设置, 当接收到A G 的建立SCO 链接的请求时, 若HS 允许, 发送一个接收的HC I 命令, 在命令完成之后, 传输音频信号的SCO 链路就建好了, 此时就可以进行语音通信。
4、应用层的状态机设计
在协议栈的通信链路建立后, 可以进行应用层通信。应用层有一个主状态机在运行, 如图4 所示。根据用户的动作以及A G 发送的命令, HS 应用进程将在各状态之间跑动。
空闲状态 HS 与A G 之间可能已经存在ACL 链接,但没有RFCOMM 信道建立, 也没有音频信号的SCO 链路存在。当A G 响应内部事件或者用户请求时, 便发起链接建立的请求, HS 接收到建立链接的请求时, HS 与A G开始建ACL , L 2CA P, RFCOMM 链路, 建好RFCOMM信道后, A G 发送一个或多个A T + R IN G 的振铃指示命令, 通知HS 用户有入呼的音频链接到达。此时状态将转至来电振铃状态。
来电振铃状态 此时音频网关A G 已经建立了与HS的ACL 与RFCOMM 信道, 并且HS 已经接收到振铃信号, 这预示着音频网关要求建立SCO 链接, 若用户不对振铃做出响应, 音频网关将终止RFCOMM 信道, 状态将重新回到空闲状态, 若用户按下HS 上的Bluetoo th 键, 则表示用户接受入呼音频链接的请求, 这时HS 将发送A T 控制命令A T+ CKPD 给A G, 这时两者之间将建立SCO 链
接, 状态将转至链接状态。
呼叫状态 当HS 用户按下HS 上的Bluetoo th 键, 用户发出呼叫音频网关的请求, 这时HS 将先建立ACL 链接, 再对音频网关进行SDP 查询。若SDP 查询成功, HS打开与A G 链接的RFCOMM 信道, 并且发送A T 命令+CKPD 要求建立SCO 的音频链接。当SCO 链接建立时, 状态将转移到连接状态, 若SCO 链接建立失败, 状态将转到空闲状态。
链接状态 链接状态下, ACL , L 2CA P, RFCOMM都已经建立, 而且已经执行了SDP 查询, 音频通话就绪。若用户对HS 讲话, 语音将通过SCO 链路传送至A G, 并通过A G 将语音传到远端。
链接断开状态 链接断开可以通过HS 上的Bluetoo th 键完成, 也可以通过A G 的内部事件或用户干预触发产生。无论那一种原因引起, 实质上都是A G 链路释放的结果。如果HS 发出了断开链接的请求, 并且发送一个A T 命令+ CKPD 到音频网关要求音频网关断开链接, 于是音频网关断开SCO 链接和RFCOMM 信道。当RFCOMM 断开时, 状态将转换到空闲状态。而ACL 链接有可能处于断开状态也有可能处于链接状态。
5、Head Set 的实现方案
以摩托罗拉蓝牙解决方案为例, 摩托罗拉在先进射频技术方面很有经验。摩托罗拉蓝牙解决方案可利用UART, RS 232, U SB 或SP I 连接主处理器, 而主处理器可通过这些接口处理蓝牙协议上的堆栈及主控制器的接口等功能; 而这个蓝牙解决方案则负责执行下堆栈(主控制器接口, 链路管理程序协议, 基带及射频) 其余的功能。并采用摩托罗拉的MCORETM 32 位精简指令集运算
(S ISC) 处理器内核, 内含一个高度灵活的外围设备集, 适用于多种不同的嵌入式蓝牙应用方案。图5 为一个采用摩托罗拉解决方案用于蜂窝式电话的例子。通用异步收发器是连接蜂窝式电话基带处理器与摩托罗拉解决方案的接口, 而SS I 则为语音通讯提供支持。
近年来移动通信、便携式计算机以及因特网的迅速发展, 使人们对电话通信以外的各种数据信息传递的需求日益增长。“蓝牙”技术把各种便携式电脑与蜂窝移动电话用无线电路连接起来, 使计算机与通信更加密切结合起来,使人们能随时随地进行数据信息的交换与传输。
评论
查看更多