1前言
蓝牙是一种全新的无线数据交换技术,他的应用省却了各种数字设备之间需要经过 复杂的软件安装与调试的有线连接过程,做到紧紧咬合、无缝连接,使各种电子设备与家用 电器融为一体,给人们的生活和工作带来全新的感受。
蓝牙技术集成到各种数字设备中的方式有2种:一种是单微控制器方式,即所有的蓝牙低层传输协议(包括蓝牙射频、基带与链路控制器、链路管理器)与高层传输协议(包括逻辑链 路控制与适配协议、服务发现协议、串口仿真协议、网络封装协议等)以及用户应用程序都 集成到一个模块当中,整个处理过程由一个微处理器来完成;另一种是双微控制器方式,即 蓝牙协议与用户应用程序分别由主机和主机控制器来实现(低层传输协议一般通过蓝牙硬件模块实现,模块内部嵌入的微处理器称为主机控制器,高层传输协议和用户应用程序在个人计算机或嵌入的单片机、DSP等上运行,称为主机),主机和主机控制器之间通过标 准的物理总线接口(USB,RS 232等)连接。
在蓝牙的主机-主机控制器连接模型中,主机接口HCI(Host Controller Interface)作为蓝牙软件协议堆栈中软硬件之间的接口,他提供了一个控制基带与链路控制器、链路管理器、状态寄存器等硬件的统一接口。目前,蓝牙HCI传输层的物理接口有通用串行总线USB,串行端口RS 232、通用异步收发器UART等。当主机和主机控制器通信时,HCI层以上的协议 在主机上运行,而HCI层以下的协议由蓝牙主机控制器硬件完成,他们通过HCI传输层进行通信。主机和主机控制器中都有HCI,他们具有相同的接口标准。主机控制器中的HCI解释来自主机的信息并将信息发向相应的硬件模块单元,同时还将模块中的信息(包括数据和硬件/固件信息)根据需要向上转发给主机。如图1所示为蓝牙主机-主机控制器模型。
蓝牙主机-主机控制器模型方案采用了CSR公司的BlueCore2External蓝牙芯片的蓝牙模块、附加模块和对接对象模块来实现蓝牙的USB接口。
2蓝牙模块、附加模块和对接对象模块概述
2.1蓝牙模块
2.1.1BlueCore2External芯片
BlueCore2External是一个单一芯片无线电和基带链路控制器的BlueTooth 2.4 GH z系统,他采用0.18 μmCMOS技术集成了射频、基带和带有全部集成蓝牙协议栈的MCU以 及收发器。工作电源为1.8 V,相对该公司的第一代蓝牙产品BlueCore1提高了内部的RAM(3 2 kB),对扩展的外部FLASH提高到了8 Mb,且能量消耗更低。采用BlueCore2Extern al芯片进行设计减少了外部射频元件的数目,确保产品模块的成本减到最小。装置合并自动校正和建立内部的自我测试程序使发展简单化,类型一致和实现生产测试。所有的硬件和装 置固件都与BlueTooth规格v1.1完全适用。若配合使用包含有CSR蓝牙协议栈的外部闪存,就可以实现数据和语音通信。该芯片除了蓝牙规范v1.1中定义的USB接口和UART接口,以及PCMCODEC音频接口外,还定义了串行外设接口,并行可编程I/O端口和I2C总线接口,这些接口使得编程仿真、调试和测试更加方便,也大大加强了与外部设备的接口能力。该芯片的内部结构如图2所示。
2.1.2MBM29LV800BA90PBT闪存器芯片
MBM29LV800BA90PBT是FUJITSU公司生产的8 Mb闪速存储器。他是通过每8 b1 MB方式或者每16 b512 kB组织起来的,3.3 V单电源供电,具有编程和擦 除功能,可将系统电源需求减到最小,支持JEDEC控制标准,与E2PROM使用相同的控制软件。?
2.2附加模块
附加模块由2块芯片组成即MAX878芯片和XC6209B182MR芯片,这是2块电压转换芯片,主要 为蓝牙模块中的BlueCore2External芯片及闪存芯片MBM29LV800BA90PBT提 供电压。这2块芯片的电压由对接对象模块USB设备提供,由于USB插座均由PC机内部获得5 V电源,而BlueCore2External芯片需1.8 V和3.3 V两种电源,闪存芯片MBM29LV 800BA90PBT需3.3 V单电源,故电压转换芯片需完成由5 V转换到1.8 V和3.3 V。MAX878芯片完成由5 V到3.3 V的转换,XC6209B182MR芯片完成由3.3 V到1.8 V的转换。
2.3对接对象模块USB
USB是由“通用串行总线实施论坛”组织公开发布推广的一种串行接口标准。蓝牙没有为USB 接口开发新的协议,而是使用已有的USB协议。USB接口支持符合蓝牙规范v1.1,可以和其他数字设备兼容通信,USB设备硬件能够以2种方式装入设备中,一种是形状类似于U盘的US B dongle;另一种是集成到电脑的主板上面。具体蓝牙USB接口端点的配置请参考蓝牙规范1.1。
综上所述,具体设计的硬件信号流程如图3所示。
?
3软件程序实现
对于USB硬件驱动程序可以使用微软提供的软件开发包DDK,该软件包为驱动程序开发者提供 了用于开发驱动程序所需的资源文件、编译连接程序、开发技术文档等。蓝牙协议没有为US B接口开发新的协议,而是使用已有的USB协议,限于篇幅,对于USB接口硬件驱动程序部分不 再详述。只着重介绍通过蓝牙HCI传输层USB的物理接口来实现蓝牙连接和数据通信。以VC++6.0为软件开发平台,由于条件所限,只给出点对点的蓝牙连接和通信的程序,至于点对多点的只需对某些参数稍做修改。点对点的软件的流程框图如图4所示。
?
代码如下:
(1) 打开设备,同时要开启HCI事件,HCI ACL,HCI SCO三个从主机控制器返回到主机上的事件的线程:
?
(2) 对本地蓝牙设备配置
通过调用此函数来实现对蓝牙设备的配置,包括连接建立最大的响应时间、寻呼最大响应时间、加密、鉴权、流量控制、读取本地蓝牙设备的名字以及本地蓝牙设备地址BD_ADDR等。
(3) 查询有效范围内的其他蓝牙设备
在查询成功的同时通过HCI事件线程Get_HCI_Event()获取对方蓝牙设备的地址和双方的时钟偏差,这2个是决定在下一步是否能建立ACL连接的关键参数。
(4) 建立ACL连接
在建立ACL连接成功的同时,通过HCI事件线程Get_HCI_Event()获取ACL连接句柄,在以后建立SCO连接以及发送ACL数据都将使用这个句柄来完成相应的操作。
(5) 建立SCO连接
在建立SCO连接成功的同时,通过HCI事件线程Get_HCI_Event()获取SCO连接句柄,在以后进行发送SCO数据时要使用这个句柄来完成相应的操作。
(6) 建立完ACL和SCO连接后,就可以进行ACL和SCO数据发送和接收,通过线程Get_ACL_Data(),Get_SCO_Data()获取ACL和SCO数据
(7) 断开连接
参考文献
[1]Bluetooth SIG Specification of Bluetooth System Version 1. 1[S].2001?
[2]马建仓,罗亚军,赵玉亭.蓝牙核心技术及应用[M].北京:科学出版社,2003?
[3]http://www.csr.comBlueCore2External Product Data Sheet 2004?
[4]宋春荣.通用集成电路速查手册[M].济南:山东科学技术出版社,1995
[5]梁廷贵.现代集成电路实用手册 译码器 编码器 数据选择器 电子开关电源分册[M].北京:科学技术文献出版社,2002