bluetooth协议架构详解与android 蓝牙架构分析
bluetooth协议架构详解与android 蓝牙架构分析

现有的掌上电脑、移动电话等各种数字设备上的有线电缆连
接。
(1)全球范围适用:蓝牙工作在2.4GHz的 ISM频段,全球 大多数国家ISM频段的范围是2.4-2.4835GHz,使用该频段 无需向各国的无线电资源管理部门申请许可证。
(2)同时可传输语音和数据:蓝牙采用电路交换和分组交 换技术,支持异步数据信道、三路语音信道以及异步数据 与同步语音同时传输的信道。每个语音信道数据速率为 64kbit/s,语音信号编码采用脉冲编码调制(PCM)或连 续可变斜率增量调制(CVSD)方法。蓝牙有两种链路类型: 异步无连接(ACL)链路和同步面向连接(SCO)链路。
(8)成本低:随着市场需求的扩大,各个供应商纷纷推出自 己的蓝牙芯片和模块,蓝牙产品价格飞速下降。
蓝牙移动终端
• 移动电话( Mobile Phone ), 无绳电话 ( Cordless Phone ), 笔记本电脑 ( Notebook), 个人数字助理 ( PDA ), 数字相机 ( Digital cameras), 打印机 ( Printer), 局域网络 ( Network)等
(3)可以建立临时性的对等连接: 根据蓝牙设备在网络中的角色,可分为主设备(Master) 与从设备(Slave)。主设备是组网连接主动发起连接请求 的蓝牙设备,几个蓝牙设备连接成一个皮网(Piconet)时, 其中只有一个主设备,其余的均为从设备。皮网是蓝牙最 基本的一种网络形式,最简单的皮网是一个主设备和一个 从设备组成的点对点的通信连接。
主机 其他高层协议
HCI驱动
HCI协议的作用
HCI协议提供了统一访问蓝牙控制器的能 力。主机控制器以HCI命令的形式提供了 访问蓝牙硬件的基带控制器、链路管理器、 硬件状态寄存器、控制寄存器以及事件寄 存器的能力,所有这些功能都要通过内置 于蓝牙硬件内部的HCI Firmware来实现。 主机通过HCI接口向主机控制器内的HCI Firmware发送HCI命令,HCI Firmware再 通过基带命令、链路管理器命令、硬件状 寄存器、控制寄存器以及事件寄存器完成 该HCI命令,从而实现对蓝牙硬件的控制。
Android BlueDroid详细分析

Android BlueDroid(一):BlueDroid概述一、名词解释:(有用信息增加中……)BTI F: Bluetooth InterfaceBTU : Bluetooth Upper LayerBTM: Bluetooth ManagerBTE :Bluetooth embedded systemBTA :Blueetooth application layerCO: call out\CI: call inHF : Handsfree ProfileHH: HID Host ProfileHL: Health Device ProfileAV:audio\vidioag: audio gatewayar: audio/video registrationgattc: GATT clientBLE:二、 BlueDroid && BlueZ1、Android 4.2中BlueDroid的框架结构图:(Google官方提供)。
(1)、应用程序通过android.bluetooth package下的API来调用系统的Bluetooth功能。
(2)、应用层空间增加了一个名为Bluetooth的App。
它做为系统的bluetooth核心进程而存在。
其内部将通过JNI来调用Bluetooth HAL层以完成各种蓝牙请求。
(3)、Bluetooth HAL也属于Android 4.2新增模块,它由蓝牙核心规范硬件抽象层和蓝牙应用规范硬件抽象层组成。
由于HAL层的隔离作用,上层代码可轻松移植到不同芯片平台。
(4)、作为整个蓝牙服务的核心,Bluetooth Stack模块则由Bluetooth Application Layer (缩写为BTA)和Bluetooth Embedded System(缩写为BTE)两大部分组成。
BTA实现了蓝牙设备管理、状态管理及一些应用规范。
而BTE则通过HCI与厂商蓝牙芯片交互以实现了蓝牙协议栈的通用功能和相关协议。
传统蓝牙协议及体系结构

蓝牙技术体系协议
连接时的节能状态:
节点被赋予Park地址,按一定的时间间隔监听主节点的声音
节点保持停止传送数据,只有激活后才重新开始传送数据。
从节点时睡时醒,速率明显下降。
蓝牙技术体系协议
三种纠错方式: 1)1/3向前纠错:SCO链路 2)2/3向前纠错:ACL链路 3)自动重发:无编号发送
蓝牙技术体系协议
蓝牙技术体系协议
3.应用层 Sig定义了一些基本应用模型,每一种应用模 型都对应一个剖面,规范了相应模型的功能 和使用协议。
不同厂家在生产时只要遵照相同的剖面,彼 此产品之间就能互通。
蓝牙技术体系协议
应用层常见应用模型:
1)文件传输:蓝牙设备之间传 送各种数据信息文件,用户可以 浏览其他设备上的文件夹,也可 以新建或删除文件夹。 采用的是客户/服务器模式。
蓝牙技术体系协议
二、蓝牙核心协议 蓝牙协议按实施的功能可分为4类: 1.蓝牙核心协议 2.蓝牙电缆替代协议:串口仿真 3.蓝牙电话控制协议:电话通信TCS协议和AT 命令集 4.蓝牙选用协议:PPP、TCP/IP等
蓝牙技术体系协议
蓝牙核心协议: 1)基带BB 2)连接管理LMP 3)链接控制和适配L2CAP 4)服务发现SDP协议
传统蓝牙协议及体系结构
蓝牙技术体系协议
一、蓝牙协议体系由3层组成:
应用层 中间层 底层
蓝牙技术体系协议
链路管理 基带层 射频 底层 RF BB 层LM
完成数据流位流的过滤和传输
负责调频,实现蓝牙数据传输和信息帧 的传输。分为电路交换和分组交换。
规定如何建立和拆除连接,以及链路的 控制和安全。
蓝牙技术体系协议
蓝牙技术体系协议
2)数据同步: 保证收发数据同步,使 得接收设备能够获得准 确信息。
三种蓝牙架构实现方案(蓝牙协议栈方案)

三种蓝⽛架构实现⽅案(蓝⽛协议栈⽅案)蓝⽛架构实现⽅案有哪⼏种?我们⼀般把整个蓝⽛实现⽅案叫做蓝⽛协议栈,因此这个问题也可以这么阐述:蓝⽛协议栈有哪些具体的架构⽅案?在蓝⽛协议栈中,host是什么?controller是什么?HCI⼜是什么?⼤家都知道,不同的应⽤场景有不同的需求,因此不同的应⽤场景对蓝⽛实现⽅案的要求也不⼀样,从⽽催⽣不同的蓝⽛架构实现⽅案,或者说蓝⽛协议栈⽅案。
架构1:host+controller双芯⽚标准架构蓝⽛是跟随⼿机⽽诞⽣的,如何在⼿机中实现蓝⽛应⽤,是蓝⽛规格⾸先要考虑的问题。
如果你仔细阅读蓝⽛核⼼规格,你会发现规格书更多地是站在⼿机⾓度来阐述的,然后“顺带”描述⼀下⼿机周边蓝⽛设备的实现原理。
如⼤家所熟知,⼿机⾥⾯包含很多SoC或者模块,每颗SoC或者模块都有⾃⼰独有的功能,⽐如⼿机应⽤跑在AP芯⽚上(⼀般⽽⾔,Android或者iOS开发者只需跟AP芯⽚打交道),显⽰屏,3G/4G通信,WiFi/蓝⽛等都有⾃⼰专门的SoC或者模块,这些模块在物理上都会通过某种接⼝与AP相连。
如果应⽤需要⽤到某个模块的时候,⽐如蓝⽛通信,AP会⾃动跟蓝⽛模块交互,从⽽完成蓝⽛通信功能。
市场上有很多种AP芯⽚,同时也有很多种蓝⽛模块,如何保证两者的兼容性,以减轻⼿机的开发⼯作量,增加⼿机⼚商蓝⽛⽅案选型的灵活性,是蓝⽛规格要考虑的事情。
为此,蓝⽛规格定义了⼀套标准,使得⼿机⼚商,⽐如苹果,⽤⼀颗新AP替换⽼AP,蓝⽛模块不需要做任何更改;同样⽤⼀颗新蓝⽛模块换掉⽼蓝⽛模块,AP端也不需要做任何更改。
这个标准把蓝⽛协议栈分成host和controller两部分,其中host跑在AP上,controller跑在蓝⽛模块上,两者之间通过HCI协议进⾏通信,⽽且host具体包含协议栈那些部分,controller具体包含协议栈那些部分,两者之间通信的HCI协议如何定义,这些在蓝⽛核⼼规格中都有详细定义,因此我把它称为双芯⽚标准⽅案。
android蓝牙介绍二蓝牙代码架构及其uart到rfcomm流程

android蓝⽛介绍⼆蓝⽛代码架构及其uart到rfcomm流程Android bluetooth介绍(⼆)android 蓝⽛代码架构及其uart 到rfcomm 流程⼀、Android Bluetooth Architecture蓝⽛代码架构部分(google 官⽅蓝⽛框架)Android的蓝⽛系统,⾃下⽽上包括以下⼀些内容如上图所⽰:1、串⼝驱动Linux的内核的蓝⽛驱动程、Linux的内核的蓝⽛协议的层2、BlueZ的适配器BlueZ的(蓝⽛在⽤户空间的函式库)bluez代码结构Bluetooth协议栈BlueZ分为两部分:内核代码和⽤户态程序及⼯具集。
(1)、内核代码:由BlueZ核⼼协议和驱动程序组成Bluetooth协议实现在内核源代码 kernel/net/bluetooth中。
包括hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。
(2)、驱动程序:kernel/driver/bluetooth中,包含Linuxkernel对各种接⼝的Bluetooth device的驱动,如:USB接⼝,串⼝等。
(3)、⽤户态程序及⼯具集:包括应⽤程序接⼝和BlueZ⼯具集。
BlueZ提供函数库以及应⽤程序接⼝,便于程序员开发bluetooth应⽤程序。
BlueZ utils是主要⼯具集,实现对bluetooth设备的初始化和控制。
3、蓝⽛相关的应⽤程序接⼝Android.buletooth包中的各个Class(蓝⽛在框架层的内容-----java)同样下图也是⼀张⽐较经典的蓝⽛代码架构图(google官⽅提供)⼆、蓝⽛通过Hciattach启动串⼝流程:1、hciattach总体流程2、展讯hciattach代码实现流程:三、具体代码分析1、initrc中定义idh.code\device\sprd\sp8830ec_nwcn\init.sc8830.rc[html]view plaincopy1.service hciattach /system/bin/hciattach -n /dev/sttybt0 sprd_shark2.socket bluetooth stream 660 bluetooth bluetooth/doc/0536cc7bbb4cf7ec4afed0c0.html er bluetooth4.group wifi bluetooth net_bt_admin net_bt inet net_raw net_admin system5.disabled6.oneshotadb 下/dev/ttybt0(不同平台有所不同)PS 进程中:hicattch2、/system/bin/hciattach 执⾏的Main函数idh.code\external\bluetooth\bluez\tools\hciattach.cservice hciattach /system/bin/hciattach -n /dev/sttybt0sprd_shark 传进两个参数,/dev/sttybt0 和 sprd_shark1.i nt main(int argc, char *argv[])2.{4.for (n = 0; optind < argc; n++, optind++) {5.char *opt;6.7.opt = argv[optind];8.9.switch(n) {10. case 0://(1)、解析驱动的位置;11. dev[0] = 0;12. if (!strchr(opt, '/'))13. strcpy(dev, "/dev/");14. strcat(dev, opt);15. break;16.17. case 1://(2)、解析串⼝的配置相关参数;18. if (strchr(argv[optind], ',')) {19. int m_id, p_id;20. sscanf(argv[optind], "%x,%x",&m_id, &p_id);21. u = get_by_id(m_id, p_id);22. } else {23. u = get_by_type(opt);24. }25.26. if (!u) {27. fprintf(stderr, "Unknown device type or id\n");28. exit(1);29. }30.31. break;32.33. case 2://(3)、通过对前⾯参数的解析,把uart[i]中的数值初始化;34. u->speed = atoi(argv[optind]);35. break;36.37. case 3:38. if (!strcmp("flow", argv[optind]))39. u->flags |= FLOW_CTL;40. else41. u->flags &= ~FLOW_CTL;42. break;43.44. case 4:45. if (!strcmp("sleep", argv[optind]))46. u->pm = ENABLE_PM;47. else48. u->pm = DISABLE_PM;49. break;50.51. case 5:52. u->bdaddr = argv[optind];53. break;54. }55. }56.58. if (init_speed)//初始化串⼝速率;59. u->init_speed = init_speed;60.………………61. n = init_uart(dev, u, send_break, raw);//(4)、初始化串⼝;62.………………63.64. return 0;65.}(1)、解析驱动的位置;1.if (!strchr(opt, '/'))2.strcpy(dev, "/dev/");3.service hciattach /system/bin/hciattach -n /dev/sttybt0 sprd_shark4.dev = /dev/ttyb0(2)、解析串⼝的配置相关参数;获取参数对应的结构体;1.u = get_by_id(m_id, p_id);2.static struct uart_t * get_by_id(int m_id, int p_id)3.{4.int i;5.for (i = 0; uart[i].type; i++) {6.if (uart[i].m_id == m_id && uart[i].p_id== p_id)7.return &uart[i];8.}9.return NULL;10.}这个函数⽐较简单,通过循环对⽐,如传进了的参数sprd_shark和uart结构体中的对⽐,找到对应的数组。
BlueTooth:蓝牙核心协议与蓝牙芯片结构

BlueTooth:蓝牙核心协议与蓝牙芯片结构1 Bluetooth Core System Protocol(蓝牙核心协议)蓝牙技术规范(specification)包括核心协议(protocol)和应用规范(profile)两个部分。
核心协议包含蓝牙协议栈中最低的4个Layer,和一个基本的服务协议SDP(Service Discover Protocol),以及所有应用profile的基础Profile GAP(General Acess Profile)。
核心协议是蓝牙协议栈中必不可少的。
除了核心协议外,蓝牙规范必须包含一些其他的应用层的服务和协议--应用层profile。
蓝牙协议栈通常有如下内容:蓝牙5而蓝牙的核心系统协议为最低的4个Layer,再加上应用层profile SDP,包括:RF,LC(link control),LM(Link Manager),L2CAP(Logical Link Control and Adaptation Protocol),SDP。
核心系统的架构图如下,为简明起见,没有画出SDP。
蓝牙6最低的3个Layer经常也看作一个子系统,叫Bluetooth Controler。
Bluetooth Controler和包括L2CAP在内上层Profile之间的通信,是通过HCI(Host to Controler Interface)进行。
HCI以下的内容Bluetooth Controler由蓝牙芯片实现,以上的内容由Bluetooth Host(比如手机Baseband)实现。
蓝牙核心系统通过一系列Service Access Point(如上图的椭圆部分所示)提供服务,这些服务包含了对蓝牙核心系统的最基本和原始的控制。
可以分为3种类型:Device Control Service,修改蓝牙Device的行为,状态和模式;Tansport Control Sevice,创建修改和释放trafficbearers(信道和链接);Data Service,在Traffic bearers上进行数据传输。
bluetooth的协议层
bluetooth的协议层蓝牙技术,作为一种无线通讯标准,已广泛应用于各种电子设备之间,实现了数据的短距离传输。
它的成功得益于其独特的协议层设计,这些协议层确保了蓝牙设备之间的有效、安全和可靠的通信。
本文将深入探讨蓝牙的协议层,包括其核心协议、传输协议、中间件和应用层,并分析它们是如何协同工作以实现蓝牙通信的。
一、蓝牙技术概述蓝牙技术是一种无线通讯技术,它允许电子设备之间在短距离内进行数据传输。
蓝牙技术广泛应用于手机、耳机、笔记本电脑、智能手表等设备中,为用户提供了便捷的连接方式。
蓝牙技术的特点包括低功耗、低成本和广泛的兼容性,使其成为物联网(IoT)领域的重要组成部分。
二、蓝牙的协议层结构蓝牙的协议层结构可以分为核心协议、传输协议、中间件和应用层四个部分。
这些层次结构为蓝牙通信提供了从物理层到应用层的完整解决方案。
1. 核心协议:核心协议包括基带、链路管理、逻辑链路控制和适应协议以及服务发现协议。
基带负责跳频和蓝牙数据及信息帧的传输,是蓝牙技术中最重要的部分。
链路管理协议负责连接的设置、建立和释放,以及安全和控制。
逻辑链路控制和适应协议具有完成数据拆装、连接管理、分组的功能和复用协议的功能。
此外,服务发现协议层上的User Discovery Protocol(UDP)使用设备的服务发现信息(SDP)使设备可以以用户理解的方式和更高级别的设备应用接口(API)来相互发现对方。
2. 传输协议:传输协议层主要包括RFCOMM协议和TCP/UDP。
RFCOMM基于ETSI标准TS07.10,传输机制本身基于L2CAP。
它为上层应用程序提供了一种串行数据传输方式。
TCP/UDP 是两种已广泛使用的传输层协议,它们被包含在蓝牙的传输协议中,可以利用IP网络协议栈来进行通信。
实际应用中,蓝牙设备以TCP或UDP方式完成数据的传输。
3. 中间件协议:中间件协议层包括串口仿真协议(RFCOMM)、服务发现协议(SDP)、电话控制协议(TCS)和音频传输协议(ATP)等。
蓝牙协议栈详解
蓝牙协议栈详解蓝牙协议栈是指蓝牙通信中的软件协议,它定义了蓝牙设备之间的通信规则和数据传输方式。
蓝牙协议栈由多个层次组成,每个层次负责不同的功能和任务。
本文将对蓝牙协议栈的各个层次进行详细解析,以便读者更好地理解蓝牙通信原理。
1. 物理层(Physical Layer)物理层是蓝牙协议栈中最底层的层次,它定义了蓝牙设备的无线通信方式和频率。
蓝牙使用2.4GHz的ISM频段进行通信,采用频率跳变技术来避免干扰。
物理层还定义了蓝牙设备的功率等级和传输速率,以及通信距离的限制。
2. 链路层(Link Layer)链路层是蓝牙协议栈中的第二层,它负责建立和管理蓝牙设备之间的连接。
链路层主要包括两个子层:广告子层和连接子层。
广告子层负责设备的广告和发现,用于建立连接;连接子层负责连接的建立、维护和关闭。
链路层还定义了蓝牙设备之间的数据传输方式,如数据包的格式、错误检测和纠错等。
3. 主机控制器接口(Host Controller Interface,HCI)主机控制器接口是蓝牙协议栈中的第三层,它定义了主机和主机控制器之间的通信方式。
主机控制器接口可以通过串口、USB等方式与主机连接,主要负责传输命令和数据,以及处理主机和主机控制器之间的事件和状态。
4. L2CAP层(Logical Link Control and Adaptation Protocol)L2CAP层是蓝牙协议栈中的第四层,它提供了面向连接和面向无连接的数据传输服务。
L2CAP层可以将较大的数据包分割成多个小的数据包进行传输,并提供可靠的数据传输机制。
L2CAP层还支持多个逻辑信道的复用和分离,以满足不同应用的需求。
5. RFCOMM层(Radio Frequency Communication)RFCOMM层是蓝牙协议栈中的第五层,它通过虚拟串口的方式提供串行数据传输服务。
RFCOMM层允许应用程序通过串口接口与蓝牙设备进行通信,实现数据的传输和控制。
[蓝牙]1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记)
[蓝牙]1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记)第一篇:[蓝牙] 1蓝牙核心技术了解(蓝牙协议架构硬件和软件笔记) [蓝牙]1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中比较多的受益于xubin341719的蓝牙系列文章,同时还有其他网上作者的资料。
由于有些文章只做参考或统计不足,如涉及版权请在下面留言~。
同时我也在博客分类中新建一个蓝牙通信分类,用来研究分享蓝牙相关技术。
下载连接:Bluetooth PROFILE SPECIFICATIONS(基本涵盖所有蓝牙协议)、buletooth core 2.1-4.0 SPECIFICATION(三蓝牙版本的核心协议v2.1v3.0v4.0)、蓝牙核心技术与应用马建仓版(蓝牙协议相关初学者必读,开发者参考)蓝牙核心技术概述(一):蓝牙概述蓝牙核心技术概述(二):蓝牙使用场景蓝牙核心技术概述(三):蓝牙协议规范(射频、基带链路控制、链路管理)蓝牙核心技术概述(四):蓝牙协议规范(HCI、L2CAP、SDP、RFOCMM)蓝牙核心技术概述(五):蓝牙协议规范(irOBEX、BNEP、AVDTP、AVCTP)下面是摘抄笔记内容:蓝牙核心技术概述(一):蓝牙概述蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。
能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。
利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。
蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。
其数据速率为1Mbps。
采用时分双工传输方案实现全双工传输。
android课程之Bluetooth
Android Bluetooth一、Android Bluetooth现状(1)Android2.2版 支持的蓝牙核心版本是Bluetooth 2.0 + EDR。
(2)Android 的蓝牙 使用了BlueZ协议栈,但只实现了Handset/Handfree和A2DP/AVRCP等Profile。
(一些常用的Profile(如HID/DUN/SPP/OPP/FTP/PAN等)在现在的Android2.2版中并没有实现。
需要自己在Android中实现Profile)。
(3)目前版本(Android2.2) 只支持 绑定设备(bonded devices)之间通信,而不支持ad-hoc网络通信。
(4)目前版本(Android2.2) emulator(仿真器、模拟器)不支持蓝牙的调试,只能通过LOG和BlueZ带的工具来调试。
(5)Android2.0 API level5 之后的版本才支持Bluetooth。
(6)Android 的Bluetooth通信API是BlueZ 的RFCOMM的封装。
RfcommSocket 在 API level7 之后的版本才提供Bluetooth 的通信RfcommSocket 使用Java 的IputStream 和OutputStream对象二、Android Bluetooth 架构1、面向库的架构视图2、面向进程的架构视图LinuxKernel层:bluez协议栈、uart驱动, h4协议, hci,l2cap, sco, rfcomm Library层:libbluedroid.so 等Framework层:实现了Headset /Handsfree 和 A2DP/AVRCP profile,但其实现方式不同Handset/Handfree是直接 在bluez的RFCOMM Socket 上开发的,没有利用bluez的audio Plugin,而A2DP/AVRCP是在bluez的audio plugin基础上开发的,大大降低了实现的难度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
、中间协议层
中间协议层的一系列协议构成了蓝牙协议体系: • 蓝牙协议体系中的协议按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(链路管理协议)层之间的一层协议。
3、电话控制协议
该协议又分为: • 1.二元电话控制协议(TCS-Binary 或TCS BIN) 该协议是面向比特的协议,它定义了蓝牙设备间建立语音 和数据呼叫的控制信令,定义了处理蓝牙TCS设备群的移 动管理进程。基于ITUTQ.931建议的TCS Binary被指定为 蓝牙的二元电话控制协议规范。 • 2.AT命令集电话控制协议 SIG定义了控制多用户模式下移动电话和调制解调器的AT 命令集,该AT命令集基于ITU TV.250建议和GSM07.07,它 还可以用于传真业务。
• 连接管理协议(LMP) 该协议负责各蓝牙设备间连接的建立。它通过连接的发 起、交换、核实,进行身份认证和加密,通过协商确定基 带数据分组大小。它还控制无线设备的电源模式和工作周 期,以及微微网内设备单元的连接状态。 • 逻辑链路控制和适配协议(L2CAP) L2CAP协议是一个为高层协议屏蔽基带协议的适配协议, 位于基带协议之上,属于数据链路层,为高层提供面向连 接和面向无连接的数据服务,完成协议复用、分段和重组、 服务质量QoS(Quality Of Service)传输以及组抽象等功能。 虽然基带协议提供了SCO和ACL两种连接类型,但L2CAP只 支持ACL。
4、选用协议
• 1.点对点协议(PPP) 在蓝牙技术中,PPP位于RFCOMM上层,完成点对点的连接。 • 2. TCP/UDP/IP 该协议是由互联网工程任务组制定,广泛应用于互联网通信的 协议。在蓝牙设备中,使用这些协议是为了与互联网相连接的 设备进行通信。 • 3.对象交换协议(OBEX) IrOBEX(简写为OBEX)是由红外数据协会(IrDA)制定的会话层 协议,采用简单的和自发的方式交换目标。OBEX是一种类似于 HTTP的协议,它假设传输层是可靠的,采用客户机/服务器模式, 独立于传输机制和传输应用程序接口(API)。 • 4.无线应用协议(WAP) 该协议是由无线应用协议论坛制定的,它融合了各种广域无线 网络技术,其目的是将互联网内容和电话传送的业务传送到数 字蜂窝电话和其他无线终端上。
常用应用模式
1.文件传输模式 文件传输模式提供两终端间的数据通信功能,可传输后 缀为.xls、.ppt、.wav、.jpg 和.doc的文件(但并不限 于这几种),以及完整的文件夹、目录或多媒体数据流 等,提供远端文件夹浏览功能。文件传输协议栈如图2所 示。
• • • • 蓝牙技术的系统结构分为三大部分: 1.底层硬件模块 2.中间协议层 3.高层应用
蓝牙协议栈体系结构示意图
一、底层硬件模块
底层硬件部分包括无线跳频(RF)、基带(BB)和链路管理 (LM)。 • RF层 通过2.4GHz无需授权的ISM频段的微波,实现数据位流的过滤 和传输,本层协议主要定义了蓝牙收发器在此频带正常工作所 需要满足的条件。 • 基带 负责跳频以及蓝牙数据和信息帧的传输。 • 链路管理(LM) 负责连接、建立和拆除链路并进行安全控制。 链路为SCO同步话音链路与ACL 异步数据链路。 • 蓝牙的SIG规定了四种与硬件连接的物理总线方式:USB、RS232、 UART和PC卡
主机 其他高层协议 HCI驱动 物理总线(串口,USB等)驱动
物理总线
物理总线固件
HCI Firmware LM
RF
蓝牙控制器
模块及应用程序接口
1、核心协议
• 基 带 协 议 (BaseBand) <1> 基带和链路控制层确保各蓝牙设备之间的物理连接。 基带协议使用查询和分页进程同步不同设备间的发送频率 和时钟,为基带数据分组提供面向连接(SCO)和无连接 (ACL)两种物理连接方式,而且,同一射频上可实现多 路数据传送。ACL适用于数据分组,SCO适用于话音以及话 音与数据的组合,所有的话音和数据分组都进行前向纠错 (FEC)或循环冗余校验(CRC),且可加密。此外,对于 不同数据类型(包括连接管理信息和控制信息)都分配一 个特殊通道。 <2> 可使用各种用户模式在蓝牙设备间传送话音,面向连 接的话音分组只需经过基带传输,而不到达L2CAP。话音 模式在蓝牙系统内相对简单,只需开通话音连接就可传送 话音。
(5)蓝牙模块体积很小、便于集成。 (6)低功耗: 蓝牙设备在通信连接(Connection)状态下, 有四种工作模式:激活(Active)模式、呼吸(Sniff)模 式、保持(Hold)模式、休眠(Park)模式。Active 模式 是正常的工作状态,另外三种模式是为了节能所规定的低 功耗模式。 (7)开放的接口标准:SIG为了推广蓝牙技术的使用,将蓝 牙的技术标准全部公开,全世界范围内的任何单位和个人 都可以进行蓝牙产品的开发,只要最终通过SIG的蓝牙产品 兼容性测试,就可以推向市场。 (8)成本低:随着市场需求的扩大,各个供应商纷纷推出自 己的蓝牙芯片和模块,蓝牙产品价格飞速下降。
(1)协议复用:由于基带协议不能识别任何高层协议,所以L2CAP必须支 持上层协议复用,它能区分诸如服务发现协议、RFCOMM协议、电话控 制协议等高层协议。 (2)分段与重组:蓝牙基带协议数据包的大小是有限的。发送方需将较大 的L2CAP包必须分解成小的基带包来发送。在接收方,必须将多个基 带包重组为一个完整的L2CAP数据包。 (3)服务质量:在L2CAP建立连接的过程中允许改变两台蓝牙设备间的服 务质量,每个L2CAP实体必须监视协议使用的资源并保证服务质量的 实现。 (4)组管理:蓝牙的基带协议支持微微网, High Layer 即一组设备使用同一时钟同步跳频, request confirm response L2CAP协议的组提取功能可以有效地将 协议的组映射为基带的微微网,以避免 L2CAP 高层协议为了有效的管理组而必须与 response request confirm 基带协议以及链路管理器直接联系。
2、电缆替代协议(RFCOMM)
• RFCOMM是基于ETSI-07.10规范的串行线仿真协议。它在 蓝牙基带协议上仿真RS-232控制和数据信号,为使用串行 线传送机制的上层协议(如OBEX)提供服务。
• RFCOMM提供对RS-232串口的仿真,包括对数据信号线和非 数据信号线的仿真。它既可以仿真两个设备之间的多个串 口,也可以支持多个设备之问的多串口仿真,同时RFCOMM 中还提供了对空调制解调器的仿真。 1.RFCOMM对九针RS-232串口的仿真包括数据信号线和非 数据信号线。 2.多串口仿真 两个数据终端设备之间通过RFCOMM通信,可以打开多达60 个仿真串口,但是实际打开串口数还要视设备生产商的具 体实现以及实际需要而定。
Low Layer(BB or HCI)
• 服务发现协议(SDP) 服务发现在蓝牙技术框架中起着至关紧要的作用,它是所 有用户模式的基础。使用SDP可以查询到设备信息和服务 类型,从而在蓝牙设备间建立相应的连接。服务发现协议 由服务发现代理(SDA)、服务发现服务器(SDS)、服务 数据库管理器(SDM)三个模块组成。
HCI协议的作用
HCI协议提供了统一访问蓝牙控制器的能 力。主机控制器以HCI命令的形式提供了 访问蓝牙硬件的基带控制器、链路管理器、 硬件状态寄存器、控制寄存器以及事件寄 存器的能力,所有这些功能都要通过内置 于蓝牙硬件内部的HCI Firmware来实现。 主机通过HCI接口向主机控制器内的HCI Firmware发送HCI命令,HCI Firmware再 通过基带命令、链路管理器命令、硬件状 寄存器、控制寄存器以及事件寄存器完成 该HCI命令,从而实现对蓝牙硬件的控制。
蓝牙协议结构体系
三、高层应用
• 高层应用层具有一套框架,它在蓝牙协议栈的最上 部,其中较典型的有拨号网络、耳机、局域网访问、 文件传输等,它们分别对应一种应用模式。各种应 用程序可以通过各自对应的应用模式实现无线通信。 • 拨号网络应用可通过仿真串口访问微微网 (Piconet),数据设备也可由此接入传统的局域网; • 用户可以通过协议栈中的Audio(音频)层在手机和 耳塞中实现音频流的无线传输; • 多台PC或笔记本电脑之间不需要任何连线,就能快 速、灵活地进行文件传输和共享信息,多台设备也 可由此实现同步操作。
蓝牙技术的特点
蓝牙是一种短距无线通信的技术规范,它最初的目标是取代 现有的掌上电脑、移动电话等各种数字设备上的有线电缆连 接。 (1)全球范围适用:蓝牙工作在2.4GHz的 ISM频段,全球 大多数国家ISM频段的范围是2.4-2.4835GHz,使用该频段 无需向各国的无线电资源管理部门申请许可证。 (2)同时可传输语音和数据:蓝牙采用电路交换和分组交 换技术,支持异步数据信道、三路语音信道以及异步数据 与同步语音同时传输的信道。每个语音信道数据速率为 64kbit/s,语音信号编码采用脉冲编码调制(PCM)或连 续可变斜率增量调制(CVSD)方法。蓝牙有两种链路类型: 异步无连接(ACL)链路和同步面向连接(SCO)链路。
(3)可以建立临时性的对等连接: 根据蓝牙设备在网络中的角色,可分为主设备(Master) 与从设备(Slave)。主设备是组网连接主动发起连接请求 的蓝牙设备,几个蓝牙设备连接成一个皮网(Piconet)时, 其中只有一个主设备,其余的均为从设备。皮网是蓝牙最 基本的一种网络形式,最简单的皮网是一个主设备和一个 从设备组成的点对点的通信连接。 (4)具有很好的抗干扰能力:工作在ISM频段的无线电设 备有很多种,如家用微波炉、无线局域网(WLAN)Home RF 等产品,蓝牙采用跳频(Frequency Hopping)方式来扩展 频谱,将2.402~2.48GHz频段分成79个频点,相邻频点间 隔1MHz。抵抗来自这些设备的干扰。