蓝牙基础知识

蓝牙基础知识

蓝牙参考资料

BLE 协议系列CSDN参考

蓝牙基础知识

蓝牙通信协议也是通信协议的一种,目的就是把复杂的问题简单化,任何通信协议都具有层次性,特点如下:

  • 从下到上分层,通过层层封装,每一层只需要关心特定的、独立的功能,易于实现和维护

  • 在通信实体内部,下层向上层提供服务,上层是下层的用户。

  • 在通信实体之间,协议仅针对每一层。实体间的通信,就像每一层之间的通信一样,这样有利于交流、理解、标准化。

当前的蓝牙协议包括BR/EDR(Basic Rate/Enhanced Data Rate)、AMP(Alternate MAC/PHYs)、LE(Low Energy)三种技术。

在这里插入图片描述

蓝牙技术特点

  • 蓝牙4.0版本包括3个子规范,即传统蓝牙技术、高速蓝牙和低功耗蓝牙技术。

    目前移动设备上适用的蓝牙大多是V4.0以上,经典V4.0是传统的3.0蓝牙升级而成,向下兼容。而BLE4.0 是新的分支,不向下兼容。经典蓝牙模块,一般用于数量比较大的传输:如语音、音乐等较高数据量传输。经典蓝牙模块可细分为传统蓝牙模块和高速蓝牙模块。低功耗蓝牙模块是指支持蓝牙协议4.0或更高的模块,特点是成本和功耗的降低,应用于实时性要求比较高的产品中。

  • 蓝牙V4.1 以“internet of things”为目标对V4.0进行软件升级,在连接性进行提升(在硬件层面V4.0无需任何改动即可使用V4.1)。表现在:

    • V4.1标准下蓝牙设备可以同时作为发射方(bt smart,v4.0上贴着的)和接收方(bt smart Ready),并且可以连接到多个设备上。 (主从一体,如智能手环作为主 和防丢器连接,同时也可以作为从 和智能手机相连)
    • 长期睡眠下的自动唤醒功能(离开则断开,回来则直接连上)
    • 通过IPV6建立网络连接 -----即蓝牙芯片设备可以取得互联网上的唯一标记,与其他的联网设备进行通信,即蓝牙V4.1连上可上网的设备后,就可以直接利用IPV6连接网络了,实现和WIFI模块相同的功能,但在兼容性上还在做改进。
  • 蓝牙V4.2改善了数据传输速度和隐私保护程度,并接入了该设备将可直接通过IPv6和6LoWPAN接入互联网。 速度提高2.5,数据包容量相当于之前的10倍。低功耗从260kbps —> 650Kbps,全功耗仍为2.1Mbps。 新标准为固件升级提供了支持

  • V4.1 和V4.2都在规格书上添加对无线共存项的测试,因此在4G共存上确保与其的共存性。

蓝牙模块分类标准

  • 按支持的蓝牙协议分

    • 单模蓝牙模块:支持蓝牙某一种协议的模块;
    • 双模蓝牙模块: 同时支持经典蓝牙(BT)和低功耗蓝牙(BLE)协议的模块。
  • 按应用分

  • 蓝牙数据模块:一般多使用BLE低功耗蓝牙模块;

  • 蓝牙音频模块:音频需要大码流的数据传输更适合使用BT经典蓝牙模块。

低功耗蓝牙和传统蓝牙实际上有很大的不同,低功耗蓝牙是nokia的wibree标准上发展起来的。在功耗上,传统蓝牙有3个级别的功耗,class1、class2、class3分别支持100m、10m、1m的传输距离;低功耗蓝牙没有功耗级别,一般发送功率在7dbm。

低功耗蓝牙协议栈

BLE起源

BLE起源于Bluetooth 4.0,最初由诺基亚设计为WiBree,后被蓝牙技术联盟–SIG(Bluetooth Special Interest Group)采用。从一开始,重点就是设计一款具有最低功耗标准的无线电标准,专门针对低成本、低带宽、低功耗、低复杂度进行优化。这些设计目标试图使BLE成为真正的低功耗标准,由芯片供应商实施,并在一个不起眼的纽扣电池供电下运行更长的时间。

BLE发展历程

  • BLE4.0 :低功耗、属性协议ATT、通用属性配置文件GATT
  • BLE4.1 :低功耗、属性协议ATT、通用属性配置文件GATT
  • BLE4.2 :LE数据包长度扩展、安全连接
  • BLE5.0 :2Mbps传输、长距离(4.2LE的4倍)、扩展广播(4.2LE的8倍)、发射功率增加(4.2LE的2倍)
  • BLE5.1 :AoA/AoD、广播信道索引、定期广告同步传送

协议栈架构

BLE工作在免许可的2.4G ISM射频端,它一开始就设计为高低功耗无线技术。

BLE协议可分为2大部分:BLE Application 和BLE Core ;而BlueTooth core又包括 BLE controllerBLE Host 2部分。

BLE Core 包括Controller 到Host的L2CAP层,以及相关的核心profile.

BlueTooth Application 包括各种各样的profile(规范),如HOGP、A2DP、HFP、OOP等。

在这里插入图片描述

蓝牙协议规定了两个层次的协议,分别为蓝牙核心协议(Buletooth Core)和蓝牙应用层协议(Bluetooth Application).蓝牙核心协议关注对蓝牙核心技术的描述和规范,它只提供基础的机制,并不关心如何使用这些机制;应用层协议,是在蓝牙核心协议的基础上,根据具体的应用需求,定义出各种各种的策略,如FTP,文件传输,局域网等。

Controller负责定义RF、Baseband等偏硬件的规范,并在这之上抽象出用于通信的逻辑链路(Logical Link);Host负责在逻辑链路的基础上,进行更为友好的封装,这样就可以屏蔽掉蓝牙技术的细节,让Bluetooth Application更为方便的使用。

在一个系统中,Host只有一个,但Controller可以是一个,或多个。如:单独的LE Controller,单独的BR/EDR Controller,单独的LE+BR/EDR Controller;在单独的BR/EDR Controller或LE+BR/EDR Controller基础上,增加一个或多个AMP Controller。

通信实体内从下到上各层分析

Physical Layer 物理层

任何一个通信系统,首先要确定的是通信介质(通信通道,Physical Channel)

Physical Layer(PHY) ----PHY层用来指定BLE所用的无线频段、调制解调方式和方法。

具体描述:由于BLE属于无线通信,则其通信介质是一定频率范围下的频带资源(Frequency Band);BLE的市场定位是个体和民用,因此使用免费的ISM频段(频率范围是2.400~2.4835GHz);为了同时支持多个设备,将整个频带分为40份,每份的带宽为2MHz,称为RF Channel。--------BLE的物理通道 频点为f=2402+K*2 MHz k=0~39,带宽为2MHz的40个RF Channel。

除了物理通道之外,Physical Layer还需要定义RF收发双方的而一些其他特性:

RF发射相关的特性(Transmitter Characteristics),包括发射功率(Transmission power、调制方式(Modulation),高斯频移键控(Gaussian Frequency Shift Keying ,GFSK)、Spurious Emissions、Radio Frequency Tolerance等等。

RF接收相关的特性(Receiver Characteristics),包括接收灵敏度等。

Link Layer 链路层

主要功能:在Physical Channel(即40个RF Channel)上可靠收发数据。需要控制RF收发相关的参数以及解决Physical Channel的共享问题,还需要(对于两个通信实体),有一条独享的传输通道(即logical Link,逻辑链路)。另外,由于Physical Channel是不可靠的,Link Layer需要提供校验、重传等机制,确保数据传输的可靠性。

解决问题1:Physical Channel的共享问题

  • 数据量比较少、发送不频繁、对时延不很敏感的场景。 例如一个传感器节点(如温度传感器),需要定时(如1s)向处理中心发送传感器数据(如温度)。 这种场景,BLE的Link Layer采取了一种比较懒的处理方式----广播通信:

    • 从40个Physical Channel中选取3个,作为广播通道(advertising channel);
    • 在广播通道上,任何参与者,随意收发;
    • 所有参与者,共享同一个逻辑传输通道(广播通道)
  • 数据量大、发送频率高、对时延较敏感的场景

    • BLE的Link Layer会从剩余的37个Physical Channel中,选取一个,为这种场景里面的通信双方建立单独的通道(data channel)。这就是连接(connection)的过程。
    • 为了增加容量,增大抗干扰能力,连接不会长期使用一个固定的Physical Channel,而是在多个Channel(如37个)之间随机但有规律的切换,这就是BLE的跳频(Hopping)技术。

解决问题2:如何建立独享的逻辑链路----状态和角色定义

BLE协议在Link Layer抽象出5中状态:

Standby State(待机状态)、Advertising State(广播状态)、Scanning State(扫描状态)、Initiating State(发起状态)、Connection State(连接状态)。 同一时刻设备只能处于一种状态。

注意 双向箭头和单向箭头

Link Layer 状态机变化图
在这里插入图片描述

1、Standby 状态是初始状态,既不发送数据,也不接受数据。根据上层实体的命令(如位于Host软件中GAP),可由其他任何一种状态进入,也可以切换至除Connection状态外的任何一种状态。

2、Advertising 状态是可以通过广播通道发送数据的状态,由Standby状态进入。Advertiser广播的数据可以由处于Scanning或者Initiating状态的实体接收。上层实体可通过命令将Advertising状态切换回Standby状态。另外,连接成功后,可切换至Connection状态。

3、Scanning 状态是可以通过广播通道接收数据的状态,由Standby状态进入。上层实体可通过命令将Scanning状态切换回Standby状态。

4、Initiating 状态和Scanning状态类似,不过是一种特殊的接受状态,由Standby状态进入,只能接受Adverstiser广播的connectable的数据,并在接收到数据后,发送连接请求,以便和Advertiser建立连接。当连接成功后,Initiater和对应的Adverstiser都会切换至Connection状态,

5、Connection 状态是和某个实体建立了单独通道的装填,在通道建立之后,由Initiating或Advertising自动切换而来。通道断开后,会重新回到Standby状态。

在通道建立后,处于Connection状态的双方,有两种角色Master和Slave。

对于Initiater方称作Master; Advertiser方为Slave。 主机从机两种角色。

解决问题3:可靠性—空中点对点通信协议

1、在某一状态下,和其他实体对应状态之间的数据交换机制;2、根据上层实体的指令,以及当前的实际情况,负责状态间切换。---------由空中接口协议(Air Interface Protocol)处理。

  • 两种类型的Physical Channel(advertising channel 和data channel)统一使用一种packet format。

Preamble(1 octet) Access Address(4 octets) PDU(2 to 257 octets) CRC(3 octets)

在这里插入图片描述

Access Address,用于识别是数据包还是广播包。

PDU,BLE在Link Layer的PDU长度最大为257 octets(octets当做bytes就行了)。这决定了上层实体,如L2CAP、Application等,需要拆分、重组才能支持更大数据量的传输。

Link Layer总packet长度是9~264bytes。

  • Link Layer有5种状态,每种状态下所传输数据的功能不尽相同。所以,Air Interface Protocol定义出多种的PDU类型 。

  • 以白名单(White List)的形式定义Link Layer的数据过滤机制。主要针对广播通道,因为随着通信设备的增多,空中的广播数据将会呈几何级的增长,为了避免资源的浪费(特别是BLE Host),有必要在Link Layer过滤掉一些数据包,例如根据蓝牙地址,过滤掉不是给自己的packet。

  • Link Layer Control
    经过Air Interface Protocol的抽象,BLE实体已经具备广播通信、点对点连接的建立和释放、点对点通信等基本的能力。除此之外,Link Layer又抽象出来一个链路控制协议(Link Layer Control),用于管理、控制两个Link Layer实体之间所建立的这个Connection,主要功能包括:
    更新Connection相关的参数,如transmitWindowSize、transmitWindowOffset、connInterval等等;
    更新该连接所使用的跳频图谱(使用哪些Physical Channels);
    执行链路加密(Encryption)有关的过程。

HCI

HCI 的全称是: Host Controller Interface ,是 Host 和 Controller 通信之间的接口。

一般的,BLE 是一颗单芯片的解决方案,芯片集成了所有的软硬件资源,对于单独的产品来说,可能出现以下产品形态:

1、Full stack:从上到下的协议栈全部都有,用户简单的写 App 调用接口即可,此刻,HCI 退化成为 Function Call(比如手环产品,节点控制器,单车控制器等等)

2、Only Controller:有的产品,只需要 Controller 不要 Host 和 APP,BLE 芯片作为一个外挂芯片,接到主控芯片上,主控芯片通过标准的 HCI 指令(通常介质为 UART)与 BLE 芯片交互。此刻,HCI 便成为了一种两颗芯片之间的通信协议(比如手机上 AP 和 BLE 就是这样的关系)

3、Only Host:Android 不就是么

BLE Core Spec 支持的 HCI 种类有 4 种:UART、USB、SDIO、3-Wire UART

HCI Type

HCI packet typeHCI packet indicator
HCI Command Packet0x01
HCI ACL Data Packet0x02
HCI Synchronous Data Packet0x03
HCI Event Packet0x04

因为 HCI 是双向的,发给 Controller 的命令称之为 HCI Command,Controller 发给上层的成为 HCI Event。

如果上层要给 Controller 发数据,那么叫 HCI ACL Data Packet。在 LE 中,HCI Synchronous Data Packet 没用,不管。

L2CAP

Logical Link Control and Adaptation Protocol 。 一个介于应用程序(Profile、Application等)和Link Layer之间的protocol 。

功能主要包括:

  • Protocol/channel multiplexing,协议/通道的多路复用;
  • Segmentation and reassembly,上层应用数据(L2CAP Service Data Units,SDUs)的分割(和重组),生成协议数据单元(L2CAP Packet Data Units,PDUs),以满足用户数据传输对延时的要求,并便于后续的重传、流控等机制的实现 ;
  • Flow control per L2CAP channel,基于L2CAP Channel的流控机制;
  • Error control and retransmissions,错误控制和重传机制;
  • Support for Streaming,支持流式传输(如音频、视频等,不需要重传或者只需要有限重传);
  • Fragmentation and Recombination,协议数据单元(PDUs)的分片(和重组),生成符合Link Layer传输要求的数据片(长度不超过251);
  • Quality of Service,QoS的支持。

ATT

Attribute Protocol 。

Physical Layer负责提供一系列的Physical Channel;
基于这些Physical Channel,Link Layer可在两个设备之间建立用于点对点通信的Logical Channel;
而L2CAP则将这个Logical Channel换分为一个个的L2CAP Channel,以便提供应用程序级别的通道复用。到此之后,基本协议栈已经构建完毕,应用程序已经可以基于L2CAP欢快的run起来了。

物联网中最重要、最广泛的一类应用是:信息的采集。
这些信息往往都很简单,如温度、湿度、速度、位置信息、电量、等等。
采集的过程也很简单,节点设备定时的向中心设备汇报信息数据,或者,中心设备在需要的时候主动查询。
基于信息采集的需求,BLE抽象出一个协议:Attribute protocol,该协议将这些“信息”以“Attribute(属性)”的形式抽象出来,并提供一些方法,供远端设备(remote device)读取、修改这些属性的值(Attribute value)。

Attribute Protocol的主要思路包括:

  • 基于L2CAP,使用固定的Channel ID
  • 采用client-server的形式。提供信息(以后都称作Attribute)的一方称作ATT server(一般是那些传感器节点),访问信息的一方称作ATT client。
  • 一个Attribute由Attribute Type、Attribute Handle和Attribute Value组成。
  • Attribute可以定义一些权限(Permissions),以便server控制client的访问行为,包括:
  • 访问有关的权限(access permissions),Readable、Writeable以及Readable and writable;
  • 加密有关的权限(encryption permissions),Encryption required和No encryption required;
  • 认证有关的权限(authentication permissions),Authentication Required和No Authentication Required;
  • 授权有关的权限(authorization permissions),Authorization Required和No Authorization Required。
  • 根据所定义的Attribute PDU的不同,client可以对server有多种访问方式,包括:
    • Find Information,获取Attribute type和Attribute Handle的对应关系;
    • Reading Attributes,有Read by type、Read by handle、Read by blob(只读取部分信息)、Read Multiple(读取多个handle的value)等方式;
    • Writing Attributes,包括需要应答的writing、不需要应答的writing等。

GATT

ATT之所以称作“protocol”,是因为它还比较抽象,仅仅定义了一套机制,允许client和server通过Attribute的形式共享信息。而具体共享哪些信息,ATT并不关心,这是GATT(Generic Attribute Profile)的主场。

GATT相对ATT只多了一个‘G‘,但含义却大不同,因为GATT是一个profile(更准确的说是profile framework)。
在蓝牙协议中,profile一直是一个比较抽象的概念,我们可以将其理解为“应用场景、功能、使用方式”都被规定好的Application。传统的BR/EDR如此,BLE更甚。上面我们讲过,BLE很大一部分的应用场景是信息(Attribute)的共享,因此,BLE协议栈基于Attribute Protocol,定义了一个称作GATT(Generic Attribute)的profile framework(它本身也是一个profile),用于提供通用的、信息的存储和共享等功能。

在这里插入图片描述
由上图可知,GATT profile的层次结构依次是:Profile—>Service—>characteristic。

“Profile”是基于GATT所派生出的真正的Profile,位于GATT Profile hierarchy的最顶层,由一个或者多个和某一应用场景有关的Service组成。
一个Service包含一个或者多个Characteristic(特征),也可以通过Include的方式,包含其它Service。

Characteristic则是GATT profile中最基本的数据单位,由一个Properties、一个Value、一个或者多个Descriptor组成。
Characteristic Properties定义了characteristic的Value如何被使用,以及characteristic的Descriptor如何被访问。
Characteristic Value是特征的实际值,例如一个距离特征,其Characteristic Value就是距离长度。
Characteristic Descriptor则保存了一些和Characteristic Value相关的信息(例如value记录距离长度,那么Descriptor可以是长度单位m/km)。

以上除“Profile”外的每一个定义,Service、Characteristic、Characteristic Properties、Characteristic Value、Characteristic Descriptor等等,都是作为一个Attribute存在的,包括之前所描述的Attribute的所有特征:Attribute

Handle、Attribute Types、Attribute Value和AttributePermissions。

GAP

Generic Access Profile .

BLE协议栈定义了一个称作Generic Access(通用访问)的profile,以实现如下功能:

1)定义GAP层的蓝牙设备角色(role)
和3.3中的Link Layer的role类似,只不过GAP层的role更接近用户(可以等同于从用户的角度看到的蓝牙设备的role),包括:
Broadcaster Role,设备正在发送advertising events;
Observer Role,设备正在接收advertising events;
Peripheral Role,设备接受Link Layer连接(对应Link Layer的slave角色);
Central Role,设备发起Link Layer连接(对应Link Layer的master角色)。

2)定义GAP层的、用于实现各种通信的操作模式(Operational Mode)和过程(Procedures),包括:
Broadcast mode and observation procedure,实现单向的、无连接的通信方式;
Discovery modes and procedures,实现蓝牙设备的发现操作;
Connection modes and procedures,实现蓝牙设备的连接操作;
Bonding modes and procedures,实现蓝牙设备的配对操作。

3)定义User Interface有关的蓝牙参数,包括:
蓝牙地址(Bluetooth Device Address);
蓝牙名称(Bluetooth Device Name);
蓝牙的pincode(Bluetooth Passkey);

蓝牙的class(Class of Device,和发射功率有关);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值