借助调试工具理解BLE协议_2.BLE协议栈

名词解释:    

        BT SIG英文全称为Bluetooth Special Interest Group(蓝牙特别兴趣组),网址为 www.Bluetooth.com。

        Bluetooth® Technology Website

        SIG成立于1998年,是一个全球技术交流组织,拥有超过36000家公司参与,是一家私有的非盈利性联盟,联盟致力于针对身边广泛设备链接的统一、协调和技术推动创新,通过集体创建和共享技术标准,蓝牙® 技术简化、保护和丰富了全球用户的技术体验。联盟拥有Bluetooth®商标和标准的开发权,所有蓝牙核心规范、应用规范、测试规范均由SIG联盟制定,且拥有完全的知识产权。其主要工作内容包括:发布蓝牙标准、管理认证程序、保护蓝牙商标、推广蓝牙技术等。

1.BLE协议栈      

        BLE协议栈一般是指芯片厂家,依据 Bluetooth SIG 发布的 Bluetooth Core Specification 核心协议的实现的代码固件,并提供函数接口,由芯片内部程序调用,可实现上节BLE工作流程等相关功能。常见的协议栈有德州仪器 TI 的 ble-stack 和 Nordic 的 SoftDevice。

1.1 功能框图

        通过列举两家典型的蓝牙芯片厂家:TI和Noridc,来深入了解低功耗蓝牙协议栈。

        下图是TI的CC26系列芯片协议栈结构图,

        下图是Nordic的nRF52系列芯片的协议栈结构图。 

1.2 协议栈结构

        从上节的两张协议栈功能框图中可以看出,无论是哪个芯片厂商实现的BLE协议栈,其结构都非常的相似,均三个部分:

  1. 底层Controller
  2. 中层Host
  3. 顶层Application

         【注】提示:我们将位于顶层的应用层Application也归到协议栈中描述,其实,应用层Application不属于协议栈,它是用来调用协议栈提供的接口,然后实现蓝牙的功能。

1.2.1 控制器Controller

  • Physical Layer,简称:PHY,物理层。PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。
  • Link Layer,简称:LL,链路层。LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个link(连接),就是LL层的功劳。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者ATT
  • Host Controller Interface,简称:HCI。协议栈应用开发中,我们会经常看到HCI的身影,它对上Host提供Controller的功能接口, 主要用于 2 颗芯片实现 BLE 协议栈 的场合,用来规范两者之间的通信协议和通信命令等, 所以称作Host Controller Interface。

1.2.2 主控Host

  • Logical Link Control Adaptation Protocol,简称:L2CAP。L2CAP对LL进行了一次简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。
  • Attribute Protocol,简称:ATT。ATT层用来定义用户命令及命令操作的数据,比如读取某个数据或者写某个数据。BLE协议栈中,开发者接触最多的就是ATT。BLE引入了attribute概念,用来描述一条一条的数据。Attribute除了定义数据,同时定义该数据可以使用的ATT命令,因此这一层被称为ATT层。
  • Security Manager,简称:SM。SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。
  • Generic Access Profile,简称:GAP。GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接等。
  • Generic Attribute Profile,简称:GATT。GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。

1.2.3 应用Application

        应用层是用户开发实际蓝牙应用的地方,包含必要的协议栈参数设置,以及各种功能函数的调用。我们分别从蓝牙从机和蓝牙主机两种设备来分析。

1)蓝牙从机

  1. 相关硬件和基础服务初始化
  2. 设置广播参数:广播数据,广播间隔,扫描回应等参数或者数据。
  3. 设置Profile:添加从机服务、特征,还有设置回调函数用于接收主机数据等。
  4. 设置绑定管理参数(可选)
  5. 启动广播,开始运行。
  6. 等待相关事件,及事件处理,例如收到主机发来的数据,被链接等等。

2)蓝牙主机

  1. 相关硬件和基础服务初始化
  2. 设置扫描参数。
  3. 设置连接参数。
  4. 设置绑定管理参数(可选)
  5. 启动协议栈,开始运行。
  6. 等待相关事件,及事件处理,例如扫描事件,从机的Notify事件等等。

         

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

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

相关文章

centos7下卸载MySQL,Oracle数据库

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 操作系统版本为CentOS 7 使⽤ MySQ…

Linux云计算架构师涨薪班课程内容包含哪些?

第一阶段:Linux云计算运维初级工程师 目标 云计算工程师,Linux运维工程师都必须掌握Linux的基本功,这是一切的根本,必须全部掌握,非常重要,有了这些基础,学习上层业务和云计算等都非常快&#x…

常见的多态面试题

多态的概念及其构成条件 多态概念:对不同的对象会有不同的实现方法,即为多种形态。 构成条件: 派生类要进行虚函数的重写(父子类虚函数需要三同,三同指函数名、参数、返回值)要用父类的指针或引用去调用虚…

黄仁勋的AI时代:英伟达GPU革命的狂欢与挑战

在最近的COMPUTEX 2024大会上,英伟达创始人黄仁勋发布了最新的Blackwell GPU。这次发布不仅标志着英伟达在AI领域的又一次飞跃,也展示了其对未来技术发展的战略规划。本文将详细解析英伟达最新技术的亮点,探讨其在AI时代的市场地位和未来挑战…

Transformer学习(2)

这是Transformer的第二篇文章,上篇文章中我们了解了分词算法BPE,本文我们继续了解Transformer中的位置编码和核心模块——多头注意力。下篇文章就可以实现完整的Transformer架构。 位置编码 我们首先根据BPE算法得到文本切分后的子词标记,然…

baremaps 部署

参考:https://baremaps.apache.org/documentation/ 一、基础环境 1、安装 JDK 版本需要至少 Java 17 下载:https://www.oracle.com/cn/java/technologies/downloads/ tar -zxf jdk-17_linux-x64_bin.tar.gz -C /usr/local cd /usr/local mv jdk-17.…

centos安装vscode的教程

centos安装vscode的教程 步骤一:打开vscode官网找到历史版本 历史版本链接 步骤二:找到文件下载的位置 在命令行中输入(稍等片刻即可打开): /usr/share/code/bin/code关闭vscode后,可在应用程序----编程…

商品最大价值-第13届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第77讲。 商品最大价值&…

在windows操作系统上安装MariaDB

最近收到关于数据库在哪里看的评论,所以就一不做二不休,把安装数据库的步骤写一篇文章吧。 这篇文章介绍如何在windows上完成MariaDB-10.6.5版本的安装,对应MySQL-8.x版本。 第一步:下载安装包 通过以下网盘链接下载MariaDB-10.6…

免杀基本知识,shellcode混淆免杀

一、shellcode分析及免杀的必要性 shellcode是一段十六进制的机器码,插入内存后会被翻译成为CPU的指令,用于执行相关操作。渗透中的shellcode的主要功能就是反弹shell。将shellcode编译成为exe文件后,执行文件主要进行以下三个操作&#xff…

若依:mybatis查询的结果未映射到实体类报null

开启驼峰命名转换: mapUnderscoreToCamelCase: true 我的是mtybatis配置开启驼峰命名转换不生效,还需要在MyBatisConfig中配置 // 配置mybatis自动转驼峰 生效 sessionFactory.getObject().getConfiguration().setMapUnderscoreToCamelCase(true)&#x…

2041:【例5.9】新矩阵

#include <iostream> using namespace std; int main(){const int N 21;//几行几列 int g[N][N] {};int n 0;cin >> n;for (int i 1; i < n; i){for (int j 1; j < n; j){// 输入到几行几列 cin >> g[i][j];if (i j || i j n 1){//如果是这种…

六西格玛绿带考试攻略:自学VS报班?一文帮你理清思路

近年来&#xff0c;六西格玛绿带作为质量管理领域的重要认证&#xff0c;已经成为许多企业和个人追求高质量、高效率的必备证书。然而&#xff0c;面对即将到来的六西格玛绿带考试&#xff0c;很多人都会陷入一个纠结的境地&#xff1a;究竟是选择自学备考&#xff0c;还是报名…

C++并发之线程(std::thread)

目录 1 概述2 使用实例3 接口使用3.1 construct3.2 assigns3.3 get_id3.4 joinable3.5 join3.6 detach3.7 swap3.8 hardware_concurrency 1 概述 Thread类来表示执行的各个线程。   执行线程是指可以在多线程环境中与其他此类序列同时执行的指令序列&#xff0c;同时共享相同…

Go 语言的函数详解:语法、用法与最佳实践

在 Go 语言的世界里&#xff0c;函数是构建和维护任何应用程序的基石。不仅因为它们提供了一种将大问题划分为更小、更易管理部分的方法&#xff0c;而且还因为它们在 Go 程序中扮演着至关重要的角色。从简单的工具函数到复杂的系统级调用&#xff0c;理解和利用 Go 的函数特性…

企业因未安全保存个人信息被罚:警示网络数据安全重要性

网络攻击的隐蔽性越来越强&#xff0c;对网络安全提出了更高的要求。在进行等保测试时&#xff0c;网络运营商能够对系统的安全保护状况有一个大致的认识&#xff0c;并对系统内部和外部都有可能出现的安全问题进行分析&#xff0c;并对其进行加固和修正&#xff0c;以此来增强…

GPT-4与GPT-4O的区别详解:面向小白用户

1. 模型介绍 在人工智能的语言模型领域&#xff0c;OpenAI的GPT-4和GPT-4O是最新的成员。这两个模型虽然来源于相同的基础技术&#xff0c;但在功能和应用上有着明显的区别。 GPT-4&#xff1a;这是一个通用型语言模型&#xff0c;可以理解和生成自然语言。无论是写作、对话还…

全新STC12C5A60S2单片机+LCD19264大屏万年历农历生肖节气节日显示+闹钟+温湿度+台灯

资料下载地址&#xff1a;全新STC12C5A60S2单片机LCD19264大屏万年历农历生肖节气节日显示闹钟温湿度台灯 这是旧版 退役拆解了 新版 与电路图所示 共设置4个按键 短按开关台灯 加减键调光 长按进入菜单 1.台灯 加入PCA PWM 调光 STC12C5A60S2的PCA PWM非常好用 设置简单无极…

文件夹突变解析:类型变文件的数据恢复与预防

在数字化时代&#xff0c;文件夹作为我们存储和组织数据的基本单元&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们可能会遇到一种令人困惑的情况——文件夹的类型突然变为文件&#xff0c;导致无法正常访问其中的内容。这种现象不仅会影响我们的工作效率&#xff0c;…

如何把几个pdf文件合成在一个pdf文件

PDF合并&#xff0c;作为一种常见的文件处理方式&#xff0c;无论是在学术研究、工作汇报还是日常生活中&#xff0c;都有着广泛的应用。本文将详细介绍PDF合并的多种方法&#xff0c;帮助读者轻松掌握这一技能。 打开 “轻云处理pdf官网” 的网站&#xff0c;然后上传pdf。 pd…