蓝牙基础(三):蓝牙协议栈总体认知

2023-05-16

蓝牙基础(三):蓝牙协议栈总体认知

0 前言

初入门经典蓝牙学习,网上资料参差不齐,本博客旨在整理自己的一些总结内容,建立整体功能认识,以便后续深入学习。

1 蓝牙整体架构

蓝牙的整体核心架构如下图
在这里插入图片描述

1.1 蓝牙构成
  • 蓝牙的构成可分为主机(Host)和控制器(Controller),控制器由可分为主控制器和辅助控制器。
  • 主机是非核心配置文件下方和主机控制器接口(HCI)上方的所有层,控制器是HCI层以下的所有层。
  • 从图中可以看出,整个蓝牙框架中有三种控制器,分别是BR/EDR Controller、LE Controller和AMP Controller。这里主要关注前两种,经典蓝牙控制器和低功耗蓝牙控制器

注意主机定义中的非核心文件配置Profile

1.2 蓝牙核心系统

蓝牙核心系统,也就是最小系统,这里分BT和BLE进行讨论。

对于BT,网上也有BR/EDR的叫法,这里暂称为BT,代表经典蓝牙,与BLE低功耗蓝牙相区分

还是以上面的整体框架图为准,不管是BT还是BLE,其最小系统都可分为

  • 底层硬件模块/底层协议
  • 中间协议层/核心协议层

(1)底层硬件模块 / 底层协议

这一部分对应着图中的控制器Controller部分

BT Controller:链路管理器(Link Manager)、基带与链路控制器(BaseBand&Link Controller)以及射频(BT Radio)

BLE Controller:链路层(Link Layer)和物理层(PHY)

(2)中间协议层 / 核心协议层

BT:逻辑链路控制和适配层协议(L2CAP)、服务发现协议(SDP)、通用访问协议(GAP)

BLE:逻辑链路控制和适配层协议(L2CAP)、安全管理器(SM)、属性协议(ATT)、通用属性协议(GATT)和通用访问协议(GAP)

此外,还有主机控制器接口(HCI)。

上述也可以从主机Host 和 控制器Controller 的角度理解
对于BT:
	最小主机:L2CAP、SDP、GAP
	控制器:LM、BB&LC、RF

对于BLE:
	最小主机:L2CAP、ATT、GATT、SM、GAP
	控制器:LL、PHY
1.3 蓝牙协议分层

软件上总是分层设计,比如之前在嵌入式系统提到的硬件层—硬件驱动层—操作系统层—应用层等。
在蓝牙协议栈中也是分层设计的,但不同的人有不同的理解,分层也有所不同,这里所述的分层,有资料总结的结论,也有博主自己的理解。

蓝牙协议栈分层结构如下

  • 应用层
  • 高层协议
  • 核心协议
  • 底层协议

有资料将“高层协议”和“核心协议”统称为中间协议层

这里博主将下图中的高层协议分拆为了高层协议和核心协议,为什么这么分呢?

核心协议层是上面提到的L2CAP、SDP、GAP等基础协议,这些协议是蓝牙系统不可缺少的基本构成协议。也就是说不管开发过程中如何裁剪蓝牙协议栈,这些协议都是包含在内的

高层协议则可以提供更多的服务与功能,比如通话使用的HFP、音频播放使用的A2DP、AVRCP、串口透传SPP协议等

在这里插入图片描述

1.5 蓝牙架构脑图

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝牙基础(三):蓝牙协议栈总体认知 的相关文章

随机推荐

  • HAN论文模型代码复现与重构

    论文简介 本文主要介绍CMU在2016年发表在ACL的一篇论文 xff1a Hierarchical Attention Networks for Document Classification及其代码复现 该论文是用于文档级情感分类 xf
  • Http Digest认证协议

    http blog csdn net htjoy1202 article details 7067287 其认证的基本框架为挑战认证的结构 xff0c 如下图所示 xff1a xfeff xfeff 1 客户端希望取到服务器上的某个资源 x
  • 【系统分析师之路】嵌入式系统章节错题集锦

    系统分析师之路 嵌入式系统章节错题集锦 系分章节错题集第01题 xff1a 红色 01 雷达设计人员在设计数字信号处理单元时 xff0c 其处理器普遍采用DSP芯片 xff08 比如 xff1a TI公司的TMS320C63xx xff09
  • 【软工】程序编码

    目录 前言正文 程序设计语言 分类 选择原则 程序编码总原则 好程序的标准 结构化程序设计 主要内容 主要原则 程序设计风格 源程序文档化 数据说明 语句结构 输入输出方法 程序设计质量评价 正确性结构清晰性易修改性 易读性 简单性 程序复
  • TPM1.2到TPM 2.0的变化

    原文地址 xff1a http www vonwei com mod 61 pad amp act 61 view amp id 61 11 TPM 1 2规范主要面向PC平台 xff0c 其103版本在2009年被接受为ISO标准 xff
  • 关于Cmake与CmakeLists(一)--背景,须知,示例

    一 背景及须知 1 背景 xff1a VS2019与VS2010在编写程序时都是创建了一个工程 xff0c 然后直接打开 sln即可 但是vscode仅仅是一个编辑器 xff0c 打开之后只有 c或者 cpp文件 xff0c 故需要手动编译
  • webgl(three.js)实现室内定位,楼宇bim、实时定位三维可视化解决方案——第五课

    webgl three js 实现室内定位 楼宇bim 实时定位三维可视化解决方案 第五课 参考文章 xff1a xff08 1 xff09 webgl three js 实现室内定位 楼宇bim 实时定位三维可视化解决方案 第五课 xff
  • Linux虚拟机在线扩容lvm类型root分区

    目录 Linux虚拟机在线扩容lvm类型root分区写在前面正文写在后面 Linux虚拟机在线扩容lvm类型root分区 写在前面 这是我在CSDN上的第一篇文章 作为一个半江湖的IT人 xff0c 这些年来也在CSDN受益很多 今天是20
  • 无vCenter创建vSAN集群

    无vCenter创建vSAN集群 最近仍有朋友在问题 xff0c vCenter如果 挂了 xff0c vSAN还能正常运行吗 xff1f 这个小文通过手动创建vSAN集群的方式来解答下这个问题吧 xff08 生产环境慎用 xff01 xf
  • 记一次mdadm软raid1升级容量

    MDRaid 2块4TB做了软RAID1 xff0c 需要升级成2块8TB盘 查看磁盘信息 xff0c SerialNumber等会儿会用到 xff0c 防止换错盘 span class token function sudo span h
  • [简洁版]youtube-dl下载命令

    简介 YouTube dl是python上的pip模块 xff08 开源 xff09 xff0c 可以用来下载YouTube Bilibili等多个平台的视频 音频文件 xff0c 可谓是居家旅行必备小工具 本文主要介绍一些常用的youtu
  • [简版]VMware强大的管理工具-PowerCLI

    一 PowerCLI介绍 什么是 PowerCLI PowerCLI 是一个命令行工具 xff0c 可以用于自动化vSphere管理 xff0c 包括网络 存储 虚拟机以及其他很多功能 PowerCLI包含超过700个命令 要安装Power
  • [简版]使用PowerCLI自定义vSphere ISO安装镜像

    一 什么情况下要自定义ISO镜像 一般来说 xff0c 对于DELL Lenovo HPE这类主流的服务器厂商 xff0c VMware官方vSphere ISO镜像或者官网的第三方客制镜像 xff08 由服务器厂商提供的封装镜像 xff0
  • [简版] 关于vSphere漏洞-OpenSLP

    一 前言 近期vSphere OpenSLP漏洞在野利用的新闻频频被爆出来 xff0c 大伙儿非常关注 由于vSphere虚拟化客户之广泛 xff0c 很多朋友都表达了自己的焦虑 xff0c 同时也会担心自己管理的vSphere虚拟化平台是
  • [简版] Linux搭建SAMBA文件共享服务

    SMB服务搭建 更多参数含义参考链接 常用配置 安装samba span class token comment Ubuntu span span class token function sudo span span class toke
  • STM32 HAL库详解

    STM32 HAL库整体总结 STM32 之二 HAL库详解 及 手动移植 本篇博客是对以上参考资源的一个二次总结与整理 1 HAL库文件结构 对于开发人员而言 xff0c 首先要清楚 HAL 库的文件结构 根据文件类型可认为以下两大类 x
  • STM32 HAL库学习(四):DMA之串口空闲中断

    STM32CubeMX 配置实现参考这里 1 串口空闲中断 1 1 UART DMA方式接收数据 STM32串口使用DMA方式接收数据可以减小CPU的开销 对于接收定长数据 xff0c 可以将DMA接收缓冲区的长度设定为待接收数据的长度 x
  • Android Studio 启动模拟器出现“Timed out after 300seconds waiting for emulator to come online“解决方案

    Android Studio 启动模拟器出现 34 Timed out after 300seconds waiting for emulator to come online 34 解决方案 参考文章 xff1a xff08 1 xff0
  • 结构体中的位定义

    1 结构体位定义 在工作中 xff0c 经常遇到按位 xff08 bit xff09 定义结构体 的情况 由于一个字节有8个位 xff0c 这时 xff0c 程序员往往对bit的位置产生困惑 现在给出2个例子 xff0c 来说明位的定义次序
  • 蓝牙基础(三):蓝牙协议栈总体认知

    蓝牙基础 xff08 三 xff09 xff1a 蓝牙协议栈总体认知 0 前言 初入门经典蓝牙学习 xff0c 网上资料参差不齐 xff0c 本博客旨在整理自己的一些总结内容 xff0c 建立整体功能认识 xff0c 以便后续深入学习 1