BLE学习(1):蓝牙协议栈的介绍

news2025/7/29 0:37:24

蓝牙官方(The Bluetooth Special Interest Group)定义了低功耗蓝牙(Bluetooth low energy,即LE)和基础/增强速率蓝牙(Bluetooth basic rate/enhanced data rate ,即BR/EDR)两种技术的协议栈。这两种协议栈可以单独使用,也可以同时使用,如下图所示:
在这里插入图片描述
这里仅对Bluetooth LE Protocol Stack进行介绍:
下图展示了蓝牙的协议栈和OSI(Open System Interconnection)参考模型的对比。
在这里插入图片描述

  • OSI模型的数据链路层对应着蓝牙的Link LayerL2CAP层。
  • 蓝牙LE栈的上层提供应用层服务、设备角色和模式、连接管理和安全协议

蓝牙LE协议栈按功能分为三个层:ControllerHostApplication Profiles and Services
在这里插入图片描述
1、Controller
控制层包含着蓝牙LE物理层(PHY)、数据链路层(LL)和控制端主机控制接口(HCI)。
蓝牙LE物理层工作在无需许可的2.4GHz频段,它有以下特性:

  • 射频频率范围为2.4GHz~2.4835Hz
  • 通道带宽为2MHz,工作频带分为40个频道,第k个通道的中心频率为2402+k×2Mhz,k=0,...,39
    • 用户的数据包在0~36通道传输
    • 广播数据包在37、38和39通道传输
  • 采用高斯频移键控(GFSK)调制方案
  • 采用跳频扩频(FHSS)来减少干扰和对抗衰落信道的影响。频率跳变的时间范围为7.5ms~4s

(1)LL
LL层执行类似于OSI模型的介质访问控制(MAC)层的任务,它直接与蓝牙PHY层直接相连,并管理链路状态。
(2)HCI
HCI层负责处理主机和控制器之间的通信。HCI为数据包数据的传输和接收定义了一组命令和事件。当从控制器接收数据包时,HCI从控制器提取原始数据发送给主机。
2、Host
Host层包括了逻辑链路控制与适配协议(Logical Link Control and Adaptation Protocol,即L2CAP)、属性协议(attribute protocol,即ATT)、通用属性配置文件(generic attribute profile,即GATT)、安全管理协议(security manager protocol ,即SMP)和通用访问配置文件(generic access profile,即GAP)。
(1)L2CAP
L2CAP层处理蓝牙数据的收发:

  • 将来自蓝牙LE上层的数据封装成标准的蓝牙LE报文格式进行传输
  • 根据ATT层和SMP层指定的链路配置,在接收时从标准的蓝牙LL层报文中提取数据

(2)ATT
ATT基于GATT属性概要在客户端和服务端之间传输属性数据。ATT会将数据组织成如下图所示的属性:

在这里插入图片描述

  • attribute handle:由服务端分配的一个16位的标识符,客服端可以通过这个句柄来查询指定的attributes
  • attribute type:为蓝牙官方定义的一个通用唯一标识码(universally unique identifier,即UUID) ,长度为2或16字节
    • UUID的标准长度为16字节,但为了减少传输的数据量,蓝牙协议栈中会将用户提供的2字节UUID映射为一个16字节的UUID。
  • attribute value:长度可变,与UUID对应的attribute value
  • attribute permissions:指定属性的读写权限,以及读写权限所需的安全级别

(3)GATT
GATT封装了ATT,主要用来规范attribute中的数据内容,并将不同的attribute进行分组分类。负责协调蓝牙LE链路中配置文件的交换,配置文件包括诸如handle分配、UUID和权限等信息和数据。

(4)SMP
SMP通过安全算法对数据包进行加解密。

(5)GAP
GAP用于指定设备的角色(Server/Client)、工作模式和过程。它还管理连接的建立和安全。GAP直接与应用程序配置文件和App层连接。目前主要用来进行广播、扫描和发起连接。

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

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

相关文章

泛型「generic」讲解

标题1. 泛型语法1.1 泛型的引出1.2 泛型介绍1.3 泛型语法1.4 泛型使用细节1.5 练习题2.自定义泛型2.1自定义泛型-类2.2自定义泛型-接口2.3自定义泛型-方法2.4练习题3.范型继承和通配符3.1JUnit单元测试框架3.2练习题1. 泛型语法 1.1 泛型的引出 传统方法不能对加入到集合中的…

Docker部署ELK

Docker部署ELK安装包下载1、安装docker2、安装docker compose3、使用docker加载离线镜像4、上传yml文件并初始化密码5、造数据,看采集结果安装包下载 链接:https://pan.baidu.com/s/1LOHyhTHm3-30v6wAfYLTAg 提取码:5uno 1、安装docker (1&#xff09…

Python新手的福音,涵盖20+种初学者必练项目!

前言 对学Python的新手同学来说,最最最想要的干货是什么?是大量可以练手的项目啊。俗话说,三天不练手生,三天不念口生。#技术派的书架# (文末送读者福利) 在某乎上有一个关于"Python的练手项目”的问…

【线程】线程同步

目录 一、信号量 1.函数 2.使用 二、读写锁 1.函数 2.使用 三、互斥锁 1.函数 2.使用 四、条件变量 1.函数 2.使用 前言 线程同步的实现方法:信号量、互斥锁、条件变量、读写锁。 下面就对着四种方法进行展开描述 一、信号量 与进程间通信的信号量类似&a…

JNPF3.4.5大版本正式上线啦!

千呼万唤始出来,时隔近四个月,引迈信息终于再度推出新版本与大家见面了,此次推出的3.4.5大版本,可谓是吊足了大家的胃口。 本次大更新为用户带来的是高效率、高可用性、低成本、快速部署、易于扩展的快速开发平台的使用体验。本次…

【ASM】字节码操作 工具类与常用类 TraceClassVisitor 介绍

文章目录 1.概述2. TraceClassVisitor2.1 class info2.2 字段信息2.3 constructors2.4 methods3.如何使用TraceClassVisitor3.1 生成新的类3.2 修改已有的类3.3 打印ASM信息4.总结感谢第一个订阅字节码的人,感谢老铁支持 adminhjy 1.概述 在上一篇文章:

拓展卡尔曼滤波(Kalman)附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

分享5个良心好用的PC软件,免费无广告

今天再次推荐5个良心好用的Windows神级软件,每一个都是完全免费,堪称神器,让你打开新世界的大门。 1.数据恢复工具——EaseUS Data EaseUS Data Recovery Wizard是一款简单易用的数据恢复工具,给用户提供了三种恢复模式&#xf…

docker部署ES及kibana整个流程

对于ES小白,第一次安装ES走了很多弯路,下面记录自己本地安装elasticsearch的整个过程,我觉得小白如果按照我的流程走,大部分应该可以安装并运行成功。下面是整个步骤: 一、部署ES 拉取镜像 docker pull docker.elast…

胞外囊泡代谢组学—前列腺癌代谢变化研究的新策略

小小身体蕴含大大能量!前列腺癌非侵入性的诊断和监测的新方式——胞外囊泡(外泌体)代谢组学!目前,胞外囊泡/外泌体作为非侵入性的癌生物标志物已成为新的研究热点。百趣代谢组学文献分享,芬兰赫尔辛基大学学…

避免项目资源管理陷阱,8Manage帮你支招!

项目资源管理主要是对项目所需的人力、材料、机械、技术、资源等资源进行计划、组织、指挥、协调和控制。众所周知,项目推进需要资源支撑,一旦资源不足,项目的进度和质量都会受到影响。而在项目管理活动中,做好资源管理并不容易&a…

SORT追踪

卡尔曼滤波 卡尔曼滤波用当前时刻运动变量去预测下一时刻的运动变量,检测器第一次的检测结果用来初始化卡尔曼滤波的运动变量,后续的结果作为更新。在信号处理中卡尔曼滤波是去除噪声的一个算法,作用是使用信号更加的准确。在SORT中的&#x…

MySQL常用语句汇总

一、背景 日常测试开发工作中会用到各类SQL语句,很多时候都是想用的时候才发现语句细节记不清楚了,临时网上搜索SQL语法,挺费时费力的,语法还不一定是对的。因此汇总整理了一下MySQL最常用的各类语句,以后就不用再到处…

Linux环境安装

学习Linux首先要准备一个Linux环境。环境的安装有两种途径:买一个云服务器,安装虚拟机。 推荐使用云服务器,较虚拟机方便很多。 云服务器具体来说是Centos 7.6 64位——我也不知道为啥用这个 步骤一: 购买云服务器的主要方式…

“向美好女人致敬”粉红丝带主题活动,谈水果养生之道

传递粉红正能量,践行粉红关爱,“向美好女人致敬”粉红丝带关爱月公益线下活动于11月13日顺利收尾,帮助广大女性更加深入地了解、认识乳腺癌预防和康复治疗,推进乳腺癌防治意识。此次活动邀请到了云南省肿瘤医院乳腺三科科主任、副…

Android通过jni调用本地c/c++接口方法总结

网上有网友问android的原生应用,上层java代码如何通过jni调用本地的c/c++接口或第三方动态库 ?之前搞过android应用开发和底层c/c++接口开发都是一个人搞定,觉得还是蛮简单的。其实没啥难度,如果觉得难只是因为你没有经历过,只要搞过一遍基本就记住了。这里总结下方法留作…

李嘉诚人生最大的错误,并非错过阿里华为,而是套现中国投资欧洲

李嘉诚是很多人心中的生意之神,很多人认为李嘉诚一生从来都没有失败过,他是生意场的常胜将军。可是事实上真的是如此么? 很多人可能不知道,李嘉诚其实也曾经犯下了很大的错误,比如说2003年前后,李嘉诚先后错…

【设计模式】2.工厂模式

文章目录1. 工厂模式概述2. 简单工厂模式3. 工厂方法模式4. 抽象工厂模式1. 工厂模式概述 工厂模式属于创建型模式的一种。 在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重&#xf…

图神经网络学习笔记

1 图神经网络应用 芯片设计、场景分析问题推理、推荐系统、欺诈检测风控相关、道路交通动态流量预测、自动驾驶、无人机等、化学医疗等场景 2 图神经网络基本组成 点(vertex)、边(edge)、全局图(global),图神经网络(GNN,Graph Neural Netw…

Java 集合知识点总结

Java 集合知识点总结总览Collection 接口ListArrayList源码&扩容机制SetQueueMap接口HashMapHashMap源码&底层数据结构HashMap 的遍历LinkedHashMapTreeMapHashtableConcurrentHashMap 源码&底层数据结构本文是个人阅读学习JavaGuide的集合知识的总结笔记。总览 C…