BLE协议栈1-物理层PHY

news2024/11/18 9:32:04

从应届生开始做ble开发也差不读四个月的时间了,一直在在做上层的应用,对蓝牙协议栈没有过多的时间去了解,对整体的大方向概念一直是模糊的状态,在开发时也因此遇到了许多问题,趁有空去收集了一下资料来完成了本次专栏,来增加自己对ble大框架的了解,当然,也仅仅是对协议栈做一个大概的介绍,太复杂细节的东西还需要自己未来去悟了。

0. 协议栈总体介绍

如下图,ble协议栈大体可以主要分为host和controller两个层次,其中

  • 主机层(Host)位于BLE协议栈的上层,通常运行在主机设备上,如智能手机、电脑或其他嵌入式系统。它提供与应用层和用户接口的交互,并处理高层协议的逻辑,如GAP(Generic Access Profile)和GATT(Generic Attribute Profile)。主机层负责管理BLE设备的连接、数据传输、设备发现、安全性等。
  • 控制器层(Controller)位于BLE协议栈的下层,通常是嵌入在BLE芯片中的硬件模块。控制器层负责处理与无线传输相关的物理层和链路层细节,如频率管理、调制解调、数据包解析等。它与主机层之间通过主机控制器接口(Host Controller Interface,HCI)进行通信。
  • 主机层和控制器层之间的分界主要是基于功能和实现的考虑。主机层关注的是高层的协议逻辑和应用接口,而控制器层则负责处理底层的物理层和链路层操作。通过将主机层和控制器层分离,可以实现模块化的设计和开发,使得主机和控制器可以独立进行优化和升级。
  • 主机层和控制器层之间的通信是通过主机控制器接口(HCI)实现的。HCI定义了主机层与控制器层之间的命令和事件传输的格式和协议。主机通过HCI发送命令给控制器,控制器执行相应的操作,并通过HCI向主机发送事件和数据。

在这里插入图片描述
但我们又可以看到host和controller又可以细分为多个层次,其中

  • 物理层(Physical Layer):物理层是BLE协议栈的最底层,负责处理与无线传输相关的物理层面的细节。它定义了无线通信的频率、调制方式、传输速率以及功耗管理等。物理层的主要作用是将数字数据转换为无线信号,并实现与硬件设备的接口。
  • 链路层(Link Layer):链路层位于协议栈的第二层,负责建立和管理BLE连接,并提供数据传输的可靠性和安全性。它定义了BLE的数据包格式、连接管理、错误检测与纠正等功能。链路层还处理BLE设备之间的广播和扫描过程。
  • 主机控制器层(Host Controller Layer):主机控制器层位于协议栈的第三层,负责与物理层和链路层进行交互,并提供对上层协议的接口。它在主机(如智能手机、电脑)和BLE设备之间充当中间层,处理命令和数据的传输、设备发现、连接管理以及安全性等。
  • 逻辑链路控制器层(Logical Link Control and Adaptation Protocol Layer,L2CAP):逻辑链路控制器层位于协议栈的第四层,提供数据通信的逻辑通道。它负责分段和重组数据包,并处理数据流控制、流量管理和服务质量(QoS)等功能。L2CAP层还支持多个上层协议,如Attribute Protocol(ATT)和Security Manager Protocol(SMP)。
  • 属性协议(Attribute Protocol):属性协议是BLE协议栈中的一个子协议,用于定义BLE设备之间的数据交换格式和规范。它支持设备之间的读取、写入和通知等操作,用于实现BLE设备之间的数据传输和交互。
  • 安全管理协议(Security Manager Protocol,SMP):SMP负责处理BLE连接的安全性。它定义了BLE设备之间的配对、加密和认证过程,以确保通信的安全性和隐私性。

本专栏是对每个层相关内容的讲解。

1. 物理层(Physical Layer)简介

物理层(Physical Layer)是BLE协议栈最底层,它规定了BLE通信的基础射频参数,包括信号频率、调制方案等。BLE工作频率是2.4GHz,它使用GFSK频率调制,并使用跳频机制来解决频道拥挤问题。
BLE 5的物理层有三种实现方案,分别是1M Sym/s的无编码物理层、2M Sym/s的无编码物理层和1M Sym/s的编码物理层。其中1M Sym/s的无编码物理层与BLE v4系列协议的物理层兼容,另外两种物理层则分别扩展了通信速率和通信距离。

2. 频段和跳频

大多数无线通信的频段需要申请授权才可以使用,不同地区开辟了少量免授权频段,只要产品满足当地无线电规范,即可免授权使用。下图展示了全球免授权的频段及其分布
在这里插入图片描述
从上图可以发现:

  • 图中2.4GHz的频段很强势,覆盖了整个地图,是专为工业(Industrial)、科学(Scientific)和医学(Medical)三个机构使用,称为ISM频段。全球范围都可以免授权使用ISM频段。BLE即工作在2.4GHz频段。
  • 2.4GHz频段信号有明显的优缺点,优点是免费、技术成熟,缺点是频段拥挤、信号传播特性差、遇水衰减。目前除了蓝牙信号外,WIFI、ZigBee、无线键盘、无线玩具甚至微波炉都工作在这个频段,当一个空间内同时运行着多个无线设备时,频带占用情况如下图

在这里插入图片描述

其中绿色的脉冲为BLE信号,红色信号分别是WIFI、微波炉和无线设备,它们形成了干扰噪声。

BLE工作在2.400GHz – 2.480GHz频率区间,并将这个区间均匀分为40个频道,相邻频道间隔2MHz。在不引起误解的情况下,频道也称为信道,40个信道的频率和分布如下图:
在这里插入图片描述

3. 调制

3.1 调制方式

物理层定义了两种调制方式。

一种方案采用高斯频移键控GFSK,具有1MSym/s的符号速率。第二种方式是与第一种相似(Similar),但是具有2MSym/s的符号速率。

第一种方式又分成两种类型:

  • LE 1M Uncoded PHY。该方式的比特率为1Mb/s,它是BLE v4版本协议保持兼容。
  • LE 1M Coded PHY。该方式对报文进行编码,使接收端收到的报文具有前向纠正的能力,在相同误码率条件下,能够显著降低误码重传次数,从而提高通信速率。 如果采用8符号编码,比特率为125kb/s,如果采用2符号编码,比特率为500kb/s。

LE 1M Uncoded PHY是BLE协议强制要求实现的物理层,而LE 1M Coded PHY则是可选方案。

这两种实现方式符号速率都是1MSym/s。

符号速率中的“符号”是指单次采样所得到的信息,这个信息可能包含多个比特,也可能多个信息等效于一个比特。比如一个电压幅度调制系统中,用+5V表示11b, +2V表示10b, -2V表示01b, -5V表示00b,那么采样一次电压可以获得两个比特信息,此时比特率是符号速率的两倍。在LE 1M Coded PHY机制中,用8个符号表示1个比特,此时比特率是符号速率的1/8。

第二种物理层实现方式为:

  • LE 2M Uncoded PHY。该方案的比特率为2Mb/s,是可选的实现方式。

官方文档使用LE 1M PHY、LE Coded PHY、LE 2M PHY来表示以上三种不同的物理层实现方式:

物理层调制方式编码方案 (报头部分)编码方案 (有效载荷)比特率
LE 1M PHY1Msym/s 方式无编码无编码1Mb/s
LE 2M PHY2Msym/s 方式无编码无编码2Mb/s
LE Coded PHY1Msym/s 方式编码S=8编码S=8;编码S=2125kb/s;500kb/s

表中的S=8表示8个符号编码成1个比特。

3.2 GFSK

频率调制是将低频数据信号加载到高频载波上,数据的变化反映为调制波频率的疏密变化,如下图所示:

在这里插入图片描述

数字化的信号仅有0、1变化,在调制时,可以定义载波频率正向偏移视为1,负向偏移视为0。这种调制方式称为“频移键控(FSK)”。数字信号发生0/1变换时,会产生大量噪声,引入高斯滤波器能够延展0/1变换时间,从而降低噪声。这种做法称为“高斯频移键控(GFSK)”。

GFSK技术成熟,实现简单,适合低功耗BLE的需求。

BLE协议规定,中心频率正向偏移大于等于185kHz视为比特1, 负向偏移大于等于185kHz视为比特0。如果选择2402MHz作为中心频率,比特1的频率应为2402.185MHz, 比特0的频率应为2401.815MHz。

星闪技术调制

插一个题外话。我们也可以对比一下最近很火的星闪技术使用的调制OFDM技术:OFDM使用正交子载波来传输数据。将数据分成多个低速子载波,这些子载波之间正交(垂直),以避免干扰。每个子载波可以使用不同的调制方式,例如QPSK、16-QAM或64-QAM。

相较于GFSK,OFDM有以下优点:

  1. 频谱效率高:OFDM能够将频谱划分为多个子载波,每个子载波可以以较高的符号速率传输数据。这种频域划分和高速传输使得OFDM能够实现高频谱效率,充分利用可用的频带资源。
  2. 抗多径衰落:OFDM对多径衰落(信号在传播路径上经历多个反射和折射)具有较好的抗干扰性能。由于OFDM将数据分散在多个子载波上,即使某些子载波受到多径干扰,其他子载波仍然可以正常工作,从而减少了信号质量的下降。
  3. 高容量支持:OFDM可以在不同的子载波上使用不同的调制方式,例如QPSK、16-QAM或64-QAM,以适应不同的信道条件和要求。这使得OFDM能够支持高容量的数据传输,满足现代高速通信的需求。

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

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

相关文章

毕业设计选题之Android基于移动端的线上订餐app外卖点餐安卓系统源码 调试 开题 lw

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

【gcc】RtpTransportControllerSend学习笔记

本文是对大神 webrtc源码分析(8)-拥塞控制(上)-码率预估 的学习笔记。看了啥也没记住,所以跟着看代码先。CongestionControlHandler 在底层网络可用的时候,会触发RtpTransportControllerSend::OnNetworkAvailability()回调,这里会尝试创建CongestionControlHandler创建后即刻…

在VS Code中优雅地编辑csv文件

文章目录 Rainbow csv转表格CSV to Tablecsv2tableCSV to Markdown Table Edit csv 下面这些插件对csv/tsv/psv都有着不错的支持,这几种格式的主要区别是分隔符不同。 功能入口/使用方法Rainbow csv按列赋色右键菜单CSV to Table转为ASCII表格指令CSV to Markdown …

混合网状防火墙的兴起如何彻底改变网络安全

数字环境在不断发展,随之而来的是日益复杂的网络威胁。 从复杂、持续的攻击到对非传统设备的秘密尝试,网络犯罪分子不断完善他们的策略。 除了这些日益严峻的挑战之外,各组织还在努力应对物联网 (IoT),尽管大量联网设备收集和传…

Leetcode 1492.n的第k个因子

给你两个正整数 n 和 k 。 如果正整数 i 满足 n % i 0 ,那么我们就说正整数 i 是整数 n 的因子。 考虑整数 n 的所有因子,将它们 升序排列 。请你返回第 k 个因子。如果 n 的因子数少于 k ,请你返回 -1 。 示例 1: 输入&#…

使用华为eNSP组网试验⑸-访问控制

今天练习使用华为sNSP模拟网络设备上的访问控制,这样的操作我经常在华为的S7706、S5720、S5735或者H3C的S5500、S5130、S7706上进行,在网络设备上根据情况应用访问控制的策略是一个网管必须熟练的操作,只是在真机上操作一般比较谨慎&#xff…

FFmpeg 基础模块:AVIO、AVDictionary 与 AVOption

目录 AVIO AVDictionary 与 AVOption 小结 思考 我们了解了 AVFormat 中的 API 接口的功能,从实际操作经验看,这些接口是可以满足大多数音视频的 mux 与 demux,或者说 remux 场景的。但是除此之外,在日常使用 API 开发应用的时…

cpp primer笔记090-动态内存

shared_ptr和unique_ptr都支持的操作,加上shared_ptr独有的操作 每个shared_ptr都有一个关联的计数器,通常称其为引用计数,当调用了shared_ptr的构造函数时就会递增,当调用析构函数时就会递减,一旦一个shared_ptr的计…

【2023年11月第四版教材】第19章《配置与变更管理》(合集篇)

第19章《配置与变更管理》(合集篇) 1 章节内容2 配置管理3 变更管理4 项目文档管理 1 章节内容 【本章分值预测】本章内容90%和第三版教材内容一样的,少部分有一些变化,特别是变更涉及的人员及职责,预计选择题考3分&a…

Python如何实现数据驱动的接口自动化测试

大家在接口测试的过程中,很多时候会用到对CSV的读取操作,本文主要说明Python3对CSV的写入和读取。下面话不多说了,来一起看看详细的介绍吧。 1、需求 某API,GET方法,token,mobile,email三个参数 token为必填项mobil…

Connect to 127.0.0.1:1080 [/127.0.0.1] failed: Connection refused: connect

报错信息 A problem occurred configuring root project CourseSelection. > Could not resolve all artifacts for configuration :classpath.> Could not resolve com.android.tools.build:gradle:3.6.1.Required by:project :> Could not resolve com.android.tool…

力扣第101题 c++ 递归 迭代 双方法 +注释 ~

题目 101. 对称二叉树 简单 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false提示&a…

点读笔背后的神秘力量,究竟是如何实现即时识别的?

点读笔是一种智能学习工具,通过与印刷物或电子设备配合使用,将文字、图片或声音转化为可听、可读、可学习的内容。它的核心功能是识别并解析特定标识(如二维码、条形码)或区域内的信息,并提供相应的语音、文字或图像反…

docker swarm安装指导

SWARM部署DOCKER集群 1. 简介............................................................................................................................ 3 2. 部署准备.........................................................................................…

15040-2021 工作测光标准灯泡 学习记录

声明 本文是学习GB-T 15040-2021 工作测光标准灯泡.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了工作测光标准灯(下文在不会引起误解时简称为"标准灯”或“灯")的分类、 一般要求、 技术要求和试验方法&#xff…

详解链表oJ<反转链表,链表的中间节点及链表的回文>

hello,大家好,这里是Dark FlameMaster,今天和大家分享的是有关数据结构链表的几道题目,链表的中间节点,反转链表及判断链表是否为回文结构,放在一起讲解会印象更加深刻。 文章目录 一,链表的中间节点二&…

C#,数值计算——数据建模FGauss的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class FGauss : MultiFuncd { public void funk(double x, double[] a, ref double y, double[] dyda) { int na a.Length; y 0.0; for (int …

吃鸡达人专享!提高战斗力,分享干货,查询装备皮肤,保护账号安全!

大家好!作为专业吃鸡行家,我将为您带来一些热门话题和实用内容,帮助您提升游戏战斗力,分享顶级游戏作战干货,并提供便捷的作图工具和查询服务。让我们一起享受吃鸡的乐趣! 首先,我要推荐一款绝地…

CleanMyMacX 永久版下载激活码破解版

CleanMyMac X最新破解版V4.9.2是一款出色的Mac 系统垃圾清理程序。 该软件具有强大的垃圾清理功能,可以释放数 GB 的空间,让您的 Mac 焕然一新。 带有激活码的完整破解版 CleanmyMac 可加速您的 Mac 设备。 此外,cleanmymac还能帮助您从 Mac…

2023最新ICP备案查询系统源码 附教程 Thinkphp框架

2023最新ICP备案查询系统源码 附教程 thinkphp框架 本系统支持网址备案,小程序备案,APP备案查询,快应用备案查询 优势: 响应速度快,没有延迟,没有缓存,数据与官方同步 源码下载:ht…