基于HCI协议层的蓝牙通用外接模块的研究开发
目前供应商提供的蓝牙模块大致可分为2类,第1类为只实现了蓝牙链路控制功能的模块,第2类为蓝牙链路控制与嵌入式HCI驱动功能均已实现的模块。这2类模块的主要不同之处在于第2类包括一个RISC(精简指令集计算机)处理器,实现链路控制和HCI功能,而第1类的RISC则不具有HCI功能。在实际应用中,要根据实际情况而选择不同类型的模块。
如果选用集成了链路控制与HCI驱动功能的蓝牙模块,那么就可以在一个比较完整的平台上进行开发。如果主机具有USB或UART接口,在蓝牙模块与主机信号电平兼容的情况下,接口连接可以不需要其它辅助硬件电路。许多情况下,USB或UART接口集成在主机的核心芯片上,所以可以实现蓝牙模块与主机的无缝接口。这种模型下的蓝牙技术应用开发,主要工作集中在蓝牙主机端软件的实现上,包括HCI驱动程序与传输层驱动程序。正是由于这种蓝牙模块实现了嵌入式HCI协议,所以应用开发可以直接从HCI层开始,避免了基带与射频的硬件实现,是一种全软件式的开发模式,开发成果具有很好的可移植性。本文中正是采用了这一开发方案进行的蓝牙通用外接模块的开发。通过封装HCI协议层,可以生成标准的HCI接口函数,为上层的应用开发(在本文指的是蓝牙通用模块)提供一个完整的平台。
制功能的蓝牙模块,由于它不提供HCI传输层接口和嵌入式HCI驱动程序。此时,嵌入式HCI驱动程序的功能将转嫁给主机来实现。这样,与前一种开发模式相比,主机的HCI层驱动程序将变得十分复杂,开发周期也将是比较长的。
4 蓝牙通用外接模块设计开发实例
笔者基于HCI成功地开发了一种在现有的供应商提供的蓝牙模块基础上进行指令重新解释与结构封装的通用外接模块。本模块最终面向基于此通用模块的扩展应用,提供了USB接口、UART/RS232接口、耳机接口、麦克MIC接口、键盘等多种接口,可同时进行数据和语音信息的传输。该通用外接模块既可以单独构成蓝牙应用系统使用,也可以与主机连接使用,使用应用者很方便地借助于蓝牙技术来实现应用产品的无线通讯。
为了对此通用外接模块进行功能测试,在实验开发阶段(本文中对此通用模块说明均是针对开发阶段的),笔者使用了两台PC作为通用外接模块之上的扩展应用的主体,2个通用外接模块分别作为蓝牙piconet中的主、从设备,蓝牙设备通过UART或USB口由PC处接收命令和数据信息,通用外接模块对此信息进行处理后,以无线传输方式将信息发至另一蓝牙设备的应用主体PC处。
下面从硬件和软件两个方面加以介绍,本文论及的设计主要包括蓝牙通用模块及作为扩展应用主体的PC两大部分。
4.1 硬件设计
蓝牙通用模块部分硬件电路主要由语音芯片、微控制器部分(即蓝牙主机部分)及蓝牙模块等组成。硬件结构如图2所示:
其中采用了支持双串口的DALLAS公司生产的DS89C420微控制器作为蓝牙主机,两串口分别与蓝牙模块及构建于通用模块之上的扩展应用的主体进行通信;使用MSM7560L语音芯片;蓝牙模块采用的是Ericsson公司生产的模块,型号为ROK 101 007,属于本文提到的第2类模块,采用ARM7芯片作为RISC处理器。
在硬件实现上,微控制器部分主要由DS89C420微控制器、电源系统、振荡电路、复位电路、接口电平转换电路等几部分组成,微控制单元是核心部分。电平转换电路用于在蓝牙模块与PC通信接口之间进行电平的转换。另外还包括一些不同类型的接口电路、跳线开关电路以及若干状态LED等外围器件,以备建立于通用外接模块之上的扩展应用及通讯状态监测的需要。
4.2 软件设计
4.2.1 PC部分软件设计
PC部分测试程序主要是开发蓝牙应用组件,测试程序运行于Windows操作系统之上,提供了USB和串口驱动程序,应用程序函数接口(API)等,具体可分为PC串口初始化、蓝牙通信参数设定、蓝牙通用外接模块控制、HCI指令封装、数据信息处理等几个部分。
其中第一步要做的工作是初始化计算机串口,串口参数可以根据实际需要进行选择。第二步要进行的是蓝牙模块参数的设定,其中包括蓝牙设备主从设定、蓝牙模块初始化参数的设定、程序监测设定等几部分。以上所有这些动态设定,是通过扩展应用主体(此外为PC)往通用外接模块串口发送公共变量而实现的。当收到参数设定成功消息后,进行下一步,即向通用外接模块串口发送命令消息来实现蓝牙设备的初始化、查询、链接建立过程,在收到通用模块发回的链接建立完成的反馈信息后,即可按一定的格式将数据信息发往通用外接模块接口,完成数据信息的无线传输。
4.2.2 通用外接模块软件设计
通用外接模块一方面从PC方的RS-232串口接收PC端的公共参数信息(用于串口初始化及蓝牙模块参数设定)、命令信息及数据信息,另一方面发送相应的 HCI指令给蓝牙模块ROK 101 007,然后将返回的事件进行分析处理,最终将有关程序状态、通讯数据信息返回给本地PC。软件实现的全部功能是通过C51语言进行开发的,由专用寄存器设置子程序、中断处理程序、定时器中断程序、看门狗程序、链路初始化子程序、链路建立子程序、通信数据处理子程序、断开链路子程序、蓝牙测试子程序等功能块来完成。所有程
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论