ESP32-C3模组上实现蓝牙BLE配网功能(3)

ops/2024/9/25 6:18:21/

接前一篇文章:ESP32-C3模组上实现蓝牙BLE配网功能(2)

本文内容参考:

ESP32-C3 物联网工程开发实战》 乐鑫科技

特此致谢!

一、蓝牙知识基础

2. 蓝牙核心体系结构

蓝牙的核心系统主要由主机(Host)控制器(Controller)主机控制接口(Host Controller Interface,HCI)构成。

  • 主机(Host)

Host主要用于实现各种业务场景需求,大部分的开发工作都是在Host上进行的。

  • 控制器(Controller)

Controller主要用于蓝牙报文的收发,以及蓝牙物理连接的管理等基本功能由专门的蓝牙芯片厂商负责实现

  • 主机控制接口(Host Controller Interface,HCI)

Host和Controller最初的设计理念将这两个模块单独运行在两颗不同的芯片甚至系统上,两者之间通过主机控制接口进行通信,以方便替换和升级。虽然现在有不少芯片把Host和Controller都放在了一颗芯片上,但基本还遵循这样的层次结构,只是将HCI协议从硬件通信端口换成了软件端口。

低功耗蓝牙协议栈包含物理层(Physical Layer,PHY)链路层(Link Layer,LL)逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol,L2CAP)属性协议(Attribute Protocol,ATT)安全管理器协议(Security Manager Protocol,SMP)通用属性配置文件(Generic Attribute Profile,GATT)通用访问配置文件(Generic Access Profile,GAP)等。低功耗蓝牙的协议栈层次如下图所示:

  • 物理层(Physical Layer,PHY)

PHY用来指定低功耗蓝牙所用的无线频段调制解调方式等。PHY做得好不好,将直接决定整个低功耗蓝牙芯片的功耗、灵敏度以及selectivity等射频指标的好坏。

  • 链路层(Link Layer,LL)

LL只负责把数据发送出去或者接收回来,对数据进行怎样的解析则交给上面的GAP或者ATT处理。LL要处理的事情(事务)非常多,如选择什么程度的射频进行通信、怎么识别空中数据包、具体在哪个时间点将数据包发送出去、如何保证数据的完整性、如何对链路进行管理和控制、ACK如何接收、重传等,是整个低功耗蓝牙协议栈的核心

  • 主机控制接口(Host Controller Interface,HCI)

HCI是是Host和Controller之间的通信接口。HCI可以是物理形式的,如UART、USB等,常见于双芯片架构;也可以直观通过API实现,常见于单芯片架构。

  • 逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol,L2CAP)

L2CAP向上层协议(协议复用、分段、重组操作)提供连接导向和无连接的数据服务,并按通道进行流量控制和重传

  • 属性协议(Attribute Protocol,ATT)

ATT主要用来定义用户命令以及命令操作的数据,如读取或写入。低功耗蓝牙协议栈引入了Attribute概念,用于描述一条条的数据。ATT除了定义数据,同时也定义该数据可以使用的ATT命令,是读者接触最多的部分。

  • 安全管理器协议(Security Manager Protocol,SMP)

SMP负责管理低功耗蓝牙连接的加密和安全,既保证连接的安全性,同时又不影响用户的体验。

  • 通用属性配置文件(Generic Attribute Profile,GATT)

GATT用来规范Attribute中的数据内容,并运用分组(Group)的概念对Attribute进行分类管理。当然,没有GATT也能跑低功耗蓝牙协议栈,只是会在互联互通上出问题。正是因为有了GATT和各种各样的应用Profile,Bluetooth LE才摆脱了ZigBee等无线协议的兼容性困境。

  • 通用访问配置文件(Generic Access Profile,GAP)

GAP对LL的有效数据包进行了一些规范和定义,是解析LL负载数据最简单的一种方式。因此,GAP能实现的功能极其有限,主要用来进行广播、扫描和发起连接等。

更多内容请看下回。


http://www.ppmy.cn/ops/46738.html

相关文章

渗透测试之Web安全系列教程(一)

今天,我们来讲一下Web安全! 本文章仅提供学习,切勿将其用于不法手段! 目前,在渗透测试领域,主要分为了两个发展方向,分别为Web攻防领域和PWN(二进制安全)攻防领域。Web…

Python | Leetcode Python题解之第116题填充每个节点的下一个右侧节点指针

题目: 题解: class Solution:def connect(self, root: Node) -> Node:if not root:return root# 从根节点开始leftmost rootwhile leftmost.left:# 遍历这一层节点组织成的链表,为下一层的节点更新 next 指针head leftmostwhile head:#…

第一篇【传奇开心果系列】AI工业应用经典算法和Python示例:基于AI的智能制造技术经典算法与Python实践

传奇开心果博文系列 系列博文目录AI工业应用经典算法和Python示例系列 博文目录前言一、AI在智能制造方面的应用场景介绍二、基于AI的智能制造技术经典算法介绍三、支持向量机机器学习算法Python示例代码四、随机森林机器学习算法Python示例代码五、深度学习算法Python示例代码…

100页2秒?我们为什么需要这样的文档解析速度

近期,TextIn通用文档解析完成最新一版产品迭代,将100页文档解析速度提升至最快2秒以内。 P50(百页) P90(百页) P95(百页) P99(百页) 平均(单页…

CRM系统主要是干什么?CRM系统主要功能和作用

什么是CRM 系统?CRM系统到底是干什么的?不同的企业人员该如何利用CRM去解决他们的问题等等,问题太多了,今天来为大家详细介绍。 干货满满,建议收藏!! 首先第一个问题,什么是CRM系统…

如何配置才能连接远程服务器上的 redis server ?

文章目录 Intro修改点 Intro 以阿里云服为例。 首先,我在我买的阿里云服务器中以下载源码、手动编译的方式安装了 redis-server,操作流程见:Ubuntu redis 下载解压配置使用及密码管理 && 包管理工具联网安装。 接着,我…

深入探讨Java字符串拼接的艺术

引言 在Java编程中,字符串是最基本的数据类型之一。字符串拼接是开发过程中一个非常常见的操作,无论是构建用户界面的文本,还是生成日志信息,都离不开字符串的拼接。然而,字符串拼接的效率和正确性常常被开发者忽视&a…

C-数据结构-树状存储基本概念

‘’’ 树状存储基本概念 深度(层数) 度(子树个数) 叶子 孩子 兄弟 堂兄弟 二叉树: 满二叉树: 完全二叉树: 存储:顺序,链式 树的遍历:按层遍历&#xff0…