深入了解BLE(Bluetooth 5.3)持续更新...

news2024/11/26 20:45:02

目录

1 BLE的优点和局限性

1.1 BLE与经典蓝牙的区别

1.2 局限性

1.2.1 数据吞吐量

1.2.2 范围

1.3 BLE优势及应用

1.4 BLE的角色

1.5 BLE的层次结构

1.5.1 物理层(PHY) 

1.5.2 链路层

1.5.2.1 数据包格式

1.5.2.2 状态机

1.5.2.3 设备地址

1.5.2.4 Filter Accept List

1.5.2.5 Connection Subrating


1 BLE的优点和局限性

1.1 BLE与经典蓝牙的区别

经典蓝牙BLE
主要用于流媒体应用(音频,文件等)主要用于传感器数据,设备控制,低带宽应用
操作79个信道操作40个信道
在32个信道进行搜索在3个信道进行搜索,比经典蓝牙更快的发现设备和连接

1.2 局限性

1.2.1 数据吞吐量

BLE 4.2及前期版本支持1Mbps,蓝牙5之后根据使用的模式和PHY最大支持2Mbps。

影响数据吞吐的因素:

  • 数据包间隔:Core spec规定每个数据包之间间隔150微妙
  • 数据包开销:每个数据包都包含包头信息和实际的应用负载,包头需要传输但不是应用程序使用的数据
  • 从设备包需求:在无数据传输情况下master也需要发送空包给从设备,从设备也需要回复这个空包
  • 数据包重传:在有数据包丢失或者遭受干扰的情况下需要进程重传

1.2.2 范围

ble被设计为短距离应用,因此操作范围有限,影响操作范围的因素:

  • 2.4G受到周围障碍物的影响较大(金属,墙壁,水,尤其是人体)
  • BLE设备的天线设计和性能
  • 设备的物理外壳影响天线性能,尤其是内部天线
  • 设备的方向会影响天线的位置(例如智能机)

1.3 BLE优势及应用

BLE优势:

  • 低功耗:与其他类似技术相比BLE实现了更低的功耗
  • 免费的官方规范文档:相对于大部分的其他无线技术,非成员也可以免费使用相关规范文件
  • 与其他相似技术相比,模组和芯片的成本低,市场占有率高:市场上的智能机都支持蓝牙功能,这个可能是ble比其他竞争对手(zigbee等)的最大优势

BLE的应用:

  • 低带宽数据:适用于类似传感器,控制器等小数据场景的传输
  • 辅助设备配置:在BLE不能满足系统的主要需求的情况下仍可以作为其他无线连接的辅助接口,例如作为配置和建立WIFI'连接的辅助
  • 使用智能机作为接口:低功耗设备一般没有大屏幕,只能展示有限的数据,智能机可以为小设备提供更丰富的界面展示。通过智能机可以把数据同步到云端。
  • 个人可穿戴设备:智能手表/手环等
  • 仅广播设备:Beacon设备:只广播数据以便其他设备发现并读取

不适合ble的应用场景:

  • 视频流
  • 高质量音频流
  • 长时间大数据传输

1.4 BLE的角色

Central(中央设备)

发现并监听其他正在进行广播的设备,可以建立和周边设备的连接,通常可以同时连接多个周边设备。

Peripheral(周边设备)

通过发送广播来宣布自己的存在,如果是可连接广播可以接受中央设备的连接请求。

BLE设备的类型

ble有4中类型的设备

BroadcasterPeripheralCentralObserver
无射频接收器需要射频接收器和发射器需要射频接收器和发射器无射频发送器
数据单向传输数据双向传输数据双向传输数据单向传输
缩减的硬件及软件完善的软件栈完善的软件栈缩减的硬件及软件栈

1.5 BLE的层次结构

1.5.1 物理层(PHY) 

频段

用于调制/解调的无线电硬件,工作在2.4G频段,划分为40个信道,信道带宽2MHZ。

 37,38,39为主广播信道,其余37个信道用于次广播信道和连接期间的数据传输。

调制方式

BLE的调制方式为Gaussian Frequency Shift Keying (GFSK 高斯频移键控)

 取所选信道的中心频率,向上移动一个指定的量表示1,向下移动相同的量表示0,然后对信号采用高斯滤波以降低频率突变的噪音。

BLE定义了3种PHY类型:

  • LE 1M PHY:使用1 Msym/s符号率,频率偏差至少为185kHZ,所有ble设备必须支持
  • LE 2MPHY:使用2 Msym/s符号率,频率偏差至少为370kHZ,可选支持
  • LE Coded PHY:使用1 Msym/s符号率,数据包中增加了向前纠错(FEC),因此增加了传输距离,但是减低了传输速率,可选支持

3种PHY的比较:

1MCoded s=2Coded s=82M
符号率1Ms/s1Ms/s1Ms/s2Ms/s
协议数据速率(Protocol Data Rate)1Mb/s500kb/s125kb/s2Mb/s
应用数据速率800kb/s400kb/s100kb/s1400kb/s
错误检测CRCCRCCRCCRC
错误校正NONEFECFECNONE
通讯范围1240.8
要求必选可选可选可选

分时

BLE的射频是半双工设备,不能同时进行发送和接收,所有的PHY都采用时分双工(TDD)的方案,从而表现为一个全双工类型的设备。

1.5.2 链路层

定义数据包类型,管理射频的状态,信道的选择,数据校验,加密,随机数生成等。

1.5.2.1 数据包格式

链路层定义了2种数据包类型:用于uncoded PHY的数据包和用于coded PHY的数据包

LE uncoded PHY数据包格式:

 LE coded PHY数据包格式:

 Preamble

前导码主要用于让接收机精确的同步信号频率,就是在发送有效数据之前提醒接收机注意接收,以免丢失有用信号;进行自动增益控制(AGC:automatic gain control)。

ble preamble就是一个固定长度的01序列组成,不同的PHY长度不同:

  • 1M PHY的preamble为1个字节
  • 2M PHY的preamble为2个字节
  • LE Coded PHY的preamble包含80个符号(字节),由10个重复的'00111100'组成,preamble不会被进行coded

Access address

因为无线通信中存在噪音干扰和其他的链路干扰,接入地址就是被接收器用于识别信号和背景噪音。

接入地址长度为32位,有2种类型:

  • 广播接入地址:固定值(0x8E89BED6)
  • 数据接入地址:在连接建立时生成,并且通过PDU通知给对端

PDU

上层传给链路层的数据。

有3种类型:

  • 广播信道PDU(也用于periodic physical channel)
  • 数据信道PDU
  • 登时信道PDU

CRC

循环冗余检查用于错误检查,通过PDU进行计算得出

PDU和CRC字段在传输前需要进行白化,避免数据包中的0或1的长序列引起接收机的频率锁漂移,在接收机CRC校验之前需要进行逆白化。

CTE

在使用AOA/AOD测向时才会用到,本章不进行扩展。

FEC block1和FEC block2

向前纠错编码是专门针对coded PHY的,FEC block1包含接入地址,Coding Indicator(CI),TERM1。

FEC block1使用s=8的编码方式

Coding Indicator

用来指示FEC block2的编码方式

FEC使用卷积编码方式:

  • S=2:2个编码替换1个原数据位
  • S=8:8个编码替换1个原数据位

TERM1和TERM2

每个FEC块的结束符,长度为3位。

1.5.2.2 状态机

链路层状态:

  • Standby:默认状态,射频不发送和接受数据
  • Advertising:设备发送广播数据以便其他设备可以发现并读取
  • Scanning:扫描周边正在处于Advertising的设备
  • Initiating:Scanning设备决定和Advertising设备建立连接
  • Connection:两个设备已经建立连接并开始交换数据,发起连接的为master,进行广播的为salve
  • Isochronous broadcasting
  • Synchronization

1.5.2.3 设备地址

BLE设备通过设备地址和地址类型区分设备,长度48位,设备地址相同但是地址类型不同认为是不同的设备。

有公共地址和随机地址2种:

公共地址:和经典蓝牙类似,需要向IEEE申请。

随机地址:包含静态地址和私有地址

静态地址:

每个上电周期开始时生成静态地址,一旦生成不能改变,知道上电周期结束。

静态地址随机部分不能全部为0也不能全部为1 。

一旦静态地址改变原来保存的连接信息将失效。

私有地址:有可解析私有地址和不可解析私有地址2种类型

不可解析私有地址

 可解析私有地址

系统会定期更改可解析私有地址,Core spec建议15分钟。 

在进行配对时会交换IRK,IRK会用来解析可解析的私有地址。

1.5.2.4 Filter Accept List

这个就是原来的白名单机制,Core spec 5.3中White List修改为Filter Accept List。此列表可以填充Host有兴趣接受数据包的设备的地址。

链路层通过对端设备的地址进行过滤,控制上传给HOST的数据包数量,丢弃那些没有传给Host的数据包。

链路层定义了一系列的过滤策略,所有的过滤策略应当使用相同的Filter Accept List。

1.5.2.5 Connection Subrating

subrated connection 与non-subrated connection相比使用连接事件的特定子集,即使连接间隔很短也能够实现叫低的占空比,并且能够更快速的从低占空比切换到高占空比。

上图展示了从长连接间隔修改为短连接间隔,提高占空比的流程。完成本次连接间隔的修改至少需要6个连接事件来处理,会导致更长的延时。例如:把连接间隔由1秒修改为100ms,就需要6秒来完成这个动作。在对时间比较敏感的应用中这个延迟可能无法容忍。

subate factor = 5 subrate base event = 0的连接事件时序(下图)

subrated connection连接定义了多个连续的连接事件,只有其中一个是active状态,subrated connection event并不一定是连接事件序列中的第一个,可以通过subrate base event来指定。

subrate factor = 5,subrate base event = 2,latency = 0的连接事件时序(下图) 

continuation number = 1时连接事件时序(下图)

  • 连接事件#0收到的数据包PDU为0不需要继续,将跳过下一次subrated connection event之前的所有连接事件,因此#1至#4的连接事件将被跳过,不进行数据收发。
  • 连接事件#5收到的数据包中PDU长度不为0,#6将被起用为连续事件,其中数据包PDU长度不为0
  • 连接事件#6收到的数据包PDU不为0,#7将被起用为连续事件,其中数据包的PDU长度不为0
  • 连接事件#7的数据包PDU不为0,#8将被启用为连续事件,其中数据包PDU长度为0
  • 连接事件#8的数据包长度为0,因为continuation为1,subrated connection event将在#8结束

continuation number = 2时连接事件时序(下图)

  •  连接事件#0收到的数据包PDU长度不为0,continuation为2,其后续的2个连接事件将被启用为连续事件
  • 因为#1 #2的数据PDU长度都为0,所以连续窗口在#2结束
  • 下一次的subrated connection event#5包含有效数据,#6  #7成为连续事件。
  • 连续事件#6有数据处理,因此#8成为连续事件,连续事件#7也有数据处理,因此#9也启用为连续事件
  • 连续事件#8 #9中都没有数据处理,因此#5开始的subrated connection event在#9结束,新的subrated connection event将从#10开始。
  • 连接事件#10有数据处理,因此#11 #12为连续事件(未标出)

peripheral latency = 1,subrate factor = 3,continuation = 0的连接事件时序(下图)

  • #0有数据处理,continuation为0,因此# 1 #2会被跳过,因为latency=1,#3~#5将被跳过
  • #6有有效数据,因为continuation=0,#7 #8被跳过,因为latency=1,#9~#11将被跳过

peripheral latency = 1,subrate factor = 3,continuation = 1的连接事件时序(下图)

  • #0有有效数据,因为continuation=1,#1启用为连续事件(PDU长度非0),因此#2启用为连续事件(PDU长度为0)
  • #2的PDU长度为0,subrated connection event结束,因为latency=1,#3~#5被跳过
  • #6开始新的subrated connection event,因为PDU长度非0,#7启用为连续事件,其PDU长度非0
  • #7的PDU长度非0,#8启用为连续事件,其PDU长度为0
  • #8的PDU长度为0,continuation=1,此subrated connection event结束,因为latency=1,#9~#11被跳过

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

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

相关文章

PTA_1164 Good in C_模拟

PTA_1164 Good in C_模拟 1164 Good in C 分数 20 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 When your interviewer asks you to write "Hello World" using C, can you do as the following figure shows? Input Specification: Each input file conta…

STM32实战总结:HAL之FSMC控制TFT-LCD

什么是FSMC? FSMC(Flexible Static Memory Controller,可变静态存储控制器)是STM32系列采用的一种新型的存储器扩展技术。在外部存储器扩展方面具有独特的优势,可根据系统的应用需要,方便地进行不同类型大容量静态存储器的扩展。 …

计算机网络 HTTP

概念 Web 基础 HTTP (HyperText Transfer Protocol,超文本传输协议)。WWW (World Wide Web)的三种技术:HTML、HTTP、URL。RFC(Request for Comments,征求意见书)&#…

HTTP DDOS攻击有什么类型和特点?

一、攻击类型 1、 HTTP floods 该攻击类型分为HTTP GET request floods和HTTP POST request floods两种形式,第一种攻击者通过构造HTTP GET请求报文,向目标服务器发送针对特定资源的大量请求;一条HTTP请求的成本很低,但是目标服…

力扣(LeetCode)124. 二叉树中的最大路径和(C++)

深度优先遍历 自底向上的递归。 对于二叉树,我们令每个结点作为 LCALCALCA (最近公共祖先), 结点 uuu 作为 LCALCALCA , 经过它的最大路径 往左子树的最大路径 往右子树的最大路径 它自己的路径 。 有 ansmax(ans,vulrans max(ans,v_ul…

MobPush 厂商通道SDK集成指南

开发工具:Android Studio 集成方式:Gradle在线集成 安卓版本支持:minSdkVersion 19 集成准备 MobPush快速集成 在使用厂商通道之前,请确保您已申请MobTech开发者账号并已按照MobPush快速集成文档进行集成,本篇文档将…

POI实现Excel导入和导出(源码测试)

因为实际开发中很多需求都需要实现Excel批量导入和导出,所以今天就来写一个后端demo实现Excel的导入和导出。 需求: Excel的导入 1对文件路径为D:\Users\Mixi\IdeaProjects\javapoi-anli\product-test.xlsx 的Excel文件导入到数据库; Excel的…

SAP 采购订单免费标识自动勾选的判断依据

SAP采购订单的免费标识没有专门的字段存储,是根据发票收据和项目类别计算出来的 写程序的时候折磨判断呢? 1.EKPO-REPOS <> ‘X’ AND EKPO-PSTYP <> ‘2’ AND EKPO-PSTYP <> ‘7’ &#xff0c;则系统会自动勾选上这个免费项目 2.如果要求不是很精密&…

机器学习之MATLAB代码--LSTM-SVRNN(五)

机器学习之MATLAB代码--LSTM-SVRNN&#xff08;五&#xff09;代码数据结果代码 1、cdmnn.m文件 %% 组合模型 %% %% 数据导入 clc;clear;warning off; data xlsread(nndata.xlsx, sheet1, A2:G350); load LSTMoutput load SVMoutput %% nwholelength(data); %计算数据长度…

Vue笔记_transition组件(过渡样式)

目录transition组件作用过渡时机语法1语法2使用-animation侦动画使用-过渡动画总结transition组件 作用 transition组件的作用是 给 单个 元素/组件 添加过渡效果&#xff1b; transition-group组件的作用是给 多个 元素/组件 添加过渡效果&#xff1b; 过渡时机 vue只有在…

【pen200-lab】10.11.1.13

pen200-lab 学习笔记 【pen200-lab】10.11.1.13 &#x1f525;系列专栏&#xff1a;pen200-lab &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月30日&#x1f334; &#x1f36d;作…

turtlebot2利用turtlebot_exploration_3d进行自主建图

安装octomap_ros和rviz插件 sudo apt-get install ros-indigo-octomap*源码安装&#xff1a;turtlebot_exploration_3d(本机为Ubuntu16对应的ros版本为kinetic&#xff0c;但是无对应的版本&#xff0c;用的是ubuntu14的indigo&#xff0c;版本向前兼容&#xff0c;故可以运行&…

AXWWriter兼容的Word处理元素

AXWWriter兼容的Word处理元素 AXWWriter是一个与MS Word兼容的Word处理元素。该部件不需要设置任何其他库或软件。 AXWWriter使用DOCXReadWrite一起工作,DOCXReadWriter也包含在内。有关其他属性,请查看DOCXReadWrite。AXWWriter不难使用。如果您了解DOCXReadWrite,那么您已…

岩藻多糖-聚已内酯 Fucoidan-PCL 聚已内酯-PEG-岩藻多糖

岩藻多糖-聚已内酯 Fucoidan-PCL 聚已内酯-PEG-岩藻多糖 中文名称&#xff1a;岩藻多糖-聚已内酯 英文名称&#xff1a;Fucoidan-PCL 别称&#xff1a;PCL修饰岩藻多糖&#xff0c;PCL-岩藻多糖 聚己内酯&#xff08;Polycaprolactone&#xff0c;PCL&#xff0c;CAS号…

第4部分 RIP

动态路由协议包括距离向量路由协议和链路状态路由协议。RIP&#xff08;Routing Information Protocol&#xff0c;路由信息协议&#xff09;是使用最广泛的距离微向量路由协议。RIP 是为小型网络环境设计的&#xff0c;国为这类协议是路由学习及路由更新将产生较大的流量&…

一文看懂MySQL的行锁

MySQL的全局锁和表锁可以看这篇文章&#xff1a;MySQL的全局锁和表锁 进入正文 行锁 行锁是由各个存储引擎自己实现的&#xff0c;并不是所有的引擎都支持行锁。 MyISAM引擎就不支持行锁&#xff0c;同一时刻一张表只能有一个更新在执行。 现在说InnoDB的行锁&#xff0c;行…

[附源码]计算机毕业设计springboot家庭医生签约服务管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

你在终端启动的进程,最后都是什么下场?(上)

你在终端启动的进程&#xff0c;最后都是什么下场&#xff1f;&#xff08;上&#xff09; 前言 在本篇文章当中&#xff0c;主要给大家介绍我们在终端启动的进程都是怎么结束的&#xff0c;在我们登录终端和退出终端都发生了什么&#xff1f; 基本介绍 首先我们需要了解的…

从Android系统启动→app启动→activity启动和渲染的整个流程

引言 本文讲解从开机到app显示画面的流程&#xff0c;但不分析源码&#xff0c;如果想阅读源码请到参考文章中查阅。 本文把这段流程分为三部分&#xff1a; 从开机到显示应用列表从点击应用图标到Activity创建成功从Activity创建成功到显示画面 从开机到显示应用列表 先看…

Java-CC

漏洞原理 TransformedMap这个类的decorate函数可以将一个普通的Map转换为一个TransformedMap&#xff0c;其第2、3参数分别对应当key改变和value改变时需要做的操作。所以此时如果修改其中的任意key或value&#xff0c;就会触发我们预先定义好的某些操作来对Map进行处理&#…