蓝牙协议栈实现及HID设备开发_第1页
蓝牙协议栈实现及HID设备开发_第2页
蓝牙协议栈实现及HID设备开发_第3页
蓝牙协议栈实现及HID设备开发_第4页
蓝牙协议栈实现及HID设备开发_第5页
已阅读5页,还剩1页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、蓝牙协议栈实现及HID设备开发92蓝牙协议栈实现及HID设备开发蓝牙协议兢实坝反HID设备开发蔡胜辉朱绣鑫天津大学摘要蓝牙是廉价低功耗无线技术,最初是为了替代设备问的电缆.它已经在很多设备上得到了应用.文章介绍三种不同的蓝牙协议栈实现方式,并以鼠标为例具体介绍蓝牙HID设备的开发.关键词蓝牙协议栈ImplementaryMethodsofBluetoothStackandHII)DeviceDevelopmentCaiShenghuiZhuXiuxinAltractBluetoothisalowcost.low-powertechnologyinitiallyintendedasareplac

2、ementofcablesbetweenelectronicdevices.Ithasbeenusedinmanydevices.Inthispaper,wepresentthreeImplementaryMethodsofBluetoothStack.ThenitwillshowhowwedevelopmenttheBluetoothHI【)Devicese.g.mouse.KeywordsBluetoothprotocolstack1蓝牙协议栈实现方式蓝牙芯片一般都集成有微处理,可以在片内运I眦L2CAPlItCIi一.一jHIcI;厂_西jBa.bndJlBluetoothRadioi行

3、一部分或全部协议.根据芯片完成的协议层次或者说嵌入程度,蓝牙协议栈通常有三种实现方式(参见E23P22),如图1所示.(b)图1第一种方式是标准的双处理器方式,基带,链路管理协议在芯片中实现,而上层协议和应用则在另一个处理器中执行,一般是PC或笔记本电脑,两个处理器的接口是HCI,其物理层是USB或UART.这种方式适合于应用程序较复杂的情况,例如对组网能力要求较高,要求同时连接多个设备完成多种服务等.同时因为芯片完成的协议数量较少,片内微处理器负荷较轻,可以完全实现协议中规定的同时支持7条ACL链路和3条并发的SCO链路的指标.USB适配器就是采用这种工作方式.第二种方式是嵌入式双处理器方式

4、.在芯片中实现基带,LMP,L2CAP,RFCOMVI,SDP协议,上层应用放到外部处理器来执行,这样在外部处理器运算能力有限时,既充分发挥了片内处理器的能力又减轻了复杂应用对外部处理器的负荷.这种方式主要适用于便携设备,它的网络性能较差,只能支持5条ACL链路.支持蓝牙功能的移动电话就是采用这种方式的,它主要是用来连接蓝牙耳机或者蓝牙车载免提,应用比较简单.第三种是典型的完全嵌入式工作方式.把应用程序和所需的协议栈放到芯片中执行,不需要外加处理器就可以形成一个蓝牙设备,根据应用的不同可以设置不同的通信口.这种方式适合于应用程序比较简单,对运算能力要求不太高的情况,一般用于点对点连接或是作为微

5、微网中的从设备.因为片内资源和微处理器的运算能力都有限,在这种方式下目前的芯片只能最多同时支持3条ACL链路.HID设备(键盘,鼠标,游戏杆)就是采用这种方式.2蓝牙HID设备的实现以鼠标为例介绍一下蓝牙HID设备的开发,蓝牙鼠标采用完全嵌入式实现方式,即图1中(c)(下转第94页)94智能车辆定位监控终端此可根据计时值检测脉冲时间长度.若检测到脉冲时间长度为30毫秒,则表示GPRS覆盖区域发生变化.软件流程软件主程序流程如图3所示.GPS数据接收采用串口1的中断方式,单片机每收到一次GPS数据后,获得车辆的位置信息后,根据当前所处位置的GPRS覆盖情况,选择图3软件主程序体流程图SMS或者以

6、UDP协议发送数据.在实验室条件下,对车载终端进行了多次测试:将G18的天线放置在密闭金属容器中来模拟进入非GPRS区域,用示波器测试G18的引脚输出信号,用带有固定IP地址的PC机接收UDP数据,手机接收短信数据.车载设备能够根据GPRS覆盖情况进行相应的数据传送方式切换,运行稳定可靠.参考文献1刘旭,张其善.一种基于GPRS的车辆监控系统J.遥控遥测.2003年1月,P4245,P492MOTOROLA.g18V2.0GPRS/GSM/Engine/ModemIntergrationandApplicationDevelopersGuide.Manualnumber9889293L01.(

7、上接第92页)所示,应用程序采集按键和位置传感器的信息,组成HID报告数据包,通过蓝牙的无线接口传输到USB适配器,再由适配器传送给主机.应用程序运行于芯片中的虚拟机(VM)上,程序的运行主要采用事件调度的方式.图2是鼠标应用的简化了的函数调用过程.初始化请求包括注册服务以备服务发现,初始化与传感器的接口等动作.在主函数发出初始化请求后马上就要调用Sched函数以打开调度器,把控制权交给调度器,此后调度器就根据任务队列来调度程序的运行.函数SchedPioEntryChanged也是一个调度器函数,它专图2门用来调度I/0口输人事件,当I/0有输入操作时这个调度器会调用相应的函数.VM完成初始

8、化请求后会返回HIDINITCFM事件,调度器收到此事件后调用Connect函数,根据历史参数设备进人可被发现模式或主动连接与之对应的USB适配器.连接成功后会返回HIDCONNECTCFM,此时鼠标进人比较稳定的工作状态.当然在工作过程中如果由于某些原因(比如机器重启)造成无线链路的断开,那么当鼠标有移动信息或按键信息时会重新调用Connect函数以重新建立链路.这只是一个简化的工作流程,在实际开发过程中还有很多关键技术和技术细节,例如节能问题,开机启动问题,安全策略等等.节能问题是鼠标的一个关键技术,它直接决定了电池的使用寿命.蓝牙技术本身有三种低功耗模式,为了保证鼠标反应的灵敏性,我们选

9、择sniff(呼吸)模式,通过在程序中编制能量模式表来控制芯片节能模式的参数.下面是经过实验的能量模式表.PowerTable一/mode,interval,time,/pmsniff,20,1,/activeti3de12.5mssniff/pmsniff,40,10,25mssniff'pmsniff,80,50,50mssniff'pmsniff,120,120,/75mssniffpmsniff,240,240,150mssnifft?Ipmsniff,400,240,250mssniff.7pmdisconnect,0,0,/disconnectfinalpowerdown当鼠标活动时处于第一个状态,如果没有移动信息经过设定的时间将依次进人下一个状态,增加呼吸间隔以节省功耗,同时也会增加反应时间,当鼠标移动时会立即回到第一个状态,以保证反应速度.这样既充分考虑鼠标的反应速度,保证使用的舒适度,又尽量增加呼吸间隔节省功耗.经过多个试用者的试用,感觉鼠标的反应速度与普通有线鼠标相当,没有明显的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论