蓝牙系列二:BLE协议各层的形象化理解

news2024/11/26 2:35:28

对于蓝牙的协议栈模型已经不再陌生,但是看过相关的文档还是有些没法理解协议栈每层的区别以及每层的功能作用。本文还是继续学习韦东山讲解的蓝牙,对于初学者还是有很好的帮助作用,下面是韦东山老师形象化协议栈的框图:

下面还是把协议栈框图放在这里供参考

ATT层

从ATT开始看,在上篇博客讲的医院结构里面有个检验室,检验室可以得到各项结果,但是它并不知道这些结果代表什么含义。类比的在BLE协议栈里面,ATT定义了各种属性、属性的操作方法,但是这些属性有什么作用,能给用户提供什么服务,它并不知道。举例如下:
假设有两个蓝牙设备,一个是手机,一个是手环,此手环戴在手上可以监测心跳。
在ATT这一层,手环提供数据,它是一个服务器。另一边的手机从手环获取数据,它是一个client.

在手环服务器这边,它定义了属性、属性的格式以及属性的方法,还有一些机制通知、指示、确认
在手机客户端这边,它肯定定义了方法,可以去查询、获得、读、写属性。还有一些机制:请求、响应、命令
从这可以看出,ATT层利用这6中机制来查询、读写那些属性。

GATT层

前面已经说过,在ATT层中定义了很多属性,但是它不知道这些属性组合起来是什么含义。这需要更上一层来确定那些属性能提供什么服务
GATT这一层的关键词是服务,来看一个例子。
https://blog.csdn.net/caodaxia/article/details/78567996,描述了一个真实的蓝牙设备,里面有24个属性,这24个属性如何组合起来提供服务呢?由GATT这一层来定义的。在这一层,它定义了服务的格式(即这个服务里面应该包含哪些属性,这些属性应该如何排列)。有了服务之后,客户端手机这边如何使用这些服务呢?

在客户端手机这边需要定义如何发现服务,如何发现服务里面的特性,读写服务里面的特性。比如说心跳服务,如何去获得那个心跳值。在服务器这边还可以定义如何主动去通知客户端我这边的值发生了变化。简单的说,GATT的作用就是定义服务,实现服务,提供访问服务的方法。

在上篇博客中,那位张三医生需要通过检验室获得眼科中心的检验结果。他综合判断这些结果,才能提供服务。

同样GATT层也是这样的,GATT想去获得某个服务,它需要ATT来读写那些属性,才能实现那些服务。GATT里面的那些方法,比如说发现服务、发现特性、读写特性,这些动作都要使用ATT 的request、response、command等机制来操作那些属性。GATT严重依赖于ATT,它只不过是在ATT的基础上综合了那些属性,提供了一个服务的概念。

L2CAP层

再来看一下L2CAP层,类比于医院的结构,它是收发室。收发室里面的人是医院的内部员工,它可以在医院内部来传动包裹。
客户端手机想去读取某个属性,它需要利用ATT这一层来发起请求,请求的数据需要经过L2CAP层以及下面的几层到达服务端的L2CAP层。
服务端L2CAP这一层,需要把请求的数据发给ATT层。
数据的来源有那么多,L2CAP层如何标识数据的来源呢?
在L2CAP层引入了一个channel的概念。它使用channel这个概念来标识数据的来源或目的地。

HCI层

之前提到对于蓝牙芯片,一般来说它和arm板通过串口或usb口等等接口相连。L2CAP层需要把数据通过串口或usb口传给蓝牙芯片。在这个地方又引入了一层HCI层,HCI层用来描述从L2CAP传过来的数据如何通过串口或usb口传给蓝牙芯片

在这里还要引入一个概念,从L2CAP传过来的数据包可能很大,此时就需要分段,把经过分段的数据传给LL层。
同样的道理,这些分段的数据由LL层传到L2CAP层时,还需要将数据合并。分段与合并有可能是在L2CAP中做的,也有可能是在HCI中做的,这并不重要。

LL层

现在来看一下LL层,在L2CAP那里由channel ID来表示这个数据在内部里面分发给谁。此时假设数据到达了芯片这里,问题来了,这个芯片要把数据发给哪个设备。

在我们的示意图中只有两个蓝牙设备,在真正的系统里面可能有许多蓝牙设备,那么LL层要把数据发给谁?
在LL层这里重要的概念就是访问地址(access address)。这些数据是作为一个广播包发送给所有的设备呢?还是作为一个数据包只发送给某一个设备。此时就需要在数据包前面加上一个访问地址。就相当于快递公司帖上那个快递单号一样,以表明数据要发给哪一栋大楼。此处的大楼就相当于设备,在设备里面再次将数据分发传达。
PHY层

LL层将数据加上了访问地址,这些数据要通过无线发送器(PHY)发送出去,另一端的无线接收器(PHY)接收数据,解码之后再将数据上传。
PHY层就相当于一个司机,司机的开车技术要好,这条路不通要换另外一条路。对于蓝牙设备来说,在物理层这里它使用了跳频技术。

举个例子:深圳有两个比较出名的电台,105.7  106.2

在听广播时,如果频率为105.7的电台被干扰了,就要换到106.2频率的电台。这就是所谓的跳频。

GAP层
对比医院的结构,病人到达医院之后会进入大堂,在大堂里面按流程确定科室、挂号。同样在GAP层这里,定义了一些流程,必须根据流程来发现设备、连接设备才可以使用后续的服务。如何去发现设备、连接设备呢?一般来说,会直接使用LL层提供的功能去发出广播包来发现设备、连接设备。

总结如下:

Host(纯软件的概念)                                            (跟医院的功能简单类比)

GAP:   Generic Access Profile, 通用访问规范      (大堂: 按指定流程确定科室、挂号     <==> 发现设备、连接设备)

GATT:  Generic Attribute Profile, 通用属性规范  (医务室: 为病人提供服务    <==> 也是提供服务, 有哪些服务, 服务由哪些属性组成)

ATT:   Attribute Protocol, 属性协议                  (检验室: 提供检查结果, 给医生综合后由医生判断 <==> 提供属性及访问方法, GATT把这些属性组合起来构成服务)

L2CAPLogical Link Control And Adaptation Protocol,    (收发室: 收发包裹(包裹来自各科室)   <==> 标记/识别数据来自哪个channel, 转发)

-----------------------------HCI(Host Controller Interface, 主机/控制器接口)-----------------------------

Controller(一般来说是一个芯片):

LL:    Link Layer, 链路层                    (快递驻点: 贴快递单        <==> 确定是广播包还是数据包(发给谁),加上Access Address)

PHY:   Physical Layer, 物理层            (快递员: 运输, 此路不通就另换一条     <==> 无线收发器,传输, 跳频)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1493169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[java] 23种设计模式之责任链模式

1.1例子 公司请假系统&#xff0c;业务逻辑如下&#xff1a; 不超过3天的&#xff0c;组长审批 超过3天且小于7天的&#xff0c;总监审批 超过7天且小于15天的&#xff0c;部长审批 超过15天&#xff0c;前端直接拒绝&#xff0c;不会进入审批流程&#xff08;违反了公司的请假…

GIS之深度学习06:CUDA12安装(适配版)

CUDA&#xff08;Compute Unified Device Architecture&#xff09;是NVIDIA开发的并行计算平台和编程模型&#xff0c;用于利用NVIDIA GPU的并行计算能力&#xff0c;它允许开发者使用类似于C语言的编程语言编写并行程序&#xff0c;利用GPU的大规模并行计算能力加速各种类型的…

three.js如何实现简易3D机房?(一)基础准备-下

接上一篇&#xff1a; three.js如何实现简易3D机房&#xff1f;&#xff08;一&#xff09;基础准备-上&#xff1a;http://t.csdnimg.cn/MCrFZ 目录 四、按需引入 五、导入模型 四、按需引入 index.vue文件中 <template><div class"three-area">&l…

OJ习题之——圆括号编码

圆括号编码 1.题目描述2.完整代码3.图例演示 1.题目描述 题目描述 令Ss1 s2 …sn是一个规则的圆括号字符串。S以2种不同形式编码&#xff1a; &#xff08;1&#xff09;用一个整数序列Pp1 p2 … pn编码&#xff0c;pi代表在S中第i个右圆括号的左圆括号数量。&#xff08;记为…

一本书讲透ChatGPT,实现从理论到实践的跨越!大模型技术工程师必读

程序员如何选择职业赛道&#xff1f; 文章目录 程序员如何选择职业赛道&#xff1f;前言**作者简介**目录直播预告 前言 OpenAI 在 2022 年 11 月推出了人工智能聊天应用—ChatGPT。它具有广泛的应用场景&#xff0c;在多项专业和学术基准测试中表现出的智力水平&#xff0c;不…

esp32 C3和S3 开发板电流对比

出去好奇用合宙家的 lot power 测了两块开发板的运行电流。 esp32 S3 (嘉立创开发板 8N8 版本) 模式 电流downloa模式49 毫安空代码91 毫安light mode27 毫安deep mode25 毫安delay 40 毫安 esp32 C3 无串口芯片 &#xff08;合宙 9.9 元版本&#xff09; 模式 …

E33NCHA-LNN-NS-00主要特点

E33NCHA-LNN-NS-00是一款由Kollmorgen公司生产的高性能伺服电机&#xff0c;专门设计用于对运动系统进行精确控制。 以下是这款伺服电机的一些主要特点&#xff1a; 高扭矩密度&#xff1a;该电机能够在其尺寸下提供较大的扭矩输出&#xff0c;这对于空间有限的应用场合尤为重…

rocketmq Listener 消费消息的优雅方式(基于SPEL)

DefaultMQPushConsumer 配置 package repayment.config;import cn.itcast.wanxinp2p.repayment.message.diy.DefaultMessageListenerConcurrently; import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.exception.MQClient…

go语言基础 -- 文件操作

基础的文件操作方法 go里面的文件操作封装在os包里面的File结构体中&#xff0c;要用的时候最好去查下官方文档&#xff0c;这里介绍下基本的文件操作。 打开关闭文件 import("os" ) func main() {// Open返回*File指针&#xff0c;后续的操作都通过*File对象操作…

【XR806开发板试用】第一篇-基于ArchLinux配置开发环境并烧录

前段时间很幸运的申请到了XR806的这块开发板子。由于出差、生病还有各种事情的影响&#xff0c;这周末才有空拿出来收到的板子把玩一番。前段时间也抽空看了看其他工程师的体验文章。初步了解到全志为这块板子提供了比较方便的Linux开发环境。嗯&#xff0c;毕竟搞嵌入式嘛&…

Python乱码恢复

比如说网页是ISO-8859-1编码&#xff0c;然后requests得到的是乱码&#xff0c; 那么这样操作就可以还原数据&#xff1a;res.text.encode(‘ISO-8859-1’).decode(‘utf-8’) 乱码恢复网站&#xff0c;可以知道是什么编码http://www.mytju.com/classCode/tools/messyCodeReco…

【深度学习笔记】计算机视觉——风格迁移

风格迁移 摄影爱好者也许接触过滤波器。它能改变照片的颜色风格&#xff0c;从而使风景照更加锐利或者令人像更加美白。但一个滤波器通常只能改变照片的某个方面。如果要照片达到理想中的风格&#xff0c;可能需要尝试大量不同的组合。这个过程的复杂程度不亚于模型调参。 本…

2024-阿里巴巴灵犀互娱校招内推

灵犀互娱是阿里集团旗下研运一体游戏品牌&#xff0c;在业务模式上&#xff0c;灵犀互娱面向全球&#xff0c;研运一体&#xff0c;坚持精品&#xff0c;打造爆款&#xff0c;重视服务玩家。 访问链接即刻开启内推&#xff1a;https://talent.lingxigames.com/campus/qrcode/…

第十二篇:学习python数据清洗

文章目录 一、啥是数据清洗二、将表格数据导入pandas中1. 准备工作2. 引入csv文件2.1 引入pandas库2.2 读取文件/修改名称3.2 快速浏览数据2.4 修改名字2.5 查找缺失值2.6 删除缺失值 3. 引入Excel文件3.1 引入pandas库3.2 读取Excel文件的人均GDP数据3.3 查看数据类型和non-nu…

速卖通关键字搜索API接口实战:Python代码与搜索策略解析

一、速卖通关键字搜索API简介 速卖通&#xff08;AliExpress&#xff09;作为阿里巴巴旗下的国际电商平台&#xff0c;为卖家和买家提供了便捷的交易渠道。其开放平台提供的API接口允许开发者集成速卖通的各种功能&#xff0c;其中之一就是关键字搜索API。通过这个API&#xf…

备考2024年北京高考数学:20114~2023十年选择题练习和解析

距离2024年高考还有三个月的时间&#xff0c;如何用三个月的时间再提高北京数学高考的成绩&#xff1f;吃透历年真题以及背后的知识点是行之有效的方法 之一。 今天我们来看一下2014-2023年的北京市高考数学的选择题&#xff0c;从过去十年&#xff08;2014-2023&#xff09;的…

【JSON2WEB】09 Amis-editor的代码移植到json2web

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

大语言模型的Scaling laws(尺度定律)的正确认识

源自&#xff1a;人工智能前沿讲习 “人工智能技术与咨询” 发布 实验一 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨&#xff0c;并不意味着支持其观点或证实其内容的真实性。版权归原作者所有&#xff0c;如转载稿涉及版权等问题&#xff0c;…

数据分析案例-二手车用户数据可视化分析(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

为什么被蜜蜂蛰了会肿得像馒头

有的人却只是一点点小鼓包。 病情分析&#xff1a;蜜蜂体内存在一种有毒物质&#xff0c;其主要成分是蚁酸&#xff0c;这种成分进入人体后&#xff0c;会和血液发生反应&#xff0c;导致皮肤表现出红肿和瘙痒的症状。一些人群还会对蜜蜂表现出过敏反应&#xff0c;此类人群在…