【全志T113-S3_100ask】——什么是BLE?

一、BLE简介

1、什么是蓝牙?

短距离的通讯技术,可以实现固定设备和移动设备之间进行数据交换。

传统蓝牙:蓝牙3.0之前

低功耗蓝牙:蓝牙4.0规下

2、经典蓝牙与BLE蓝牙的区别

BLE相对于传统蓝牙:成本和功耗的降低,应用实时性要求比较高,适用于:微型无线传感器(每半秒交换一次数据)、使用完全异步通信的遥控器等发送数据量非常小的、发送次数少的设备。

经典蓝牙:一般用于数据量比较大的传输,如语音、音乐等。

3、BLE蓝牙的特点

短距离、低成本、可互操作性的无线技术、低功耗、供电时间长、连接速度快。

二、BLE协议栈

1、BLE协议栈的作用:

用来对应用数进行层层封包,以产生一个满足BLE协议的空中数据包(即:帧头+应用数据+帧尾

2、蓝牙协议规定了两个层次的协议:

(1)蓝牙核心协议(Bluetooth Core)

蓝牙核心协议又分为:BLE Controller 和 BLE Host

Controller:负责定义偏硬件的规范,并抽象出用于通信的逻辑链路

Host:负责在逻辑链路的基础上进行封装

(2)蓝牙应用层协议(Bluetooth Application)

在蓝牙核心层协议的基础上,根据用户的需求定义出各种各样的功能。

(3)BLE低功耗蓝牙核心协议层

  1. 物理层(PHY)

用来指定:无线频段、调制解调方式和方法等。决定了BLE芯片的功耗、灵敏度以及selecttivity等射频指标。

  1. 链路层(LL)

整个BLE协议栈的核心

选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。

该层只负责收发数据,不对数据进行解析(解析数据由GAP、ATT完成)

  1. 主机控制接口层(HCI)

HCL属于可选部分,主要用于两个芯片实现BLE协议栈的场合(用于规范两者之间的通信协议、通信命令等)

  1. 通用访问配置文件层(GAP)

主要用来:广播、扫描、发起连接

  1. 逻辑链路控制及自适应协议层(L2CAP)

对LL进行一次简单的封装。LL层关心传输的数据本身,而L2CAP需要区分加密通道还是普通通道,同时还要对连接间隔进行管理

  1. 安全管理层(SM)

负责管理BLE连接的加密和安全

  1. 属性协议层(ATT):开发者接触最多的协议层

用于:定义用户命令和命令操作的数据(如:读写某个数据)

BLE引入“属性(attribute)“概念来描述一条条数据,”属性“除了定义数据,还定义该数据可以使用的ATT命令。

  1. 通用属性配置文件层(GATT)

用于规范“属性”中的数据内容,并用group(分组)进行分类管理

(4)ATT协议中的属性(attribute)

ATT属性层是GATT和GAP的基础,它定义了BLE协议栈上层的数据结构和组织方式

属性是ATT层的核心,ATT层定义了属性的内容,规定了访问属性的方法和权限。

属性包括三种类型:服务项(service)、特征值(charracteristic)、描述符

服务项包含(一个或多个)特征值,特征值包含(一个或多个)描述符;多个服务组织在一起,就构成属性规范。

  1. 属性的组成(数据结构)
属性句柄(Attribute Handler):

通过属性句柄来访问该属性(类似于C语言中指针的访问),2字节,0x0001~0xFFFF,初始化时各个属性的句柄逐步加1.

属性类型(Attribute Type):

UUID来表示、区分是服务项还是特征值

UUID(universally unique identifier,通用唯一识别码)是一个软件构建标准,并非BLE独有的概念,一个合法的UUID,一定是随机的、全球唯一的,不应该出现两个相同的UUID。

BLE的属性类型是有限的,有四个大类:

Primary Service(首要服务项)

Secondary Service(次要服务项)

Include(包含服务项)

Characteristic(特征值)

BLE对这些UUID与属性类型的映射关系做了规定:

0x1800 – 0x26FF :服务项类型

0x2700 – 0x27FF :单位

0x2800 – 0x28FF :属性类型

0x2900 – 0x29FF :描述符类型

0x2A00 – 0x7FFF :特征值类型

标准的UUID是一串16字节十六进制字符串,但对于一些常用的UUID,为了减少传输的数据量,BLE协议做了一个转换约定,给定一个固定的16字节模板,只设置2个字节为变化量,其他为常量,2字节的UUID在系统内部会被替换,进而转换成标准的16字节UUID。

属性值(Attribute Value):

用于存放数据

如果该属性是服务项类型或者是特征值声明类型,那么它的属性值就是UUID等信息。如果是普通的特征值,则属性值是用户的数据。

操作特征值里的用户数据,就是对那块内存空间进行读写。

属性权限(Attribute Permissions):

主要有以下四种:

访问权限(Access Permission)- 只读、只写、读写

加密权限(Encryption Permission) – 加密、不加密

认证权限(Authentication Permission) – 需要认证、无需认证

授权权限(Authorization Permission) – 需要授权、无需授权

3、BLE中的GAP和GATT

BLE连接都是建立在GATT协议之上的。

(1)GAP

GAP用来控制设备连接和广播。(也就是说GAP使你的设备被其他设备可见,并决定了你的设备是否可以或者怎样与其他设备进行交互。)

  1. 设备角色

GAP为设备定义了许多角色:最主要的是外围设备(如手环:用于提供数据)、中心设备(如手机:用来连接其他外围设备)

  1. 广播数据

在 GAP 中外围设备通过两种方式向外广播数据: Advertising Data Payload(广播数据)和 Scan Response Data Payload(扫描回复),每种数据最长可以包含 31 byte。这里广播数据是必需的,因为外设必需不停的向外广播,让中心设备知道它的存在。扫描回复是可选的,中心设备可以向外设请求扫描回复,这里包含一些设备额外的信息,例如设备的名字。

大部分情况下,外设通过广播自己来让中心设备发现自己,并建立GATT连接,从而进行更多的数据交换。

(2)GATT

GATT协议必须先经过GAP协议。

一旦两个设备建立起了连接,GATT 就开始起作用了。

中心设备和外设需要双向通信的话,唯一的方式就是建立GATT 连接。

GATT 定义两个BLE设备通过Service和Characteristic进行通信。

GATT使用ATT协议,把Service、Characteristic以及对应的数据保存在一个查找表中,次查找表使用16bit ID作为每一项的索引。

GATT 连接需要注意的是:GATT 连接是独占的,即一个BLE外设同时只能被一个中心设备连接,一旦外设被连接,它就会立马停止广播,这样它就对其他设备不可见了。

一旦建立了连接,通信就是双向的了。而前边的GAP广播通信则是单向的(外设进行广播)。

如果要让两个外设进行通信,就只能通过中心设备中转。

  1. GATT通信事务

GATT通信的双方是C/S关系。

外设作为GATT服务端(Server),维持了ATT的查找表以及service和characteristic的定义。

中心设备是GATT客户端(Client),它向Server发起请求。

需要注意,所有的通信事件,都是由客户端(也叫主设备,Master)发起,并且接收服务端(也叫从设备,Slave)的响应。

一旦建立连接,外设会给中心设备建议一个连接间隔(Connection Interval),这样中心设备就会在每个间隔尝试去重新连接,检查是否有新数据。这个连接间隔只是个建议。

  1. GATT结构

Profile

一种规范,一种标准的通信协议。每个profile中会包含多个service服务,每个service代表该从机的一种能力。

Service

一种服务,也就是从机的能力。例如,蓝牙从机的电量信息服务、系统信息服务等。每个service中又包含多个characteristic特征值,每个具体的characteristic才是BLE通信的主题。

Characteristic

特征值,BLE主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。

举个例子,Heart Rate Measurement Characteristic。

这个 Characteristic 是Heart Rate Service必须实现的,它的UUID为0x2A37。它的数据结构是,开始8bit定义心率数据格式,后边的是对应格式的实际心率数据。

UUID

统一标识码,service 和 characteristic 都需要一个唯一的UUID来标识。

三、操作蓝牙

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DING_WEI_GUANG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值