土木在线论坛 \ 电气工程 \ 工业自动化 \ 基于hci协议层的蓝牙通用外接模块的研究开发

基于hci协议层的蓝牙通用外接模块的研究开发

发布于:2007-04-11 16:55:11 来自:电气工程/工业自动化 [复制转发]
摘要:蓝牙是一种短距离无线通信技术。本文从蓝牙协议栈中的HCI层入手,对该层的主要功能和工作机制进行了剖析,进而阐述了基于HCI层的蓝牙应用开发方案,并设计了一个基于蓝牙技术开发的产品实例——蓝牙通用外接模块,最后,还对基于此模块的扩展应用——无线裁判打分系统进行了说明。
关键词:HCI;蓝牙技术;无线通信
1 引言
蓝牙(Bluetooth),是一种短距离无线通信技术,用于替代数字设备牙设备运行在和计算机外设间的电缆连接以及实现数字设备间的无线组网。1998年5月由爱立信、IBM、英特尔、诺基亚、东芝等5家公司成立了蓝牙特殊利益小组(SIG),负责联合制定蓝牙规范。蓝牙工作在向全球统一开放的2.4GHz工业、科学、医学(Industrial Scientific Medical)频段,可以同时传输数据和语音,至多8个活动的蓝牙设备可以共享信道带宽,形成所谓的匹克网(piconet)。在每一个piconet中,有1个为蓝牙主设备,其余7个为从设备,同时可容许有更多的从设备以暂停(park)的方式锁定到主设备。多个picon-
et可以相互重叠。形成散射网(scattern-et)。
SIG所颁布的蓝牙规范就是蓝牙无线通信协议标准,它规定了蓝牙应用应遵循的标准和需要达到的要求,包括核心协议(Core)与应用框架(Profiles)两部分。协议规范部分定义了蓝牙的各层通信协议,遵循开放系统互连参考模型,从低到高地定义了蓝牙协议堆栈的各个层次,如图1所示。
按照蓝牙协议的逻辑功能,协议堆栈由下至上分为三个部分:传输协议、中介协议和应用协议。本文中主机控制接口(HCI)位于传输协议之中,它并不是严格意义上的通信协议,它仅为应用协议堆栈的高层部分提供了一个访问低层传输协议的指令接口。
如果我们从HCI层出发,可以将蓝牙协议堆栈分为硬件与软件2个协议块。硬件部分由射频部分(RF)、基带部分(BB)、链路管理器部分(LM)和HCI固件构成,我们也可以把硬件部分称为蓝牙子系统。软件部分由HCI主机驱动程序、逻辑链路控制适配协议(L2CAP)、串口仿真协议(RFCOMM)、服务发现协议(SDP)、电话控制协议(TCS)及其它应用协议所构成。在蓝牙协议堆栈模型中的虚线部分为对本文中HCI协议层软件的具体划分。
2 HCI协议剖析
在蓝牙协议模型中,HCI软件驱动程序与HCI固件统一归为HCI(主机控制接口),所以要基于HCI进行开发,首先必须了解HCI涉及的具体内容。主机控制接口为蓝牙硬件中基带控制器和链路管理器提供了命令接口,从而实现对硬件状态寄存器和控制寄存器的访问,特别是该接口提供了对蓝牙基带的统一访问模式。HCI分为主机、传输层、主控制器三部分,并在每一层为HCI系统提供不同的功能。本文把HCI协议层划为HCI软件和HCI硬件两部分来加以讨论。
2.1 HCI软件
HCI软件部分可分为HCI固件和HCI驱动两个部分。
HCI固件位于主控制器。HCI固件通过对基带命令、链路管理器命令、硬件状态寄存器、控制寄存器和事件寄存器的访问,实现蓝牙硬件HCI指令。主控制器(Host Controller)意味着具有主控制接口功能的蓝牙器件。
与HCI固件不同,HCI驱动位于主机,即协议模型中的HCI软件驱动部分。若某事件发生,用HCI事件通知主机,而主机将收到HCI事件的异步通知。当主机发现有事件发生时,它将分析收到的事件包并决定何种事件发生。主机端的HCI驱动程序,一方面通过接口被蓝牙应用程序调用(本文所提到的蓝牙应用程序是相对于HCI层而言的,指的是构建于通用外接模块上的扩展应用程序),实现对上层应用的承载;另一方面实现了协议中的HCI功能集,使主机可以向蓝牙子系统发送HCI指令,或接收子系统返回的HCI事件。
2.2 HCI的硬件
  HCI驱动和HCI固件是通过主控制器传输层(位于主控制器与主机之间的中间层)进行通信的,这些中间层和主控制传输层提供了在没有数据描述信息情况下传输数据的能力。在蓝牙规范的描述中,蓝牙子系统与主机之间共有3类数据转移的方式、每一种数据在硬件接口均具有一定的封装格式,分别是由3种传输层支持,分别为UART/RS232和USB。采用不同的主控制器传输层对主机所接收的HCI事件异步通知不会产生影响。

全部回复(2 )

只看楼主 我来说两句抢地板
  • 会飞的海豚
    至此,通用外接模块开发实验阶段软件设计完成,通过测试本模块完全达到了预期的要求,数据传输正常,性能良好。
    本封装模块之所以被加以“通用”二字来界定,是因为本模块在功能上很好地做到了以下几点:
    (1)本模块提供了对多种扩展应用接口的支持,包括UART/USB以及语音传输接口。
    (2)本模块既支持以MPC为扩展应用主体的计算机上的扩展应用,又支持以MCU为扩展主体的控制器件上的扩展应用;
    (3)本模块提供对多种操作系统的支持,目前为止,支持Windows95/98/2000/
    xp及Linux操作系统。
    5 一种构建于通用外接模块之上无线通讯扩展应用——裁判系统
    目前,在很多大型赛事中比赛所采用的裁判打分系统大都是采用有缆连接的方式进行的,各位裁判将各自的评定的比赛成绩通过有线的电缆传输到主控机上进行综合评定,然后产生最终的结果。但这一系统存在着一个很明显的不足之外,就是有缆连接所带来的不便性,而通过采用笔者所设计的通用外接模块后, 通过在通用外接模块的基础上相应地增加LCD、键盘和MCU后,只要对外加的MCU进行简单的编程既可实现裁判打分系统的无线通讯化。
    日前,笔者参与设计的蓝牙无线打分系统已被成功地用于很多大型比赛之中。 
    6 结束语
    蓝牙产品的开发重在有特色的应用,在通用模块的基础上进行外围设备的开发和上层软件的编写,可以大大地缩短产品的开发周期,为各种蓝牙应用奠定了基础,从而方便地实现产品的蓝牙无线通讯,使人们摆脱各种线缆的束缚。目前基于蓝牙技术的产品开发,正在短距离无线通信中显示出一股强劲的势头,蓝牙技术的大发展期必将很快的到来。
    2007-04-11 16:58:11

    回复 举报
    赞同0
  • 会飞的海豚
    3 蓝牙应用开发方案
    在图1中所提到的主机是一个广义的概念,可以是以MPU为核心的计算机、也可以是以MCU为核心的控制电路,二者用途各异。其中以MCU为核心的控制电路适用于嵌入式应用开发,而以MPU为核心的计算机则适合于人机接口的软件开发。
    蓝牙协议为建立于蓝牙技术之上的多种应用提供了完整的解决办法,但对于不同应用一般只用到蓝牙协议中的某几个,而且对于每部分协议也不用它所提供的全部功能。进而,在蓝牙应用开发中可以从不同的协议层入手。在开发蓝牙系统时,一般采用两种方式进行开发,一种是采用只提供无线接口的简单模块,从蓝牙子系统做起,再针对应用自行开发主芯片,该主芯片包括从基带层到应用层的完整蓝牙协议栈,这种开发方式较为复杂,但不一定需要HCI层;另一种方法是购买由供应商提供的完整的蓝牙模块,这些模块实现了蓝牙子系统的全部或部分功能,屏蔽了射频和基带两个硬件协议层,可以直接在HCI基础上进行开发。
    目前供应商提供的蓝牙模块大致可分为2类,第1类为只实现了蓝牙链路控制功能的模块,第2类为蓝牙链路控制与嵌入式HCI驱动功能均已实现的模块。这2类模块的主要不同之处在于第2类包括一个RISC(精简指令集计算机)处理器,实现链路控制和HCI功能,而第1类的RISC则不具有HCI功能。在实际应用中,要根据实际情况而选择不同类型的模块。
    如果选用集成了链路控制与HCI驱动功能的蓝牙模块,那么就可以在一个比较完整的平台上进行开发。如果主机具有USB或UART接口,在蓝牙模块与主机信号电平兼容的情况下,接口连接可以不需要其它辅助硬件电路。许多情况下,USB或UART接口集成在主机的核心芯片上,所以可以实现蓝牙模块与主机的无缝接口。这种模型下的蓝牙技术应用开发,主要工作集中在蓝牙主机端软件的实现上,包括HCI驱动程序与传输层驱动程序。正是由于这种蓝牙模块实现了嵌入式HCI协议,所以应用开发可以直接从HCI层开始,避免了基带与射频的硬件实现,是一种全软件式的开发模式,开发成果具有很好的可移植性。本文中正是采用了这一开发方案进行的蓝牙通用外接模块的开发。通过封装HCI协议层,可以生成标准的HCI接口函数,为上层的应用开发(在本文指的是蓝牙通用模块)提供一个完整的平台。
    2007-04-11 16:57:11

    回复 举报
    赞同0

工业自动化

返回版块

17.92 万条内容 · 351 人订阅

猜你喜欢

阅读下一篇

in多链路远程接入方案的探讨

摘要 本文对当前各个企事业单位园区网通过多条链路接入到INTERNET过程中所遇到的问题做出了详尽的分析,并针对不同的接入方式提出了一些具体的解决办法。关键词 多链路 ISP BGP HSRP ARP 基于计算机网络的应用在快速发展,各企事业单位对其INTERNET接入线路的带宽以及性能的要求越来越高,这使得大多数企事业单位都对原来的INTERNET接入方案做出了相应的调整。有的为增加出口带宽而增加多条INTERNET接入线路,有的为增加接入线路的容错能力而增加多条INTERNET接入线路;但在调整过程中很多企业都遇到当采用多条线路接入到INTERNET,尤其是通过多个不同的ISP接入INTERNET时,如何进行负载均衡,以及如何进行容错等难以解决的问题。

回帖成功

经验值 +10