首页 > 其他分享 >【沁恒 CH58x 应用】BLE相关知识基础

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

时间:2023-12-18 22:44:42浏览次数:34  
标签:特征值 4.0 蓝牙 Bluetooth 沁恒 CH58x BLE UUID

大纲:

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

2. ble的基本概念:协议层(协议框架)、服务(Service)、特征(Characteristic)。什么是配对(pair)、通知(notify)。

 

介绍低功耗蓝牙

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  来源:简书

标签:特征值,4.0,蓝牙,Bluetooth,沁恒,CH58x,BLE,UUID
From: https://www.cnblogs.com/FBsharl/p/17912555.html

相关文章

  • Java异常处理神器:Guava Throwables类
    第一章:Guava库简介Guava由Google开发,它提供了大量的核心Java库,例如:集合、缓存、原生类型支持、并发库、通用注解、字符串处理和I/O操作等。这些功能在日常的Java开发中超级常用,而且Guava的设计哲学是简洁高效,这让咱们的代码不仅更加优雅,而且更加易于维护和阅读。尤其是在异常处......
  • [ABC312C] Invisible Hand
    其他题解都是二分,这里介绍一种\(O(n+m)\)的线性写法。我们尝试考虑在\(x\)为和值时会出现答案?很显然,对于任意\(1\leqi\leqn\)和\(1\leqj\leqm\),\(x\)只可能等于\(a_i\)或\(a_i+1\)或\(b_i\)或\(b_i+1\)。即\(x\)为这\(2\times(n+m)\)种情况中的一......
  • InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Conv
    InternImage:ExploringLarge-ScaleVisionFoundationModelswithDeformableConvolutions*Authors:[[WenhaiWang]],[[JifengDai]],[[ZheChen]],[[ZhenhangHuang]],[[ZhiqiLi]],[[XizhouZhu]],[[XiaoweiHu]],[[TongLu]],[[LeweiLu]],[[HongshengLi]......
  • A Deformable Attention Network for High-Resolution Remote Sensing Images Semanti
    ADeformableAttentionNetworkforHigh-ResolutionRemoteSensingImagesSemanticSegmentation*Authors:[[RenxiangZuo]],[[GuangyunZhang]],[[RongtingZhang]],[[XiupingJia]]DOI:10.1109/TGRS.2021.3119537初读印象comment::(MDANet)提出了可变形注意力,结......
  • Scale-Prior Deformable Convolution for Exemplar-Guided Class-Agnostic Counting
    Scale-PriorDeformableConvolutionforExemplar-GuidedClass-AgnosticCounting初读印象comment::(计数用的一个网络)提出了一个标度优先的可变形卷积,将典范的信息,例如标度,整合到计数网络主干中。动机本文考虑的是类别无关的计数,其中计数模型预测由一组查询图像中的少数......
  • Object Tracking Network Based on Deformable Attention Mechanism
    ObjectTrackingNetworkBasedonDeformableAttentionMechanismLocallibrary初读印象comment::(DeTrack)采用基于可变形注意力机制的编码器模块和基于自注意力机制的编码器模块相结合的方式进行特征交互。基于可变形注意力机制的编码器可以在不聚焦所有像素的情况下精......
  • Deformable ConvNets V2: More Deformable, Better Results 可变形卷积v2
    DeformableConvNetsV2:MoreDeformable,BetterResults*Authors:[[XizhouZhu]],[[HanHu]],[[StephenLin]],[[JifengDai]]DOI:10.1109/CVPR.2019.00953初读印象comment::(可变形卷积v2)增加了可变形卷积的数量、调制因子和额外的用来特征模仿的网络。deformab......
  • hadoop启动时报错process information unavailable
    启动hadoop,jps查看报错[root@slave1home]#jps7798--processinformationunavailable7081--processinformationunavailable查看进程是否存在[root@slave1home]#ps-ef|grep7798root93127475023:19pts/200:00:00grep--color=auto7798......
  • 关于DVWA靶场File Inclusion中出现The PHP function allow_url_include is not enable
    做实验时发现fileinclusion报错:ThePHPfunctionallow_url_includeisnotenabled,翻译一下是PHP函数allow_url_include还未启用,这时我想到之前好像配置DVWA靶场环境时也用到了这个第一反应我跑去查看PHP配置文件php.ini纳尼?!allow_url_include=on啊,明明已经开了啊剑锋一转难不成......
  • A. Constructive Problems
    原题链接思路历程1.一开始我不知道具体该怎么放,于是我按照样例2的顺序手画了一遍。2.然后发现,对于一个n*n的矩形,再放一个格子最大能使其达到(n+1)*(n+1)3.1*1时,放了1个格子,2*2时放了2个格子,由此可以推出放n个格子时最大能达到n*n4.这道题就变成了,找出k使得k*k刚好能覆盖n*m,也就......