bluetooth协议架构详解与android-课件_第1页
bluetooth协议架构详解与android-课件_第2页
bluetooth协议架构详解与android-课件_第3页
bluetooth协议架构详解与android-课件_第4页
bluetooth协议架构详解与android-课件_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

蓝牙模块相关知识交流蓝牙模块相关知识交流1概述蓝牙技术的特点

蓝牙协议体系结构AndroidBluetooth架构概述2概述“蓝牙”是一种开放的技术规范,它可在世界上的任何地方实现短距离的无线语音和数据通信。蓝牙技术的发展:1994年,爱立信移动通信公司开始研究在移动电话及其附件之间实现低功耗、低成本无线接口的可行性。随着项目的进展,爱立信公司意识到短距无线通信的应用前景无限广阔。(Short

Distance

Wireless

Communication)概述“蓝牙”是一种开放的技术规范,它可在世界上的任何地方3

爱立信将这项新的无线通信技术命名为蓝牙(Bluetooth)。Bluetooth取自10世纪丹麦国王Harald

Bluetooth

的名字。

1998年5月,爱立信联合诺基亚(Nokia)、英特尔(Intel)、IBM

、东芝(Toshiba)这4家公司一起成立了蓝牙特别兴趣小组(Special

Interest

Group,SIG),负责蓝牙技术标准的制定、产品测试,并协调各国蓝牙的具体使用。目前SIG已经采纳蓝牙4.0核心规范技术拥有极低的运行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。同时还拥有低成本,跨厂商互操作性,3毫秒低延迟、100米以上超长距离、AES-128加密等诸多特色,可以用于计步器、心律监视器、智能仪表、传感器物联网等众多领域,大大扩展蓝牙技术的应用范围。 爱立信将这项新的无线通信技术命名为蓝牙(Bluetooth4蓝牙技术的特点

蓝牙是一种短距无线通信的技术规范,它最初的目标是取代现有的掌上电脑、移动电话等各种数字设备上的有线电缆连接。

(1)全球范围适用:蓝牙工作在2.4GHz的

ISM频段,全球大多数国家ISM频段的范围是2.4-2.4835GHz,使用该频段无需向各国的无线电资源管理部门申请许可证。(2)同时可传输语音和数据:蓝牙采用电路交换和分组交换技术,支持异步数据信道、三路语音信道以及异步数据与同步语音同时传输的信道。每个语音信道数据速率为64kbit/s,语音信号编码采用脉冲编码调制(PCM)或连续可变斜率增量调制(CVSD)方法。蓝牙有两种链路类型:异步无连接(ACL)链路和同步面向连接(SCO)链路。蓝牙技术的特点蓝牙是一种短距无线通信的技术规范,它最初的目5(3)可以建立临时性的对等连接:

根据蓝牙设备在网络中的角色,可分为主设备(Master)与从设备(Slave)。主设备是组网连接主动发起连接请求的蓝牙设备,几个蓝牙设备连接成一个皮网(Piconet)时,其中只有一个主设备,其余的均为从设备。皮网是蓝牙最基本的一种网络形式,最简单的皮网是一个主设备和一个从设备组成的点对点的通信连接。(4)具有很好的抗干扰能力:工作在ISM频段的无线电设

备有很多种,如家用微波炉、无线局域网(WLAN)HomeRF

等产品,蓝牙采用跳频(Frequency

Hopping)方式来扩展

频谱,将2.402~2.48GHz频段分成79个频点,相邻频点间

隔1MHz。抵抗来自这些设备的干扰。(3)可以建立临时性的对等连接:6(5)蓝牙模块体积很小、便于集成。(6)低功耗:

蓝牙设备在通信连接(Connection)状态下,有四种工作模式:激活(Active)模式、呼吸(Sniff)模式、保持(Hold)模式、休眠(Park)模式。Active

模式是正常的工作状态,另外三种模式是为了节能所规定的低功耗模式。(7)开放的接口标准:SIG为了推广蓝牙技术的使用,将蓝牙的技术标准全部公开,全世界范围内的任何单位和个人都可以进行蓝牙产品的开发,只要最终通过SIG的蓝牙产品兼容性测试,就可以推向市场。(8)成本低:随着市场需求的扩大,各个供应商纷纷推出自己的蓝牙芯片和模块,蓝牙产品价格飞速下降。

(5)蓝牙模块体积很小、便于集成。7蓝牙移动终端移动电话(MobilePhone),

无绳电话(CordlessPhone),

笔记本电脑(Notebook),

个人数字助理(PDA),

数字相机(Digitalcameras),

打印机(Printer),

局域网络(Network)等蓝牙移动终端移动电话(MobilePhone),

无绳8蓝牙体系结构蓝牙技术的系统结构分为三大部分:1.底层硬件模块2.中间协议层3.高层应用蓝牙体系结构蓝牙技术的系统结构分为三大部分:9蓝牙协议栈体系结构示意图蓝牙协议栈体系结构示意图10一、底层硬件模块底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理(LM)。RF层

通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所需要满足的条件。基带

负责跳频以及蓝牙数据和信息帧的传输。链路管理(LM)

负责连接、建立和拆除链路并进行安全控制。

链路为SCO同步话音链路与ACL异步数据链路。蓝牙的SIG规定了四种与硬件连接的物理总线方式:USB、RS232、UART和PC卡一、底层硬件模块底层硬件部分包括无线跳频(RF)、基带(BB11二、中间协议层中间协议层的一系列协议构成了蓝牙协议体系:蓝牙协议体系中的协议按SIG的关注程度分为四层: 1.核心协议:BaseBand、LMP、L2CAP、SDP; 2.电缆替代协议:RFCOMM; 3.电话传送控制协议:TCS-Binary、AT命令集; 4.选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE。除上述协议层外,规范还定义了主机控制器接口(HCI),位于蓝牙系统的L2CAP(逻辑链路控制与适配协议)层和LMP(链路管理协议)层之间的一层协议。二、中间协议层中间协议层的一系列协议构成了蓝牙协议体系:12HCI协议的作用其他高层协议HCI驱动物理总线(串口,USB等)驱动主机物理总线物理总线固件HCI

FirmwareLMRF蓝牙控制器HCI协议提供了统一访问蓝牙控制器的能力。主机控制器以HCI命令的形式提供了访问蓝牙硬件的基带控制器、链路管理器、硬件状态寄存器、控制寄存器以及事件寄存器的能力,所有这些功能都要通过内置于蓝牙硬件内部的HCI

Firmware来实现。主机通过HCI接口向主机控制器内的HCI

Firmware发送HCI命令,HCIFirmware再通过基带命令、链路管理器命令、硬件状寄存器、控制寄存器以及事件寄存器完成该HCI命令,从而实现对蓝牙硬件的控制。HCI协议的作用其他高层协议HCI驱动物理总线(串口,USB13模块及应用程序接口模块及应用程序接口141、核心协议基带协议(BaseBand) <1>基带和链路控制层确保各蓝牙设备之间的物理连接。基带协议使用查询和分页进程同步不同设备间的发送频率和时钟,为基带数据分组提供面向连接(SCO)和无连接(ACL)两种物理连接方式,而且,同一射频上可实现多路数据传送。ACL适用于数据分组,SCO适用于话音以及话音与数据的组合,所有的话音和数据分组都进行前向纠错(FEC)或循环冗余校验(CRC),且可加密。此外,对于不同数据类型(包括连接管理信息和控制信息)都分配一个特殊通道。 <2>可使用各种用户模式在蓝牙设备间传送话音,面向连接的话音分组只需经过基带传输,而不到达L2CAP。话音模式在蓝牙系统内相对简单,只需开通话音连接就可传送话音。1、核心协议基带协议(BaseBand)15连接管理协议(LMP)

该协议负责各蓝牙设备间连接的建立。它通过连接的发起、交换、核实,进行身份认证和加密,通过协商确定基带数据分组大小。它还控制无线设备的电源模式和工作周期,以及微微网内设备单元的连接状态。逻辑链路控制和适配协议(L2CAP) L2CAP协议是一个为高层协议屏蔽基带协议的适配协议,位于基带协议之上,属于数据链路层,为高层提供面向连接和面向无连接的数据服务,完成协议复用、分段和重组、服务质量QoS(QualityOfService)传输以及组抽象等功能。虽然基带协议提供了SCO和ACL两种连接类型,但L2CAP只支持ACL。连接管理协议(LMP)16(1)协议复用:由于基带协议不能识别任何高层协议,所以L2CAP必须支持上层协议复用,它能区分诸如服务发现协议、RFCOMM协议、电话控制协议等高层协议。(2)分段与重组:蓝牙基带协议数据包的大小是有限的。发送方需将较大的L2CAP包必须分解成小的基带包来发送。在接收方,必须将多个基带包重组为一个完整的L2CAP数据包。(3)服务质量:在L2CAP建立连接的过程中允许改变两台蓝牙设备间的服务质量,每个L2CAP实体必须监视协议使用的资源并保证服务质量的实现。(4)组管理:蓝牙的基带协议支持微微网,即一组设备使用同一时钟同步跳频,L2CAP协议的组提取功能可以有效地将协议的组映射为基带的微微网,以避免高层协议为了有效的管理组而必须与基带协议以及链路管理器直接联系。HighLayerL2CAPLowLayer(BBorHCI)requestconfirmrequestconfirmresponseresponse(1)协议复用:由于基带协议不能识别任何高层协议,所以L2C17服务发现协议(SDP)

服务发现在蓝牙技术框架中起着至关紧要的作用,它是所有用户模式的基础。使用SDP可以查询到设备信息和服务类型,从而在蓝牙设备间建立相应的连接。服务发现协议由服务发现代理(SDA)、服务发现服务器(SDS)、服务数据库管理器(SDM)三个模块组成。2、电缆替代协议(RFCOMM)RFCOMM是基于ETSI-07.10规范的串行线仿真协议。它在蓝牙基带协议上仿真RS-232控制和数据信号,为使用串行线传送机制的上层协议(如OBEX)提供服务。服务发现协议(SDP)2、电缆替代协议(RFCOMM)18RFCOMM提供对RS-232串口的仿真,包括对数据信号线和非数据信号线的仿真。它既可以仿真两个设备之间的多个串口,也可以支持多个设备之问的多串口仿真,同时RFCOMM中还提供了对空调制解调器的仿真。

1.RFCOMM对九针RS-232串口的仿真包括数据信号线和非数据信号线。

2.多串口仿真

两个数据终端设备之间通过RFCOMM通信,可以打开多达60个仿真串口,但是实际打开串口数还要视设备生产商的具体实现以及实际需要而定。RFCOMM提供对RS-232串口的仿真,包括对数据信号线和193、电话控制协议该协议又分为:1.二元电话控制协议(TCS-Binary或TCSBIN)

该协议是面向比特的协议,它定义了蓝牙设备间建立语音和数据呼叫的控制信令,定义了处理蓝牙TCS设备群的移动管理进程。基于ITUTQ.931建议的TCSBinary被指定为蓝牙的二元电话控制协议规范。2.AT命令集电话控制协议 SIG定义了控制多用户模式下移动电话和调制解调器的AT命令集,该AT命令集基于ITUTV.250建议和GSM07.07,它还可以用于传真业务。3、电话控制协议该协议又分为:204、选用协议

1.点对点协议(PPP) 在蓝牙技术中,PPP位于RFCOMM上层,完成点对点的连接。2.TCP/UDP/IP

该协议是由互联网工程任务组制定,广泛应用于互联网通信的协议。在蓝牙设备中,使用这些协议是为了与互联网相连接的设备进行通信。3.对象交换协议(OBEX)

IrOBEX(简写为OBEX)是由红外数据协会(IrDA)制定的会话层协议,采用简单的和自发的方式交换目标。OBEX是一种类似于HTTP的协议,它假设传输层是可靠的,采用客户机/服务器模式,独立于传输机制和传输应用程序接口(API)。4.无线应用协议(WAP)该协议是由无线应用协议论坛制定的,它融合了各种广域无线网络技术,其目的是将互联网内容和电话传送的业务传送到数字蜂窝电话和其他无线终端上。4、选用协议1.点对点协议(PPP)21蓝牙协议结构体系蓝牙协议结构体系22bluetooth协议架构详解与android-课件23三、高层应用高层应用层具有一套框架,它在蓝牙协议栈的最上部,其中较典型的有拨号网络、耳机、局域网访问、文件传输等,它们分别对应一种应用模式。各种应用程序可以通过各自对应的应用模式实现无线通信。拨号网络应用可通过仿真串口访问微微网(Piconet),数据设备也可由此接入传统的局域网;用户可以通过协议栈中的Audio(音频)层在手机和耳塞中实现音频流的无线传输;多台PC或笔记本电脑之间不需要任何连线,就能快速、灵活地进行文件传输和共享信息,多台设备也可由此实现同步操作。

三、高层应用高层应用层具有一套框架,它在蓝牙协议栈的最上部,24常用应用模式1.文件传输模式

文件传输模式提供两终端间的数据通信功能,可传输后缀为.xls、.ppt、.wav、.jpg和.doc的文件(但并不限于这几种),以及完整的文件夹、目录或多媒体数据流等,提供远端文件夹浏览功能。文件传输协议栈如图2所示。常用应用模式1.文件传输模式252.因特网网桥模式

这种用户模式可通过手机或无线调制解调器向PC提供拨号入网和收发传真的功能,而不必与PC有物理上的连接。拨号上网需要两列协议栈(不包括SDP),如图3所示。AT命令集用来控制移动电话或调制解调器以及传送其他业务数据的协议栈。传真采用类似协议栈,但不使用PPP及基于PPP的其他网络协议,而由应用软件利用RFCOMM直接发送。2.因特网网桥模式263.局域网访问模式

该用户模式下,多功能数据终端(DTs)经局域网访问点(LAP)无线接入局域网,然后,DTs的操作与通过拨号方式接入局域网的设备的操作一样,其协议栈如图4所示。

3.局域网访问模式274.同步模式

同步用户模式提供设备到设备的个人资料管理(PIM)的同步更新功能,其典型应用如电话簿、日历、通知和记录等。它要求PC、蜂窝电话和个人数字助理(PDA)在传输和处理名片、日历及任务通知时,使用通用的协议和格式。其协议栈如图5所示,其中同步应用模块代表红外移动通信(IrMC)客户机或服务器。4.同步模式285.一机三用电话模式

手持电话机有三种使用方法:

第一,接入公用电话网,作为普通电话使用;

第二,作为不计费的内部电话使用;

第三,作为蜂窝移动电话使用。无线电话和内部电话使用相同的协议栈;语音数据流直接与基带协议接口,不经过L2CAP层。如图6所示。5.一机三用电话模式296.头戴式设备模式

使用该模式,用户打电话时可自由移动。通过无线连接,头戴式设备通常作为蜂窝电话、无线电话或PC的音频输入输出设备。头戴式设备协议栈如图7所示,语音数据流不经过L2CAP层而直接接入基带协议层。头戴式设备必须能收发并处理AT命令。6.头戴式设备模式30AndroidBluetooth架构AndroidBluetooth架构31bluetooth协议架构详解与android-课件32bluetooth协议架构详解与android-课件33BlueZ介绍BlueZ是LinuxOS开放的bluetooth协议栈。协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix,Axis公司的OpenBT和官方的协议栈BlueZ。Bluetooth协议栈BlueZ分为两部分:内核代码:

由BlueZ核心协议和驱动程序组成。内核源代码kernel/net/bluetooth中。包括HCI,L2CAP,HID,RFCOMM, SCO,SDP,BNEP等协议的实现。驱动程序放在/driver/bluetooth中,包含Linuxkernel对各种接口的Bluetoothdevice的驱动。例如:USB接口,串口等。BlueZ介绍BlueZ是LinuxOS开放的bluet34用户态程序及工具集:

包括应用程序接口和BlueZ工具集。BlueZ提供函数库以及应用程序接口,便于程序员开发bluetooth应用程序。BlueZutils是主要工具集,实现对bluetooth设备的初始化和控制。参考/用户态程序及工具集:35蓝牙协议层映射到Bluez内核模块PANDuserbnep.kokbnepdl2cap.koLogicallinkercontrolandadaptionlayerbnepXTCP/IPHci_uart.koHci_usb.koHostcontrolinterfacelayerBluetoothChipSettelnet/app/ftp/sshUserspaceKernelspaceTransportlayerNetworklayerBluetooth.ko(coresocketsysfs)rfcomm.kokrfcommdPPPdundpppXHidp.koHiddMiceappsdpdhciXrfcomm/dev/rfcommXsco.koAudioappHci_vhci.koBluetoothsocketappSerialapp蓝牙协议层映射到Bluez内核模块PANDuserbnep36Bluez内核空间代码Bluez内核空间代码37Linux蓝牙驱动net/hci_core.cHCI在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像UART、USB和PCCard等等。hci_core.c相当于一个框架,用于把各种具体通信方式胶合起来,并提供一些公共函数的实现。

hci_cmd_task是负责发送CMD的任务,它从hdev->cmd_q队列中取CMD,然后调用hci_send_frame把CMD发送出去,hci_send_frame又会调用实际的HCI驱动的send函数发送数据。

hci_rx_task是负责接收数据的任务,它从hdev->rx_q队列中取数据,然后根据数据的类型调用上层函数处理。数据包有三种类型:

HCI_EVENT_PKT:用于处理一些通信事件,比如连接建立,连接断开,认证和加密等事件,这些事件控制协议状态的改变。HCI_ACLDATA_PKT:异步非连接的数据包,通过hci_acldata_packet提交给上层的L2CAP协议处理(hci_proto[HCI_PROTO_L2CAP])。HCI_SCODATA_PKT:同步面向连接的数据包,通过hci_scodata_packet提供给上层的SCO协议处理(hci_proto[HCI_PROTO_SCO])。

hci_tx_task是负责发送数据的任务,发送所有connection中的ACL和SCO数据,以及hdev->raw_q中的数据包。Linux蓝牙驱动net/hci_core.c38Linux蓝牙驱动HCI为上层提供的接口主要有:

hci_send_sco:发送SCO数据包,把要发送的数据包放入connection的发送队列中,然后调度发送任务去发送。hci_send_acl:发送ACL数据包,把要发送的数据包放入connection的发送队列中,然后调度发送任务去发送。hci_send_cmd:发送命令数据,把要发送的数据包放入hdev->cmd_q队列中,然后调度命令发送任务去发送。hci_register_proto/hci_unregister_proto:注册/注销上层协议,HCI会把接收到的数据转发给这些上层协议。hci_register_dev/hci_unregister_dev:注册/注销设备,HCI会把要发送的数据通过这些设备发送出去。其它一些公共函数。Linux蓝牙驱动HCI为上层提供的接口主要有:39Linux蓝牙驱动net/hci_conn.c

提供了一些连接管理,论证和加密的函数。

net/hci_event.c

事件处理函数,负责状态机的维护,这些事件通常会使连接从一个状态转换另一个状态。

hci_si_event:用于发送事件。hci_event_packet:用于处理底层上报的事件,从hci_rx_task处调用过来。

net/hci_sock.c

给上层提供一个socket接口,应用程序可以通过socket的方式来访问HCI。

hci_sock_init:中注册了BTPROTO_HCI类型family。hci_sock_create:创建sock的函数,它的sock的ops指向hci_sock_ops。hci_sock_setsockopt/hci_sock_getsockopt:设置/获取sock的一些选项。hci_sock_sendmsg:发送消息,根据消息的类型把消息放到适当的队列中。hci_sock_recvmsg:接收消息,从接收队列中取消息。hci_sock_recvmsg:ioctl函数。Linux蓝牙驱动net/hci_conn.c

提供了一些连40Linux蓝牙驱动net/hci_sysfs.c

提供一些sysfs文件系统接口。

net/l2cap.c

L2CAP是HCI之上的协议,提供诸如QoS,分组,多路复用,分段和组装之类的功能。

通过bt_sock_register为上层提供一个sock接口:

l2cap_sock_create:创建sock的函数,它的sock的ops指向l2cap_sock_ops。l2cap_sock_setsockopt/l2cap_sock_getsockopt设置/获取sock的一些选项。l2cap_sock_sendmsg:发送消息,通过HCI提供hci_send_acl函数把消息传递给下层的设备。bt_sock_recvmsg:接收消息,从接收队列中取消息。

通过hci_register_proto向其下的HCI注册协议:

l2cap_connect_ind:处理连接请求。l2cap_connect_cfm:确认连接。l2cap_disconn:处理断开请求。l2cap_auth_cfm:认证确认。l2cap_encrypt_c

温馨提示

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

评论

0/150

提交评论