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

蓝牙HCI协议一、引言蓝牙(Bluetooth)是一种无线通信技术,用于在短距离范围内传输数据和连接不同设备。
蓝牙核心规范定义了蓝牙协议栈的不同层次,其中包括蓝牙主机控制器接口(HCI)协议。
本协议旨在规定蓝牙主机控制器和主机之间的通信接口和协议。
二、定义1. 蓝牙主机控制器(Host Controller):指蓝牙设备中负责控制和管理蓝牙无线通信的硬件和软件组件。
2. 蓝牙主机(Host):指蓝牙设备中负责控制和管理蓝牙主机控制器的软件组件。
3. HCI层(Host Controller Interface):指蓝牙主机控制器与主机之间的通信接口。
4. HCI命令(HCI Command):指主机通过HCI层向主机控制器发送的指令。
5. HCI事件(HCI Event):指主机控制器通过HCI层向主机发送的事件通知。
三、通信接口1. 电气接口蓝牙主机控制器与主机之间的电气接口应符合蓝牙核心规范中定义的要求。
常见的电气接口包括UART、USB和SPI等。
2. 传输协议蓝牙主机控制器与主机之间的传输协议应遵循蓝牙核心规范中定义的要求。
常见的传输协议包括HCI UART Transport Layer Protocol、HCI USB Transport Layer Protocol和HCI SPI Transport Layer Protocol等。
四、HCI命令和事件1. HCI命令格式HCI命令由命令代码和参数组成。
命令代码用于标识具体的命令类型,参数用于传递命令所需的数据。
HCI命令格式应符合蓝牙核心规范中定义的要求。
2. HCI事件格式HCI事件由事件代码和参数组成。
事件代码用于标识具体的事件类型,参数用于传递事件相关的数据。
HCI事件格式应符合蓝牙核心规范中定义的要求。
3. HCI命令和事件的传输主机通过HCI层向主机控制器发送HCI命令,主机控制器通过HCI层向主机发送HCI事件。
HCI命令和事件的传输应遵循蓝牙核心规范中定义的要求。
基于单片机的蓝牙加密密码锁的设计

基于单片机的蓝牙加密密码锁的设计魏平俊;杨洁;胥浩阳【摘要】针对电子密码锁安全性及易用性差等问题,设计了一种以STC89C52单片机为核心,通过HC-06蓝牙模块与安卓手机连接,实现随机密码加密的密码锁.利用单片机自身的EEPROM存储数据,通过E0加密算法对数据进行保护,实现了手机对密码锁的控制.实验表明,蓝牙加密密码锁可以实现随机密码功能,具有安全性高、使用方便、价格低廉等特点.【期刊名称】《中原工学院学报》【年(卷),期】2018(029)006【总页数】5页(P66-69,74)【关键词】蓝牙;单片机;密码锁;E0加密;随机密码【作者】魏平俊;杨洁;胥浩阳【作者单位】中原工学院电子信息学院,河南郑州450007;中原工学院电子信息学院,河南郑州450007;郑州工业应用技术学院信息工程学院,河南新郑451100【正文语种】中文【中图分类】TP273随着社会的进步和科技的发展,人们的安全意识越来越强,传统的机械锁已不能满足人们的需要。
电子密码锁因其操作简单、密码可变、误码保护等特点,成为密码锁的主流产品,并得以迅速推广。
但有些产品密码键盘外露,易被破解;有些产品需携带遥控器、卡片等,安全性和易用性较差。
蓝牙是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换,并可通过密码算法对数据进行处理,安全性得到极大提升。
本文设计了一种蓝牙加密密码锁,系统以STC89C52单片机为主控模块,运用蓝牙技术实现安卓手机和密码锁的通信,在单片机编程的基础上,通过蓝牙地址配对、算法加密、密码校验等技术,实现了随机密码功能。
用户只需携带手机即可实现自由密码修改,安全性和便捷性大大提高。
1 系统总体方案1.1 系统流程系统包括智能手机端和单片机端。
其中,手机端采用安卓系统自带的蓝牙模块;单片机端采用STC公司生产的高性能芯片STC89C52作为中央处理器[1],基于HCI 协议层的开发方式,用HC-06蓝牙模块实现密码信息的无线传输。
蓝牙HCI协议

蓝牙HCI协议协议名称:蓝牙HCI协议一、引言蓝牙(Bluetooth)是一种无线通信技术,用于在短距离范围内传输数据。
蓝牙主机控制器接口(HCI)协议定义了主机和主机控制器之间的接口规范,以实现蓝牙设备之间的通信。
二、目的本协议的目的是确保蓝牙主机和主机控制器之间的有效通信,并规范了数据传输、命令和事件等方面的要求。
三、范围本协议适用于所有蓝牙设备的主机和主机控制器之间的通信。
四、术语和定义4.1 蓝牙主机:指能够与其他蓝牙设备进行通信的设备。
4.2 主机控制器:指蓝牙主机内部的控制单元,负责处理蓝牙通信的物理和链路层。
4.3 数据包:指在蓝牙通信中传输的数据单元。
4.4 命令:指主机向主机控制器发送的指令,用于控制和配置主机控制器。
4.5 事件:指主机控制器向主机发送的通知,用于报告状态和传输结果等信息。
五、协议规范5.1 数据传输5.1.1 数据包格式数据包由帧头、有效载荷和帧尾组成。
帧头包含同步字节和帧类型字段,帧尾包含校验和字段。
5.1.2 数据包传输速率数据包的传输速率应符合蓝牙技术规范中的要求。
5.2 命令5.2.1 命令格式命令由命令字节和参数字段组成。
命令字节用于标识命令类型,参数字段用于传递命令参数。
5.2.2 命令执行主机控制器应按照命令字节的定义执行相应的操作,并返回执行结果。
5.3 事件5.3.1 事件格式事件由事件字节和参数字段组成。
事件字节用于标识事件类型,参数字段用于传递事件参数。
5.3.2 事件处理主机应根据事件字节的定义对事件进行相应的处理。
六、协议接口6.1 主机控制器接口主机控制器接口应包括数据传输接口、命令接口和事件接口,以实现主机与主机控制器之间的通信。
6.2 主机接口主机接口应包括命令接口和事件接口,以实现主机对主机控制器的控制和事件处理。
七、测试要求7.1 数据传输测试应对数据包的格式、传输速率和数据完整性进行测试,确保数据的正确传输。
7.2 命令测试应对命令的格式、参数和执行结果进行测试,确保命令的正确执行。
基于MCU实现蓝牙与PC机之间HCI层传输

基于MCU实现蓝牙与PC机之间HCI层传输摘要:分析了蓝牙HCI层的主要功能,并简述了蓝牙HCI层数据传输的单片机控制方案。
HCI指令从RS232串口通过单片机的UART输入,经校验后发送至蓝牙模块,蓝牙模块返回的HCI事件在单片机内进行分组打包后发送至PC机。
关键词:蓝牙协议HCI 单片机 UART蓝牙模块蓝牙是正在兴起的短距离无线通信技术,工作在2.4GHz ISM频段。
蓝牙技术可在各种移动设备、计算机外设等数字设备间实现廉价的无线连接,灵活便捷地实现设备间的数据交换。
本文介绍利用双串口单片机在PC机与蓝牙模块间实现蓝牙HCI层数据传输。
1 系统的硬件组成采用爱立信生产的ROK 101 007蓝牙模块,使用51增强型单片机W77E58,用MAX3222进行RS232转换。
系统硬件框图如图1所示。
ROK 101 007蓝牙模块同时支持数据和语音传输。
主机与模块间可以通过UART和I2C接口连接,射频输出功率等级为2级(2.5mW),支持点对多点连接。
W77E58单片机与标准80C52管脚兼容,指令集与MCS-51兼容,具有两个全双工串口,12个中断源,32KB大容量Flash存储器,1KB片上SRAM。
2 蓝牙主机控制器接口(HCI)HCI层是蓝牙协议栈中软硬件之间的接口,它提供了一个控制基带与链路控制器、链路管理器、状态寄存器等硬件的统一接口。
HCI层以下的协议由蓝牙模块实现,HCI层以上的协议在主机上运行,它们通过HCI传输层进行通信。
主机与主机控制器通过HCI收发分组方式进行信息交换,用指令—应答(Command-Response)方式实现控制。
HCI分组有三种类型:指令分组(Command Packet)、事件分组(Event Packet)和数据分组(Data Packet)。
指令分组只从主机发向主机控制器;事件分组只从主机控制器发向主机,用以说明指令分组的执行情况;数据分组在主机和主机控制器间双向传输。
蓝牙HCI协议

蓝牙HCI协议协议名称:蓝牙HCI协议一、引言蓝牙HCI(Host Controller Interface)协议是蓝牙技术中用于主机和控制器之间通信的标准接口协议。
该协议定义了主机和控制器之间的通信协议、命令格式、事件格式等,以实现蓝牙设备的控制和管理。
本协议的目的是确保蓝牙设备之间的互操作性和通信的稳定性。
二、范围本协议适用于所有支持蓝牙技术的设备,包括但不限于蓝牙手机、蓝牙耳机、蓝牙音箱等。
三、术语定义1. HCI:Host Controller Interface,主机控制器接口。
2. 主机:蓝牙设备中控制和管理其他设备的部分。
3. 控制器:蓝牙设备中负责无线通信的部分。
4. 命令:主机向控制器发送的指令。
5. 事件:控制器向主机发送的通知。
四、协议规范1. HCI命令格式HCI命令由多个字段组成,包括命令代码、命令参数等。
命令格式如下: - 命令代码:16位无符号整数,用于表示具体的命令。
- 命令参数:根据具体命令的要求,可以包含零个或多个参数。
2. HCI事件格式HCI事件由多个字段组成,包括事件代码、事件参数等。
事件格式如下:- 事件代码:8位无符号整数,用于表示具体的事件。
- 事件参数:根据具体事件的内容,可以包含零个或多个参数。
3. HCI命令与事件的交互主机通过发送HCI命令给控制器,控制器接收并处理这些命令,并通过HCI 事件将执行结果返回给主机。
4. HCI命令与事件的分类HCI命令和事件根据功能可以分为多个类别,如蓝牙设备控制、链路管理、数据传输等。
5. HCI命令与事件的错误处理当控制器接收到无法处理的命令时,应发送一个错误事件给主机,主机收到错误事件后应根据错误类型进行相应处理。
6. HCI命令与事件的扩展针对特定的应用需求,可以通过扩展HCI命令和事件的格式和功能来满足更多的需求。
五、实施细则1. 设备厂商应按照蓝牙SIG(Special Interest Group)的规定,实现蓝牙HCI协议的相关功能,并确保其兼容性和稳定性。
蓝牙HCI协议

蓝牙HCI协议协议名称:蓝牙HCI协议一、引言蓝牙HCI(Host Controller Interface)协议是用于蓝牙设备之间进行通信的标准协议。
该协议定义了蓝牙设备的物理层、链路层和传输层之间的接口,使得不同厂商的蓝牙设备可以进行互操作。
本协议旨在确保蓝牙设备之间的无线通信的可靠性、安全性和互操作性。
二、范围本协议适用于所有支持蓝牙技术的设备,包括但不限于蓝牙手机、蓝牙耳机、蓝牙音箱、蓝牙键盘、蓝牙鼠标等。
三、术语和定义1. HCI:Host Controller Interface,即主机控制器接口,用于连接主机和蓝牙控制器。
2. 蓝牙设备:指支持蓝牙技术的任何设备。
3. 物理层:指蓝牙设备的无线通信硬件。
4. 链路层:指蓝牙设备之间的链路管理和数据传输。
5. 传输层:指蓝牙设备之间的数据传输和控制。
四、物理层接口1. 物理层接口定义a. 蓝牙设备的物理层接口应符合蓝牙核心规范的要求。
b. 物理层接口应支持蓝牙设备之间的无线通信。
2. 物理层接口规范a. 物理层接口应支持蓝牙设备的功率控制。
b. 物理层接口应支持蓝牙设备的频率跳频。
c. 物理层接口应支持蓝牙设备的调制解调器控制。
五、链路层接口1. 链路层接口定义a. 蓝牙设备的链路层接口应符合蓝牙核心规范的要求。
b. 链路层接口应支持蓝牙设备之间的链路管理和数据传输。
2. 链路层接口规范a. 链路层接口应支持蓝牙设备的设备发现和连接建立。
b. 链路层接口应支持蓝牙设备的链路管理和维护。
c. 链路层接口应支持蓝牙设备之间的数据传输和控制。
六、传输层接口1. 传输层接口定义a. 蓝牙设备的传输层接口应符合蓝牙核心规范的要求。
b. 传输层接口应支持蓝牙设备之间的数据传输和控制。
2. 传输层接口规范a. 传输层接口应支持蓝牙设备的数据包封装和解封装。
b. 传输层接口应支持蓝牙设备的数据流控制和差错校验。
c. 传输层接口应支持蓝牙设备之间的数据传输和控制。
蓝牙HCI传输层流量控制的研究
tec re te so te rt a ay i. h orcn s f oei l lss h c a n Ke r s bu toh HCI a s ot a e; fo c n o c a i ; fo c n o e fr a c ywo d : leo t; n p r y r l w o t l r t l r me h ns m l w o t l ro r p m ne
,
n lss o th a ay i b u e d lsgv n amah maia r l ac lt gf w o to e o a c rsne a da o dt ne p e s n a t mo e ie , te tc lo mu a luai o c n l r r n eip ee td n n io x rsi i f c n l r pf m s c i o
Ab ta t Ac odn o - if w o t l c a im, o c n o d l a e nHCI sr c: c r igt s p wat o c nr h ns af w o t l ot l o me l r mo e s do b UARTi o s u td e a t ef r n c c n t ce x cl p ro ma e s r y
维普资讯
第 2 卷 第 2 7 3期
Vo . 7 12 N O. 3 2
计 算 机 工 程 与 设 计
Co ue gn e iga d De i n mp trEn ie rn n sg
20 年 l月 06 2
De .2 06 c 0
,
o o t l efr a c r p sd whc a r o tn efr e raigb te e ke e t f f pi ro n ei po o e , ma p m s ihh s moei mp ra c o ce sn ot n c f c HCI d l o UARTlw a drt dice . o b u ea ra a n n sn le o t a s otse d F r e oeae lt ot r b u o c n o e o a c n lssid v lp d wh c d c t s igbu oht n p r p e . u t r r muaes fwaea o t w o t l r r n ea ay i e eo e t r hm l f r pf m s ih i i ae n
HCI重要
一、HCI在蓝牙软件协议模型位置的分析蓝牙系统的协议模型如图1所示。
从图中可以看出,HCI是位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和LMP(链路管理协议)层之间的一层协议。
HCI为上层协议提供了进入LM的统一接口和进入基带的统一方式。
在HCI的主机(Host)和HCI主机控制器(Host Controller)之间会存在若干传输层,这些传输层是透明的,只需完成传输数据的任务,不必清楚数据的具体格式。
目前,蓝牙的SIG规定了四种与硬件连接的物理总线方式:USB、RS232、UART和PC卡。
其中通过RS232串口线方式进行连接具有差错校验。
HCI层的底层层协议如图2所示。
由图可看出,HCI层屏蔽了基带,为协议层的上层提供了进入基带的统一方式。
二、HCI与基带通信方式的研究与分析蓝牙系统的底层协议通信如图3所示。
下面结合图3对蓝牙系统中HCI层与基带间的通信作一些分析研究。
1.通信方式的分析HCI是通过包的方式来传送数据、命令和事件的,所有在主机和主机控制器之间的通信都以包的形式进行。
包括每个命令的返回参数都通过特定的事件包来传输。
HCI有数据、命令和事件三种包,其中数据包是双向的,命令包只能从主机发往主机控制器,而事件包始终是主机控制器发向主机的。
主机发出的大多数命令包都会触发主机控制器产生相应的事件包作为响应。
命令包分为六种类型:* 链路控制命令;* 链路政策和模式命令;* 主机控制和基带命令;* 信息命令;* 状态命令;* 测试命令。
事件包也可分为三种类型:* 通用事件,包括命令完成包(Command Complete)和命令状态包(Command Status);* 测试事件;* 出错时发生的事件,如产生丢失(Flush Occured)和数据缓冲区溢出(DataBuffer Overflow)。
数据包则可分为ACL和SCO的数据包。
包的格式如图4所示。
2.包的参数分析研究命令包:命令包中的OCF(OpcodeCommandField)和OGF(OpcodeGroupField)是用于区分命令种的。
基于手机控制的智能家居系统研究与设计
技术创新杜守理:学士基于手机控制的智能家居系统研究与设计The Research and Design of An Aptitude Home Control System Based on Mobile Phone(西北农林科技大学)杜守理徐杨DU Shou-li XU Yang摘要:本文研究以手机作为遥控器,采用蓝牙技术控制智能家电的嵌入式控制系统。
本系统以ARM 11作为后台服务和控制器,前台客户端程序基于手机蓝牙J2ME 技术,研究了后台服务和控制器搭建过程以及蓝牙手机、控制器和智能家电体系结构,设计和实现了J2ME 蓝牙远程通讯,包括CGI 视频摄像头控制、基于L2CAP 协议的蓝牙视频传输、各类传感器测控等方面。
测试结果表明,系统功能符合设计要求,能够实现蓝牙控制智能家电。
关键词:手机蓝牙;L2CAP 协议;J2ME 程序设计;CGI 技术;蓝牙视频传输中图分类号:TP302.1文献标识码:AAbstract:This paper study of using mobile phones as a remote controller,the control of the intelligent home appliances use Blue -tooth technology based on embedded control system.This system uses ARM 11as the background service and controller,the client program based on mobile Bluetooth J2ME Programming.A detailed description of the background services and the building process of controller;Bluetooth phones,controller and intelligent home appliance system structure,designs and achieves J2ME Bluetooth remote communication,including video camera control based on CGI control technology,Bluetooth video transmission based on L2CAP com -munication protocol,the measurement and control of all kinds of sensors,etc.Test results show that the system fit with function with design requirements,is able to realize the Bluetooth control intelligent home appliances.Key words:Mobile Bluetooth;L2CAP protocol;J2ME Programming;CGI technology;Bluetooth video transmission文章编号:1008-0570(2012)10-0087-041引言蓝牙是一种支持设备短距离通信(一般10m 内)的无线电技术,蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信。
基于蓝牙HCI实现单片机与PC间无线通信
...role, flage...
u8 state u16 c_handle u8 remote_bd_addr[6]
图 4 核心数据结构图
建链请求, 如果接受请求, 则继续等待建链成功, 获 得一个连接句柄, 从而进行数据交换, 若本地蓝牙作 主设备, 则通过一系列主动查询, 建链, 发送数据, 断 链等操作。处理数据就是将数据显示在与单片机相 连的 LCD 上等一系列后续操作。
3.1 单片机端 单片机端采用 C8051F120 通过 UART 连接爱立
信蓝牙模块 ROK 101 008。 C8051F120 是 Cygnal 公 司 的 一 种 与 8051 兼 容
的高速 SOC 单片机, 扩充了许多数字和模拟外围电 路, 具有 8K 的 RAM 以及 128K 的 FLASH, 可以提供 足够的存储空间来存储程序和处理数据。
系统初始化
蓝牙初始化
NO 是否作主设备
YES 查询 NO 附近是否有蓝牙设备
YES
NO 是否有连接请求
YES
请求连接 NO
连接请求是否通过 YES
创建 ACL 连接
NO 连接建立是否成功 YES
接受连接
NO 连接建立是否成功
YES
图 3 单片机端程序流程图
中国新通信( 技术版) 2008.5
是否有断链请求 YES
爱立信的蓝牙模块 ROK 101 008 集成了射频单 元和基带控制器, 提供了多种 HCI(主机控制器接口) 传输层接口, 在此使用 UART 传输层接口。
此外, 为配合实验, 单片机外接了 8 个按键和一 个液晶, 不是本文重点, 不再赘述。 3.2 PC 端
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于HCI协议层的蓝牙通用外接模块的研究开发<DIVid=content><scriptsrc="/mx/baid.js"><DIVid=viewad><scriptsrc="/a/lw.js">摘要:蓝牙是一种短距离无线通信技术。
本文从蓝牙协议栈中的HCI层入手,对该层的主要功能和工作机制进行了剖析,进而阐述了基于HCI层的蓝牙应用开发方案,并设计了一个基于蓝牙技术开发的产品实例——蓝牙通用外接模块,最后,还对基于此模块的扩展应用——无线裁判打分系统进行了说明。
关键词:HCI;蓝牙技术;无线通信1引言蓝牙(Bluetooth),是一种短距离无线通信技术,用于替代数字设备牙设备运行在和计算机外设间的电缆连接以及实现数字设备间的无线组网。
1998年5月由爱立信、IBM、英特尔、诺基亚、东芝等5家公司成立了蓝牙特殊利益小组(SIG),负责联合制定蓝牙规范。
蓝牙工作在向全球统一开放的2.4GHz工业、科学、医学(IndustrialScientificMedical)频段,可以同时传输数据和语音,至多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协议层软件的具体划分。
2HCI协议剖析在蓝牙协议模型中,HCI软件驱动程序与HCI固件统一归为HCI(主机控制接口),所以要基于HCI进行开发,首先必须了解HCI涉及的具体内容。
主机控制接口为蓝牙硬件中基带控制器和链路管理器提供了命令接口,从而实现对硬件状态寄存器和控制寄存器的访问,特别是该接口提供了对蓝牙基带的统一访问模式。
HCI分为主机、传输层、主控制器三部分,并在每一层为HCI系统提供不同的功能。
本文把HCI协议层划为HCI软件和HCI硬件两部分来加以讨论。
2.1HCI软件HCI软件部分可分为HCI固件和HCI驱动两个部分。
HCI固件位于主控制器。
HCI固件通过对基带命令、链路管理器命令、硬件状态寄存器、控制寄存器和事件寄存器的访问,实现蓝牙硬件HCI指令。
主控制器(HostController)意味着具有主控制接口功能的蓝牙器件。
与HCI固件不同,HCI驱动位于主机,即协议模型中的HCI软件驱动部分。
若某事件发生,用HCI事件通知主机,而主机将收到HCI事件的异步通知。
当主机发现有事件发生时,它将分析收到的事件包并决定何种事件发生。
主机端的HCI驱动程序,一方面通过接口被蓝牙应用程序调用(本文所提到的蓝牙应用程序是相对于HCI层而言的,指的是构建于通用外接模块上的扩展应用程序),实现对上层应用的承载;另一方面实现了协议中的HCI功能集,使主机可以向蓝牙子系统发送HCI指令,或接收子系统返回的HCI事件。
2.2HCI的硬件HCI驱动和HCI固件是通过主控制器传输层(位于主控制器与主机之间的中间层)进行通信的,这些中间层和主控制传输层提供了在没有数据描述信息情况下传输数据的能力。
在蓝牙规范的描述中,蓝牙子系统与主机之间共有3类数据转移的方式、每一种数据在硬件接口均具有一定的封装格式,分别是由3种传输层支持,分别为UART/RS232和USB。
采用不同的主控制器传输层对主机所接收的HCI事件异步通知不会产生影响。
蓝牙应用开发方案在图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接口函数,为上层的应用开发(在本文指的是蓝牙通用模块)提供一个完整的平台。
制功能的蓝牙模块,由于它不提供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公司生产的模块,型号为ROK101007,属于本文提到的第2类模块,采用ARM7芯片作为RISC处理器。
在硬件实现上,微控制器部分主要由DS89C420微控制器、电源系统、振荡电路、复位电路、接口电平转换电路等几部分组成,微控制单元是核心部分。
电平转换电路用于在蓝牙模块与PC通信接口之间进行电平的转换。
另外还包括一些不同类型的接口电路、跳线开关电路以及若干状态LED等外围器件,以备建立于通用外接模块之上的扩展应用及通讯状态监测的需要。
4.2软件设计4.2.1PC部分软件设计PC部分测试程序主要是开发蓝牙应用组件,测试程序运行于Windows操作系统之上,提供了USB和串口驱动程序,应用程序函数接口(API)等,具体可分为PC串口初始化、蓝牙通信参数设定、蓝牙通用外接模块控制、HCI指令封装、数据信息处理等几个部分。
其中第一步要做的工作是初始化计算机串口,串口参数可以根据实际需要进行选择。
第二步要进行的是蓝牙模块参数的设定,其中包括蓝牙设备主从设定、蓝牙模块初始化参数的设定、程序监测设定等几部分。
以上所有这些动态设定,是通过扩展应用主体(此外为PC)往通用外接模块串口发送公共变量而实现的。
当收到参数设定成功消息后,进行下一步,即向通用外接模块串口发送命令消息来实现蓝牙设备的初始化、查询、链接建立过程,在收到通用模块发回的链接建立完成的反馈信息后,即可按一定的格式将数据信息发往通用外接模块接口,完成数据信息的无线传输。
4.2.2通用外接模块软件设计通用外接模块一方面从PC方的RS-232串口接收PC端的公共参数信息(用于串口初始化及蓝牙模块参数设定)、命令信息及数据信息,另一方面发送相应的HCI指令给蓝牙模块ROK101007,然后将返回的事件进行分析处理,最终将有关程序状态、通讯数据信息返回给本地PC。
软件实现的全部功能是通过C51语言进行开发的,由专用寄存器设置子程序、中断处理程序、定时器中断程序、看门狗程序、链路初始化子程序、链路建立子程序、通信数据处理子程序、断开链路子程序、蓝牙测试子程序等功能块来完成。