BLE协议栈结构

// 开坑BLE协议栈

0 镇楼图

在这里插入图片描述

接下来会自下往上粗略分析各个层级,后续会有对各层的细致解读

1 CONTROLLER

1.1 PHY

BLE使用ISM频段(频率范围是2.400-2.4835 GHz)。将整个频带分为40份,每份的带宽为2MHz,称作RF Channel。其中序号为37、38、39的信道作为广播信道,其余37个信道作为连接信道。需要注意的是,RF Channel的序号和实际分配方式不是一一对应的关系,即用于广播的三个信道在物理上不是相连的(甚至是即为分散的),目的是减少信号的干扰。

1.2 LL

Link Layer结构图
在这里插入图片描述

1.2.1 广播与连接通信

BLE有两种通信方式,广播和连接。这两种方式从Link Layer开始就进行了特殊区分。

  1. 对于数据量比较少、发送不频繁、对时延不是很敏感的场景
    使用广播通信,所有结点在通信网络里收发自由。
  2. 对于数据量较大、发送频率较高、对时延较敏感的场景
    Link Layer会从剩余的37个Physical Channel中,选取一个,为这种场景里面的通信双方建立单独的通道。同时,为了增加容量,增大抗干扰能力,在多个connection event中不会使用一个固定的Physical Channel,而是在多个Channel之间随机但有规律的切换,这就是BLE的跳频(Hopping)技术。

在这里插入图片描述
如图,为确保连接的稳定性和功耗问题,一次主从的连接通信被分为多个connection event进行。以从结点发送广播信号,主结点进行扫描开始。之后主结点为后续沟通规定一系列的参数(如conn_init, ts,tc等),并主动开始connection event。最终双方都不发送数据包并关闭通信。(之后文章会做更详细整理分析)

1.2.2 Logical Transports

作为LL的底层承担着将物理传输抽象成逻辑传输的职责,所以要做的事情有:

  1. 物理信道抽象:信道的共享(Hopping),设备地址的分类
  2. 对信道的维护:传输信道的建立,信道白名单
  3. 数据的抽象:对数据的加密/解密,数据包格式的定义
1.2.3 Logical Link

主要实现校验机制LL Privacy

1.2.4 Control

对比spring MVC中的controller层,思想是一样的。就是下面的东西太多了,我们再抽象出一层,方便统一管理。
实现的功能有:对connection的管理控制(Resolving List/White List),更新Hopping图谱,链路加密,数据包的收发应答流控等

2 HCI

定义了host和controller间的通信协议,实现了白名单机制,将LL中提供的功能封装成特定的Command和Event

3 HOST

3.1 L2CAP

这一层是我擅自命名的。BLE自下而上到L2CAP为止,真正有了最基础的广播和连接通信的能力。

3.1.1 L2CAP

全称Logical Link Control and Adaptation Protocol,这个协议对下层的众多功能进行了整合。包括但不限于:

  1. 对下:信道的多路复用,错误发现和重传,流处理,QoS等
  2. 对上:数据包分割重组,PDU分片重组
3.1.2 ATT

全称Attribute Protocol。将采集到的信息以Attribute的形式抽象出来,并提供一些方法,供远端设备(remote device)读取、修改这些属性的值(Attribute value)。基于L2CAP,使用固定的Channel ID。

3.2 Profile

可以理解为官方提开发者实现的applications,广播和连接通信在这一层的众多协议里得到最终的封装

3.2.1 SM

全称Security Manager Protocol,实现配对(pairing)、认证(authentication)和加密(encryption)等功能

3.2.2 GATT

全称Generic Attribute Profile,用于服务发现。提供通用的、信息的存储和共享等功能。是使用python进行BLE开发的最外层协议。其层次结构为:Profile—>Service—>characteristic,即蓝牙服务是以特征为最小单位发布的,由一个Properties、一个Value、一个或者多个Descriptor组成

3.2.3 GAP

全称Generic Access Profile。规定了role,以及其必须具备某些能力——mode操作模式/procedure过程。非常重要日后会重点分析。

4 APP

applications所在层级

* 以上皆整理自wowo大神的解读和自己对于Bluetooth core v5.4的理解,未完待续~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Python自动化测试工具Selenium进行网页自动化?

引言 Selenium是一个流行的Web自动化测试框架,它支持多种编程语言和浏览器,并提供了丰富的API和工具来模拟用户在浏览器中的行为。Selenium可以通过代码驱动浏览器自动化测试流程,包括页面导航、元素查找、数据填充、点击操作等。 与PyAuto…

抖音账号矩阵系统源码开发之——视频发布功能开发

视频发布权限在账号矩阵系统研发之初,都是一个备受争议的功能,最早之前我们使用的视频发布权限名字是Video.creat, video.delete权限,但是该权限于2022年10月份做了权限的收回,后又在上架了一个能力叫发布内容至抖音:…

PostGIS的10个最佳实践

PostGIS 是一个功能强大的开源空间数据库,可用于存储、查询和分析地理空间数据。 对于需要存储和分析大量地理空间数据的组织来说,这是一个流行的选择。 但是,正确使用 PostGIS 以充分利用它很重要。 在本文中,我们将讨论 10 个 …

【2023年4月美赛加赛】Z题:The future of Olympics 25页完整论文

【2023年4月美赛加赛】Z题:The future of Olympics 25页完整论文 1 题目 背景 国际奥委会(IOC)正面临着夏季奥运会和冬季奥运会申办数量的减少**[1]**。在过去,举办奥运会的竞争非常激烈,声望也很高。然而,最近,主办…

自定义注解和@Target、@Retention注解的使用

说明:注解可以理解为另一种形式的配置,可用于在类上、方法上等,标志是“”,如重写方法上的“Override”就是一种注解。这里我通过一个实例,来介绍自定义注解和java元注解(Target、Retention)的使…

一分钟了解乐观锁、悲观锁、共享锁、排它锁、行锁、表锁以及使用场景

大家好,我是冰点,今天给大家带来,关于MySQL中的锁的使用。 我首先提个问题,大家知道什么是 乐观锁、悲观锁、共享锁,、排它锁、行锁、表锁,以及每种锁的使用场景吗? !! 背景:最近在各…

(学习日记)2023.04.23

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

关于安卓以及微软用户chatgpt上一篇文章如今第五点无法正常进入更新解决方法以及附加本地部署

目录 一、问题出现: 1、问题: 原因: 二、解决办法(本地部署chatgpt) 1、解决(国内网络使用真的chatgpt并非镜像)一次部署终生使用 第一步: ​编辑第二步: 三、实现结…

让你不再好奇怎么给小说配音

你是否曾经想象过,当你在读小说时,你可以听到人物的声音,感受到情感和气氛的变化?有声书的出现已经让这一切成为可能。然而,如何为小说创造生动的配音效果却是一个需要仔细考虑的问题。如果你还不知道怎么给小说配音的…

智能计价器-第14届蓝桥杯省赛Scratch中级组真题第5题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第140讲。 智能计价器,本题是2023年5月7日举行的第14届蓝桥杯省赛Scratch图形化编程中级组真题第5题&#…

信号处理与分析-卷积的性质与推导

目录 一、引言 二、信号分析中的卷积 1. 什么是卷积 2. 卷积的性质 3. 卷积的应用 三、离散卷积 1. 离散卷积的定义 2. 离散卷积的计算 3. 离散卷积的性质 四、连续卷积 五、卷积的实际应用 六、总结 一、引言 在信号处理中,卷积是一种非常重要的数学运…

2023年05月小结

5月一晃即将过去,先看看5月份都写了哪些文章: 往期推荐 国内手机号如何注册Google账号 Python中的布尔类型以及布尔值介绍 Python中深拷贝与浅拷贝介绍 Python中的集合介绍 Python中的字典学习笔记 Python学习历程-元组的基本操作回顾 记录我的Python学习…

STM32F103C8T6+2.4寸SPI TFT触摸屏代码+标准库 项目开发

目录 模块清单: 模块介绍: 1:STM32F103C8T6 2:2.4寸SPI TFT触摸屏 项目结果展示 2.4寸 TFT SPI显示触摸屏 2.4寸 SPI TFT 显示触摸屏代码下载链接: (1条消息) 2.4寸SPITFT显示触摸屏资源-CSDN文库 模块清单&#x…

低资源方面级情感分析研究综述

文章目录 前言1. 引言2. 问题定义、数据集和评价指标2.1 问题定义2.2 任务定义2.3 常用数据集 3. 方面级情感分析的方法3.1 **方面词抽取**3.1.1 基于无监督学习的方法3.1.1.1 基于规则的方面词抽取3.1.1.2 基于统计的方面词抽取 3.1.2 基于有监督浅层模型的方法3.1.3 基于有监…

Golang每日一练(leetDay0075) 打家劫舍II、最短回文串

目录 213. 打家劫舍 II House Robber ii 🌟🌟 214. 最短回文串 Shortest Palindrome 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Rust每日一练 专栏 Golang每日一练 专栏 Python每日一练 专栏 C/C…

mysql加强小结 203446

数据库三范式: 什么是范式 规则:想要设计一个好的关系,必须要满足一定的约束条件,有几个等级,一级比一级高 ​ 解决什么问题:让数据库设计更加简洁,结构更加清晰,否则容易造成数据冗余 数据库有哪些范式? ​ 数据库有七大范式,常用的只有三个范式 **第一范式:**业务上属…

【1++的C++初阶】之模板

👍作者主页:进击的1 🤩 专栏链接:【1的C初阶】 文章目录 一,浅谈模板二,函数模板三,类模板 一,浅谈模板 在前面的文章【【1的C初阶】之C入门篇1】中我们对函数重载有了一定的认识&a…

Linux网络服务:SSH远程访问及控制2

目录 一、理论 1.构建密钥对验证的SSH体系 2.TCP Wrappers访问控制 二、实验 1.ecdsa免密连接 2.rsa免密连接 一、理论 1.构建密钥对验证的SSH体系 (1)免密连接原理 ① 手动添加客户端的公钥到服务端 ② 服务端收到客户端的公钥后使用客户端公钥…

手机充电宝电子充气泵方案

该充气泵产品方案的运行原理是通过电动机将电能转化为机械能,带动电机做往复运动,从而产生大量压缩空气,达到快速充气的效果。该充气泵可用于气垫床、汽车轮胎、自行车轮胎、足球、游泳圈等各类充气物品。产品设计以人性化为主,简…

jQuery其他方法及插件使用

1. 拷贝对象 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width,…