借助调试工具理解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.mzph.cn/pingmian/22225.shtml

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

相关文章

进阶 RocketMQ - 消息存储-一张图掌握核心要点

看了很多遍源码整理的 一张图进阶 RocketMQ 图片,关于 RocketMQ 你只需要记住这张图! 消息传递责任已移交至Broker,接下来如何处理?首先,我们需要确保消息的持久化,避免因宕机导致的数据丢失。那么&#xf…

什么是OCR转写服务?

OCR(Optical Character Recognition,光学字符识别)转写服务是一种技术,用于将图像或扫描文档中的文字转换为可编辑的文本格式。这项服务通过识别图像中的文字,并将其转换成计算机可读的文本形式,从而使得用…

期权懂基础知识分享:场外期权怎么做?

今天带你了解期权懂基础知识分享:场外期权怎么做?场外个股期权是一种金融工具,用于在股票市场之外交易。 场外期权怎么做? 签订框架协议:个人需要与机构签订场外期权框架协议,通常无需单独开立账户。 询价…

ARP欺骗的原理与详细步骤

ARP是什么: 我还记得在计算机网络课程当中,学过ARP协议,ARP是地址转换协议,是链路层的协议,是硬件与上层之间的接口,同时对上层提供服务。在局域网中主机与主机之间不能直接通过IP地址进行通信&#xff0c…

怎么把图片压缩小一点?让你的图片秒变小清新!

怎么把图片压缩小一点?在数字化时代,图片已经成为我们生活中不可或缺的一部分。无论是社交媒体的分享,还是工作文档的编辑,图片都扮演着重要的角色。然而,随着图片数量的增加,存储空间的问题也日益凸显。幸…

STM32项目开发遇见问题解决2024.6.4V2

1、结构体指针的赋值不能放在main函数之前 参数1、参数2可以修改后,接着添加功能,设置一个保存按键,当修改完参数1、参数2后,按下保存,可以将两者和当前的测量值一起保存在flash中,并将这三个变量放在一个结…

软件系统测试的定义和测试内容介绍

一、什么是软件系统测试? 软件系统测试是指对软件系统的功能、性能、可靠性、稳定性等方面进行全面检查和验证的过程。其目的是发现潜在的问题、缺陷和风险,并确保软件系统的质量和稳定性。 软件系统测试可以分为多个阶段,包括单元测试、集成测试、系…

中介模式实现聊天室

中介者模式的核心逻辑就是解耦对象‘多对多’的相互依赖关系。当遇到一大堆混乱的对象呈现“网状结构”,利用通过中介者模式解耦对象之间的通讯。 代码案例 抽象中介类 public abstract class AbstractChatRoom {public abstract void notice(String message , Us…

计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 计网期末复习指南(一):计算…

Java18+​App端采用uniapp+开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发家政服务

Java18​App端采用uniapp开发工具 idea hbuilder智能上门家政系统源码,一站式家政服务平台开发 家政服务 家政服务是一个专为家政服务人员设计的平台,该平台旨在提供便捷、高效的工作机会,同时确保服务质量和客户体验。 以下是关于家政服务师…

python入门1

文章目录 前言一、python概述1、下载和安装2、python基础2.1 变量2.2 数据类型2.3Python中的注释2.4 运算符2.5 数值类型标准类型函数2.6 I/O操作 二、字符串1、字符串操作2、字符串内建函数3、格式化字符串3.1 在字符串中使用变量3.2 format()方法的基本使用 三、列表与元组1、…

鸿蒙工程目录介绍

鸿蒙构建完毕生成hhvp文件。 项目结构: .hvigor : 是存储构建配置文件的 .idea : 是开发工具拥有的目录 AppScope : 是全局的公共资源存放位置 hvigor :存放前端构建配置信息 oh_modules : 存放项目用到的第三方包 build-profile.json5 : 应用级别的构…

Mysql基础教程(15):别名

MySQL 别名 在本文中,我们讨论了 MySQL 中的列别名,表别名和派生表别名,以及使用别名来简化 SQL 和提高 SQL 的可读性。 如果在一个 SQL 中涉及到多个表,我们需要使用 table_name.column_name 这样的方式来引用每个表的字段&…

麒麟系统 安装xrdp 远程桌面方法记录

一、安装环境 麒麟V10 2107 ft2000 麒麟V10 2107 x86_64 二、安装准备 使用《Kylin-Desktop-V10-Release-2107-arm64.iso》镜像 做好U盘启动系统后,需要安装一个远程桌面工具,可以多用户在windows上使用远程桌面访问麒麟系统。 目前在linux系统上较…

做项目管理,有哪些证书值得考?

考证可以提升技能水平,增强职场竞争力。 01PMP认证 PMP是受全球认可的项目管理专业人士资格认证,在国际上具有权威性,被媒体公认为继MBA、MPA之后的三大就业金字招牌。 在国内认可度也很高,中石油、中国石化、中兴通讯等大型企…

使用目标检测模型YOLO V9 OBB进行旋转目标的检测:训练自己的数据集(基于卫星和无人机的农业大棚数据集)二

在网上看到别人在YOLO V9 源码上实现了旋转目标检测,但是我在按照他的方法进行训练的时候出现了错误提示,问题弄了很久都没有解决,欢迎各位大佬交流讨论给出建议 代码【免费】目标检测模型YOLOV9OBB资源-CSDN文库 运行训练脚本train.py提示如…

【Python】 Python装饰器的魔法:深入理解functools.wraps

基本原理 在Python中,装饰器是一种设计模式,用于修改或增强函数或方法的功能。functools.wraps是一个装饰器工厂,它用来帮助我们保持被装饰函数的元数据,比如函数的名字、文档字符串等。 当你创建一个装饰器时,你可能…

【mysql】ssl_choose_client_version:unsupported protocol

起因:项目上的DolphinScheduler连接不上数据库,查看worker日志提到SSL协议问题: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failureCaused by: java.io.EOFException: SSL peer shut down incorrectly 我…

eNSP【综合实验】

综合实验配置 实验要求实验命令实验要求 1、设备名称修改。例如“交换机LSW1,修改为SW1”;“路由器AR1,即修改为AR1” 2、内网中的所有PC与网关互通。 要求:配置vlan基础部分,设置端口类型以及所允许通过的vlan,利用vlan的三层交换使得PC与网关互通。 PC1、PC2和Server1的…

什么牌子的无线领夹麦克风好?一文读懂领夹麦克风什么牌子好!

​无线领夹麦克风因其便携性和高音质而备受青睐。今天,我要为大家推荐几款备受赞誉的无线领夹麦克风,它们不仅在音质上表现出色,更在设计和性能上各有千秋。这些麦克风不仅适合专业录音师使用,也适合普通用户在日常生活中的各种场…