蓝牙 BLE 协议学习: 000-有关概念介绍
背景
在学校内就用过蓝牙技术参加过比赛(并拿了奖);而蓝牙作为物联网中比较常见的协议,有必要进行深入的学习。此后的文章会以 ble(v4.0) 进行学习。
介绍
蓝牙技术最初由电信巨头爱立信公司于 1994 年创制,当时是作为 RS232 数据线的替代方案。蓝牙可连接多个设备,克服了数据同步的难题。随着蓝牙耳机、蓝牙鼠标、蓝牙音箱等蓝牙设备渐渐充斥着我们的生活,蓝牙早已不单纯是数据线的替代方案。
如今蓝牙由蓝牙技术联盟(Bluetooth Special Interest Group,简称 SIG)管理。蓝牙技术联盟在全球拥有超过 25,000 家成员公司,它们分布在电信、计算机、网络、和消费电子等多重领域。
简单地说,蓝牙是一种短程宽带无线电技术,是实现语音和数据无线传输的全球开放性标准。它使用跳频扩谱(FHSS)、时分多址(TDMA)、码分多址(CDMA)等先进技术,在小范围内建立多种通信与信息系统之间的信息传输。
蓝牙使用跳频技术,将传输的数据分割成数据包,通过79个指定的蓝牙频道分别传输数据包。每个频道的频宽为1 MHz。蓝牙4.0使用2 MHz 间距,可容纳40个频道。第一个频道始于2402 MHz,每1 MHz一个频道,至2480 MHz。有了适配跳频(Adaptive Frequency-Hopping,简称AFH)功能,通常每秒跳1600次。
最初,高斯频移键控(Gaussian frequency-shift keying,简称GFSK)调制是唯一可用的调制方案。然而蓝牙2.0+EDR 使得 π/4-DQPSK和 8DPSK 调制在兼容设备中的使用变为可能。运行GFSK的设备可以以基础速率(Basic Rate,简称BR)运行,瞬时速率可达1Mbit/s。增强数据率(Enhanced Data Rate,简称EDR)一词用于描述π/4-DPSK 和 8DPSK 方案, 分别可达2 和 3Mbit/s。在蓝牙无线电技术中,两种模式(BR和EDR)的结合统称为"BR/EDR射频"。
蓝牙是基于数据包、有着"主从架构"的协议。一个主设备至多可和同一网域中的七个从设备通讯。所有设备共享主设备的时钟。分组交换基于主设备定义的、以312.5µs为间隔运行的基础时钟。两个时钟周期构成一个625µs的槽,两个时间隙就构成了一个1250µs的缝隙对。在单槽封包的简单情况下,主设备在双数槽发送信息、单数槽接受信息。而从设备则正好相反。封包容量可长达1、3、或5个时间隙,但无论是哪种情况,主设备都会从双数槽开始传输,从设备从单数槽开始传输。
Bluetooth的主要技术特点:
(1)、工作频段 :2.4GHz的工科医(ISM)频段,无需申请许可证。大多数国家使用79个频点,载频为(2402+k)MHz(k=0,1, 2…78),载频间隔1MHz。采用TDD时分双工方式。
(2)、传输速率:1Mb/s(V2.0以上版本)
(3)、调试方式:BT=0.5的GFSK调制,调制指数为0.28-0.35。
(4)、采用跳频技术:跳频速率为1600跳/秒,在建链时(包括寻呼和查询)提高为3200跳/秒。蓝牙通过快跳频和短分组技术减少同频干扰,保证传输的可靠性。
(5)、语音调制方式:连续可变斜率增量调制(CVSD,ContinuousVariable Slope Delta Modulation),抗衰落性强,即使误码率达到4%,话音质量也可接受。
(6)、支持电路交换和分组交换业务:蓝牙支持实时的同步定向联接(SCO链路)和非实时的异步不定向联接(ACL链路),前者主要传送语音等实时性强的信息,后者以数据包为主。语音和数据可以单独或同时传输。蓝牙支持一个异步数据通道,或三个并发的同步话音通道,或同时传送异步数据和同步话音的通道。每个话音通道支持64kbps的同步话音;异步通道支持723.2/57.6kbps的非对称双工通信或433.9kbps的对称全双工通信。
(7)、支持点对点及点对多点通信:蓝牙设备按特定方式可组成两种网络:微微网(Piconet)和分布式网络(Scatternet),其中微微网的建立由两台设备的连接开始,最多可由八台设备组成。在一个微微网中,只有一台为主设备(Master),其它均为从设备(Slave),不同的主从设备对可以采用不同的链接方式,在一次通信中,链接方式也可以任意改变。几个相互独立的微微网以特定方式链接在一起便构成了分布式网络。所有的蓝牙设备都是对等的,所以在蓝牙中没有基站的概念。
(8)、工作距离:蓝牙设备分为三个功率等级,分别是:100mW(20dBm)、2.5mW(4dBm)和1mW(0dBm),相应的有效工作范围为:100米、10米和1米。
蓝牙版本信息
蓝牙的主要版本:1.1
、1.2
、2.0
、2.1
、3.0
、4.0
、5.0
。
1.1版本
传输率约在748~810kb/s,因是早期设计,容易受到同频率之产品所干扰下影响通讯质量。
1.2版本
同样是只有748~810kb/s 的传输率,但在加上了(改善 Software)抗干扰跳频功能。
2.0+EDR版本
是1.2的改良提升版,传输率约在1.8M/s~2.1M/s,开始支持双工模式——即一面作语音通讯,同时亦可以传输档案/高质素图片,2.0 版本当然也支持 Stereo 运作。
应用最为广泛的是Bluetooth2.0+EDR标准,该标准在2004年已经推出,支持Bluetooth 2.0+EDR标准的产品也于2006年大量出现。虽然Bluetooth 2.0+EDR标准在技术上作了大量的改进,但从1.X标准延续下来的配置流程复杂和设备功耗较大的问题依然存在。
2.1版本
更佳的省电效果:蓝牙2.1版加入了SniffSubrating的功能,透过设定在2个装置之间互相确认讯号的发送间隔来达到节省功耗的目的。
3.0+HS版本
2009年4月21日,蓝牙技术联盟(Bluetooth SIG)正式颁布了新一代标准规范"Bluetooth Core Specification Version 3.0 High Speed"(蓝牙核心规范3.0版 ),蓝牙3.0的核心是"GenericAlternate MAC/PHY"(AMP),这是一种全新的交替射频技术,允许蓝牙协议栈针对任一任务动态地选择正确射频。最初被期望用于新规范的技术包括802.11以及UMB,但是新规范中取消了UMB的应用。
4.0 版本(也称为Bluetooth Smart)
蓝牙4.0的改进之处主要体现在三个方面:电池续航时间、节能和设备种类上。
4.0版本的一般性改进包括推进蓝牙低功耗模式所必需的改进、以及通用属性配置文件(GATT)和AES加密的安全管理器(SM)服务
蓝牙4.0包括2个版本,再细分的话是3个子规范,即经典蓝牙(BT、其中包括传统蓝牙技术v1.x v2.0
、高速蓝牙v3.0
)和新的蓝牙低功耗技术(BLE, Bluetooth Low Energy Module)。
- 1) 经典蓝牙: 经典蓝牙包括旧有蓝牙协议
- 2) 高速蓝牙: 高速蓝牙基于Wi-Fi
- 3) 蓝牙低功耗协议: 蓝牙低功耗,也就是早前的Wibree,是蓝牙4.0版本的一个子集,它有着全新的协议栈,可快速建立简单的链接。
低功耗蓝牙是建立在传统蓝牙基础之上继而发展的。蓝牙低功耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。另外,因为BLE技术采用非常快速的连接方式,因此可以处于“非连接”状态(节省能源),此时链路两端相互间仅能知晓对方,必要时可以才开启链路,然后在尽可能短的时间内关闭链路。
作为蓝牙1.0 ~ 3.0版本中蓝牙标准协议的替代方案,BLE主要面向对功耗需求极低、用纽扣电池供电的应用。芯片设计可有两种:双模、单模和增强的早期版本。
- 单模情况下,只能执行低功耗的协议栈。意法半导体、笙科电子、CSR、北欧半导体和德州仪器已经发布了单模蓝牙低功耗解决方案。单模芯片的成本降低,使设备的高度整合和兼容成为可能。它的特点之一是轻量级的链路层,可提供低功耗闲置模式操作、简易的设备发现、和可靠地点对多数据传输,并拥有成本极低的高级节能和安全加密连接
- 双模情况下,Bluetooth Smart功能整合入既有的经典蓝牙控制器。截至2011年3月,高通创锐讯、CSR、博通和德州仪器已宣布发表符合此标准的芯片。适用的架构共享所有经典蓝牙既有的射频和功能,相比经典蓝牙的价格上浮也几乎可以忽略不计
拥有低成本,跨厂商互操作性,3毫秒低延迟、100米以上超长距离、AES-128加密等诸多特色此外,蓝牙4.0的有效传输距离也有所提升。3.0版本的蓝牙的有效传输距离为10米(约 32英尺),而蓝牙4.0的有效传输距离最高可达到100米(约328英尺)。
5.0版本
蓝牙5.0针对低功耗设备,有着更广的覆盖范围和相较四倍的速度提升。蓝牙5.0会加入室内定位辅助功能,结合Wi-Fi可以实现精度小于1米的室内定位。
低功耗模式传输速度上限为2Mbps,是之前4.2LE版本的两倍。有效工作距离可达300米,是之前4.2LE版本的4倍。添加导航功能,可以实现1米的室内定位。
为应对移动客户端需求,其功耗更低,且兼容老的版本。
蓝牙 系统 构成
1、Radio : 无线射频单元:
负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线。
2、LinkController :基带或链路控制单元:
进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。
3、LinkManager:链路管理单元:
负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作。
4、蓝牙软件协议实现:
Host部分,不同的主机可以移植不同的协议栈。一般蓝牙芯片通过UART、USB、SDIO、I2S、PcCard和主控芯片通信。
蓝牙协议规范
按照蓝牙协议的逻辑功能,协议堆栈分为3个部分:应用协议、中介协议、传输协议。
某个协议的实现代码称为协议栈(protocol stack)
传输协议
负责蓝牙设备间,互相确认对方的位置,以及建立和管理蓝牙设备间的物理链路;
- 底层传输协议:蓝牙射频(Radio)部分、基带链路管理控制器(Baseband&Link Controller)、链路管理协议(Link ManagerProtocol LMP)。负责语言、数据无线传输的物理实现以及蓝牙设备间的联网组网。
- 高层传输协议:逻辑链路控制与适配器(LogicalLink Control and Adaptation Protocol)L2CAP 、主机控制接口(HostControl Interface,HCI)。为高层应用屏蔽了跳频序列选择等底层传输操作,为高层程序提供有效、有利于实现数据分组格式。
中介协议
为高层应用协议或者程序,在蓝牙逻辑链路上工作提供必要的支持,为应用提供不同标准接口。
- 串口仿真协议:RFCOMM、服务发现协议:SDP、互操作协议IrDA、网络访问协议:PPP、IP、TCP、UDP、电话控制协议:TCS、AT指令集。
应用协议
蓝牙协议栈之上的应用软件和所涉及到的协议,如:拨号上网、语言功能的应用程序。
蓝牙的应用框架如下:
- 通用应用类框架:查询、建立连接服务等;
- 蓝牙电话应用类框架:电话控制、语言;
- 蓝牙连网应用类框架:网络应用相关;
- 对象交互服务类框架:IrDA、OBEX;
- 蓝牙音视频控制类框架。
完整的蓝牙协议栈如下图所示,不是任何应用都必须使用全部协议,而是可以只使用其中的一列或多列。
蓝牙主从模块
- 主机就是能够搜索别人并主动建立连接的一方
- 从机则不能主动建立连接,只能等别人连接自己
- 主从一体就是能够在主机和从机模式间切换,即可做主机也可作从机
蓝牙技术的优缺点
优点:
- 低功率,便于电池供电设备工作
- 便宜,可以应用到低成本设备上
- 同时管理数据和声音传输
- 低延时
缺点:
- 传输距离有限
- 数据传送速率为24 Mb/s
- 不同设备间协议不兼容
- 需要本地数据记录,以确保数据不间断可用
- 存在被攻击的可能性:(拒绝服务攻击、窃听、中间人攻击、消息修改、资源滥用)
蓝牙协议分类
HFP(Hands-free Profile)
HFP(Hands-free Profile),让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话是否支持。
HSP
HSP 描述了 Bluetooth 耳机如何与计算机或其它 Bluetooth 设备(如手机)通信。连接和配置好后,耳机可以作为远程设备的音频输入和输出接口,这是最常用的配置,为当前流行支持蓝牙耳机与移动电话使用。它依赖于在64千比特编码的音频/s的CVSD的或PCM以及AT命令从GSM 07.07的一个子集,包括环的能力最小的控制,接听来电,挂断以及音量调整。典型的使用情景是使用无线耳机与手机进行连接。可能会使用HSP的若干设备类型:耳机、手机、PDA、个人电脑、手提电脑
A2DP
A2DP全名是Advanced Audio Distribution Profile(蓝牙音频传输模型协定),A2DP是能够采用耳机内的芯片来堆栈数据,达到声音的高清晰度。有A2DP的耳机就是蓝牙立体声耳机。声音能达到44.1kHz,一般的耳机只能达到8kHz。如果手机支持蓝牙,只要装载A2DP协议,就能使用A2DP耳机了。还有一般所说的技术参数提到蓝牙V1.0 V1.1 V1.2 V2.0——这些是指蓝牙的技术版本,是指通过蓝牙传输的速度,他们是否支持A2DP具体要看蓝牙产品制造商是否使用这个技术
AVRCP
- AVRCP(Audio/Video Remote Control Profile),也就是音频/视频远程控制规范
- AVRCP设计用于提供控制TV、Hi-Fi设备等的标准接口。此配置文件用于许可单个远程控制设备(或其它设备)控制所有用户可以接入的A/V设备。它可以与 A2DP 或 VDP 配合使用
- AVRCP定义了如何控制流媒体的特征。包括
1) 暂停
2) 停止
3) 启动重放
4) 音量控制
5) 其它类型的远程控制操作- AVRCP 定义了两个角色
1) 控制器: 控制器通常为远程控制设备,控制器将检测到的用户操作翻译为 A/V 控制信号,然后再将其传输至远程 Bluetooth 设备。对于"随身听"类型的媒体播放器,控制设备可以是允许跳过音轨的耳机
2) 目标设备: 目标设备为特征可以更改的设备。在 AVRCP 中,目标设备则是实际的播放器。常规红外遥控器的可用功能可以在此协议中实现- AVRCP 协议规定了AV/C 数字接口命令集的应用范围,实现了简化实施和易操作性。此协议为控制消息采用了AV/C 设备模式和命令格式,这些消息可以通过音频/视频控制传输协议 (AVCTP) 传输
OPP
蓝牙通信程序部分需采用用于设备之间传输数据对象OPP Profile: Object Push Profile由于OPP profile又细分为OPPC (client)端和OPPS(server)端profile,这两个profile区别在于只有client端可以发起数据传输的过程,但是附件设备与手机通信的情景中,既有手机发起数据传输请求也有设备侧发起传输请求的需要,所以要在设备中实现OPPC和OPPS两个profile
PBAP
电话号码簿访问协议(Phonebook Access Profile)
蓝牙 BLE 协议学习: 000-有关概念介绍的更多相关文章
- 蓝牙 BLE 协议学习: 001-BLE协议栈整体架构
背景 在深入BLE协议帧之前,我们先看一下BLE协议栈整体架构. 转载自:<深入浅出低功耗蓝牙(BLE)协议栈> 架构 如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片, ...
- 蓝牙 BLE 协议学习: 3种蓝牙架构实现方案(蓝牙协议栈方案)
导言 不同的蓝牙架构可以用在不同的场景中.从而协议帧的架构方案也会不同. 转载自:<三种蓝牙架构实现方案(蓝牙协议栈方案)> 蓝牙架构实现方案有哪几种?我们一般把整个蓝牙实现方案叫做蓝牙协 ...
- [蓝牙] 2、蓝牙BLE协议及架构浅析&&基于广播超时待机说广播事件
第一章 BLE基本概念了解 一.蓝牙4.0和BLE区别 蓝牙4.0是一种应用非常广泛.基于2.4G射频的低功耗无线通讯技术.蓝牙低功耗(Bluetooth Low Energy ),人们又常称之为 ...
- USB2.0协议学习笔记---基本概念
概念 USB是一种串行通信总线(Universal Serial Bus),经历的版本有USB1.0,USB1.1.USB2.0等.USB是一种主从模式的结构,因此它无法在设备与设备.主机与主机之间 ...
- 蓝牙(Bluetooth) IEEE 802.15.1 协议学习
catalogue . 蓝牙概念 . 配对和连接 . 机密安全性 . 蓝牙协议分类 . 蓝牙协议栈 1. 蓝牙概念 蓝牙(Bluetooth)是一种无线技术标准,可实现固定设备.移动设备和楼宇个人域网 ...
- 玩转BLE(3)_使用微信蓝牙精简协议伪造记步数据
1. 前言 在物联网时代,有一个问题肯定会让人头疼(现在已经初露端倪了): 物联网中的IOT设备有两个主要特点: 1)简单小巧(不具备复杂的人机交互接口,需要手机等终端设备辅助完成配置.控制等功能). ...
- 蓝牙协议分析(3)_BLE协议栈介绍
1. 前言 通过“蓝牙协议分析(2)_协议架构”的介绍,大家对蓝牙协议栈应该有了简单的了解,但是,肯定还有“似懂非懂.欲说还休”的感觉.有这种感觉太正常了,毕竟蓝牙协议是一个历史悠久又比较庞大的协议, ...
- 蓝牙BLE: ATT协议层中属性(Attribute)
ATT(Attribute Protocol)属性层是GATT和GAP的基础,它定义了BLE协议栈上层的数据结构和组织方式. 属性(Attribute)概念是ATT层的核心,ATT层定义了属性的内容, ...
- 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍
第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...
随机推荐
- 【PAT甲级】1067 Sort with Swap(0, i) (25 分)
题意: 输入一个正整数N(<=100000),接着输入N个正整数(0~N-1的排列).每次操作可以将0和另一个数的位置进行交换,输出最少操作次数使得排列为升序. AAAAAccepted cod ...
- mysqld: Can't change dir to 'D:\TONG\mysql-5.7.19-winx64\data\' (Errcode: 2 - No such file or directory)
mysqld: Can't change dir to 'D:\TONG\mysql-5.7.19-winx64\data\' (Errcode: 2 - No such file or direct ...
- linux动态监控dstat&&glances&&psutil&&bottle
安装dstat yum install dstat 安装glances yum install python-devel pip install glances 如果我们安装了 Bottle 这个 w ...
- knockout 简单使用
定义: var QcViewModel = function () { var self = this; self.name = ko.observable(); self.qty = ko.obse ...
- faster-RCNN 加入新的Ground Truth
出于project的需要,不仅要detect和classify对象,还希望建立不同class的对象之间的关系,进行所谓的pair-matching. 需要完成以下几步: 1. dataset中labe ...
- iOS项目的一般开发流程
- php的弱类型比较
1.==和=== ==为弱相等,也就是说12=="12" --> true,而且12=="12cdf" --> true,只取字符串中开头的整数部分 ...
- JavaScript高级特征之面向对象笔记二
Prototype 1. 当声明一个函数的时候,浏览器会自动为该函数添加一个属性prototype, 2. 该属性的默认值为{} 3. 可以动态的给prototype增加key和value值 4 ...
- Mybatis的逆向工程以及Example的实例函数及详解
Mybatis-generator是Mybatis的逆向工程 (根据数据库中的表生成java代码) Mybatis的逆向工程会生成实例及实例对应的example,example用于添加条件,相当于w ...
- 吴裕雄--天生自然PythonDjangoWeb企业开发:解决使用相对路径名导入包中子模块问题
问题 将代码组织成包,想用import语句从另一个包名没有硬编码过的包中导入子模块. 解决方案