【沁恒 CH58x 应用】BLE相关知识基础

发布时间 2023-12-18 22:43:02作者: FBshark

大纲:

1. 什么是ble,ble与传统蓝牙的区别,ble与蓝牙4.0的区别

2. ble的基本概念:协议层(协议框架)、服务(Service)、特征(Characteristic)。

 

介绍低功耗蓝牙

1. 什么是低功耗蓝牙?

图1 BLE介绍

低功耗蓝牙,简称BLE,是蓝牙的一种省电变体。BLE 的主要应用是少量数据(低带宽)的短距离传输。与始终开启的传统蓝牙不同,BLE 始终处于睡眠模式,除非在启动连接时。

这使得它消耗非常低的功率。BLE 的功耗比传统蓝牙低大约 100 倍(取决于用例)。

由于其特性,BLE 主要强调一个纽扣电池能够工作几年的这种省电性能。例如,BLE 在医疗保健、健身、跟踪、信标、安全和家庭自动化行业中非常有用。

图2 BLE应用领域

2. 与传统蓝牙的区别

主要有两点区别:

  • 低带宽:
  • 低功耗

图3 BLE设备的低带宽特性

Bluetooth和BLE的主要区别之一在于通信带宽。如果是发送数据量比较大的应用,比如蓝牙耳机等需要发送音频数据的设备,不适合用BLE通信方式,因为与普通的文本信息不同,这类应用对通信速度和功耗是有一定要求的。BLE的功耗较低,适用于简单的电源ON/OFF状态和可以用文本和数字简单表达的数据通信。(*BLE有时不需要配对)

请查看下表,它更详细地比较了 BLE 和蓝牙(经典)

图4 BLE与传统蓝呀的对比

3. BLE和蓝牙4.0的区分

通常在了解一点蓝牙的朋友看来,往往将BLE等同于蓝牙4.0,其实不然。

蓝牙4.0是协议,4.0是协议版本号,蓝牙4.0是2010年6月由SIG(Special Interest Group)发布的蓝牙标准,它有2种模式:

BLE(Bluetooth low energy)只能与4.0协议设备通信,适应节能且仅收发少量数据的设备(如家用电子);

BR/EDR(Basic Rate / Enhanced Data Rate),向下兼容(能与3.0/2.1/2.0通信),适应收发数据较多的设备(如耳机)。这个模式常常也有人称之为“传统蓝牙”或“经典蓝牙”。

可以这样理解,蓝牙4.0协议包含BLE,BLE隶属于蓝牙4.0协议的一部分。

 

BLE 的基本概念:协议框架、服务、特征

1. BLE的协议框架

图5 BLE协议框架

最上面绿色的部分是应用层,主要是gatt和att我们可以把它看作是同一层。
sm是安全管理层,负责管理安全。
最下面link layer层和phy层基本上就是一些rf的处理。

2. 识别和配对

使用Bluetooth时,需要经过“配对”和“连接”的步骤。对于无线LAN而言,通常需要输入密码才能连接到接入点,而Bluetooth通信则需要一个设备检测并登录(认证)另一个设备的过程。

图6 BLE配对(pair)

比如您想通过Bluetooth功能使用智能手机和耳机时,您需要先进行配对设置,这就像一个面对面的识别(即认证、信息注册)仪式,允许目标设备之间相互连接。如果没有这个仪式,比如,如果Bluetooth采用与无线LAN一样的机制,那么有可能发生这种事情:A正在使用耳机的过程中,B用密码认证将A的耳机与自己的智能手机连接起来,A的耳机上会播放B的智能手机上正在播放的音乐。为了防止这种问题,Bluetooth采用了一种对设备之间进行身份验证和注册、并在使用时只允许连接已注册设备的机制。
所以,对于Bluetooth设备而言,基本上每个Bluetooth模块只能同时建立一个连接。

3. GATT

GATT 代表通用属性,它定义了向连接的 BLE 设备公开的分层数据结构。这意味着 GATT 定义了两个 BLE 设备发送和接收标准消息的方式。理解这种层次结构很重要,因为它可以更容易地理解如何使用 BLE 和编写应用程序。

图7 BLE-GATT 框架

BLE服务

层次结构的顶层是一个配置文件,它由一个或多个服务组成。通常,一个 BLE 设备包含多个服务。

每个服务至少包含一个特征,或者还可以引用其它服务。服务只是信息的集合,例如传感器读数。

SIG(蓝牙特殊兴趣组)定义的几种类型的数据有预定义的服务,例如:电池电量、血压、心率、体重秤等。您可以在此处查看其它定义的服务

图7 GATT-Service编码(Assigned Number)

查看图像源

BLE特性

特征始终由服务拥有,它是实际数据包含在层次结构(值)中的位置。特征始终具有两个属性:特征声明(提供有关数据的元数据)和特征值。

此外,特征值后面可以跟描述符,这进一步扩展了特征声明中包含的元数据。

这些属性描述了如何与特征值进行交互。基本上,它包含可以与特性一起使用的操作和过程:

  • 播送
  • 不回复就写
  • 通知
  • 表明
  • 经过身份验证的签名写入
  • 扩展属性

UUID

每个服务、特征和描述符都有一个 UUID(通用唯一标识符)。UUID 是唯一的 128 位(16 字节)数字。例如:55072829-bc9e-4c53-938a-74a6d4c78776

SIG(蓝牙特殊兴趣组)中指定的所有类型、服务和配置文件都有缩短的 UUID 。

但是,如果您的应用程序需要自己的 UUID,您可以使用此UUID 生成器网站生成它。

总之,UUID 用于唯一标识信息。例如,它可以识别蓝牙设备提供的特定服务。

 

GATT 案例

图8 蓝牙鼠标的service\char

  • 一个鼠标是一个BLEDevice
  • 一个BLEDevice建立了一个BLE服务器 BLEServer
  • 一个BLE服务器里有多个服务BLEService
  • 一个服务里有多个特征值BLECharacteristic 每个特征值是一种数据.就是通过读写这些“Characteristic”实现读写数据

每个characteristic的值可以在不加密的状态下读写,但配对的操作是加密的。 还有当characteristic的值已改变时,可接收通知(notify)。

什么是 notify ——通知的概念

如果主机的一个特征值characteristic发生改变, 可以使用通知notify来告诉客户端. 这是服务器主动给客户端发的信息, 并非是响应客户端的请求.

这样做有很多好处, 比如ESP32采集到了温度的变化, 可以将数据写入对应的特征值characteristic,然后notify通知客户端.

我们创建特征值时, 把它规定为通知类型, 当这个特征值发生变化时,可以通知客户端,像这样:

pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY); 
//创建一个(读)特征值, 它是通知下发类型的特征值

其实客户端可以不接受服务器发送的notify,方法是修改自己的Descriptor. BLE服务器看到你对自己的描述中标识了不想接收notify,也就不会再给你发了.

 

 

参考&引用的资料:
1. https://www.elecfans.com/d/2012630.html
2. https://www.qutaojiao.com/108832.html
3. https://www.jianshu.com/p/535e6ec3571d 作者:熊爸天下_56c7  来源:简书