BLE蓝牙发送速率、BLE底层蓝牙分包机制、BLE底层蓝牙重发机制、BLE中的MTU、BLE中蓝牙连接后数据通道选择

本文主要是介绍BLE蓝牙发送速率、BLE底层蓝牙分包机制、BLE底层蓝牙重发机制、BLE中的MTU、BLE中蓝牙连接后数据通道选择,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、BLE蓝牙发送速率

BLE的发送速率取决于多个因素,包括BLE的版本、连接参数和物理环境。

  1. BLE版本: BLE有多个版本,包括4.0、4.1、4.2和5.0。每个版本都引入了不同的特性和改进,其中一些可能影响传输速率。通常来说,较新的BLE版本支持更高的数据传输速率。

  2. 连接参数: BLE设备在连接时会协商连接参数,其中包括连接间隔、连接超时等。这些参数直接影响到数据传输速率。较短的连接间隔通常意味着更频繁的数据传输,从而提高了速率。

  3. 物理环境: 物理环境的影响也很大。例如,有可能存在无线信号干扰、距离远近、障碍物等因素,这些都可能影响BLE的性能和传输速率。

  4. 数据包长度: BLE设备在传输数据时会将数据分割成多个数据包。数据包的长度也会影响传输速率,因为较大的数据包可以在较短的时间内传输更多的数据。

举例:假设一包数据为256个字节,他理论多长时间可以传输过去?

其中主要考虑连接间隔(Connection Interval)和数据包长度(Packet Length)这两个关键参数。

在BLE中,连接间隔的取值范围通常在7.5毫秒到4秒之间,数据包长度可以在27字节到251字节之间选择。

假设连接间隔为20毫秒,数据包长度为256字节:

传输速率 = 数据包长度/连接间隔

传输速率 = 256 字节/0.02 秒 = 12800 字节/秒

理论上传输时间可以通过总数据量除以传输速率得到:

传输时间 = 总数据量/传输速率

传输时间=256 字节12800 字节/秒≈0.02 秒

 2、BLE底层蓝牙分包机制

BLE的底层蓝牙分包机制涉及到将数据包划分为不同的数据通道上的数据包。以下是 BLE底层蓝牙分包机制的一般步骤:

  1. 数据包准备: 待发送的数据被划分为适当大小的数据包,每个数据包包含特定数量的字节。BLE规范定义了数据包的最小和最大长度,通常在27字节到251字节之间。

  2. 数据包传输: 在连接事件的数据通道上,BLE设备可以传输数据包。数据包可以由两个主要类型的子包组成:首先是ADV(Advertise)和后续是DATA(Data)。ADV子包主要用于广播,而DATA子包用于数据传输。

  3. 数据包顺序: 在一个连接事件中,多个数据包按照特定的顺序传输。数据包的顺序在连接事件开始时由发送方确定,并且在连接事件中保持不变。

  4. ACK确认: 接收方会发送ACK(Acknowledgment)子包来确认已成功接收数据包。如果发送方收到了ACK,则知道数据包已成功传输,否则可能会进行重传。

  5. 数据包丢失和重传: 如果某个数据包在传输过程中丢失,发送方可以选择在后续的连接事件中重新传输该数据包。

 3、BLE底层蓝牙重发机制

  1. ACK确认: BLE使用ACK(Acknowledgment)机制来确认接收到的数据包。在发送方成功发送一个数据包后,接收方会返回一个ACK信号,表示数据包已经成功接收。如果发送方在一定时间内没有收到ACK,它会认为数据包丢失,然后尝试重新发送。

  2. 自动重传: 如果发送方在规定的时间内没有收到ACK确认,它将尝试自动重传相同的数据包。这样的机制确保了即使某个数据包在传输过程中丢失,发送方仍有机会通过重传来恢复丢失的数据。

  3. 连接事件和数据通道: BLE通信是基于连接事件和数据通道的。在每个连接事件内,数据传输会发生在数据通道上。如果某个数据包在一个连接事件中丢失,发送方可以选择在后续的连接事件中重新传输该数据包。

以下是一些与重发机制相关的连接参数:

  1. Connection Interval(连接间隔): 连接间隔是两次连接事件之间的时间间隔。较短的连接间隔意味着数据包可以更频繁地传输,但也可能增加能耗。如果连接间隔较短,数据包传输的频率可能较高,从而提高了数据传输的可靠性,因为在一个连接事件内可以更快地检测和处理丢失的数据包。

  2. Slave Latency(从机延迟): 从机延迟表示从机可以跳过的连接事件的数量。在从机延迟期间,从机可以进入低功耗状态。较小的从机延迟可能减少了连接的能耗,但较大的从机延迟可能导致数据包在连接事件中的较长时间内未被处理,从而增加了丢包的风险。

  3. Connection Timeout(连接超时): 连接超时是指连接事件之间的最大时间。如果在这个时间内没有成功传输数据,连接将被视为失败。较短的连接超时可以更快地检测连接问题,但同时可能会增加丢包的可能性。

4、BLE中的MTU

定义了在一个数据通道上一次能够传输的最大数据包大小。MTU的设置对于BLE通信的效率和性能具有影响。

  1. 协商过程: MTU的值是在连接建立时由BLE设备之间进行协商确定的。连接过程中,设备可以通过协商来确定支持的MTU大小。

  2. MTU大小: MTU的大小表示一个BLE设备能够在一个连接事件内发送或接收的最大字节数。较大的MTU通常可以提高数据传输的效率,因为更多的数据可以在一个数据包内传输。

  3. ATT协议: MTU是与ATT(Attribute Protocol)层密切相关的。ATT层用于在BLE设备之间传输数据。GATT(Generic Attribute Profile)是建立在ATT之上的,用于组织和描述BLE设备之间交换的数据。

  4. MTU Exchange Procedure(MTU交换过程): MTU的协商是通过MTU交换过程来实现的。在这个过程中,设备之间会交换它们支持的MTU大小,然后选择一个较小的值作为连接期间的MTU。

  5. 默认值: 如果没有进行MTU的显式协商,那么BLE设备可能会使用一个默认的MTU值。这个默认值通常是23字节,但具体取决于设备和实现。

  6. 影响性能: MTU的大小会直接影响到BLE设备之间的数据传输性能。在一些应用中,可以通过使用较大的MTU值来提高数据传输的效率,减少通信的开销。

5、 BLE中蓝牙连接后数据通道选择

  1. 通信协商: BLE中的数据通道选择是通过连接参数协商来确定的。在连接建立时,主机和从机会协商连接参数,其中包括通信频率(Channel Map)。通信频率是一个40位的二进制值,每一位对应一个数据通道,1表示使用,0表示不使用。通过这个协商过程,BLE设备会在连接建立后确定使用哪些数据通道进行通信。

  2. 通道选择算法: 通道选择算法用于确定哪些数据通道应该被使用。BLE设备通常采用哈希函数或伪随机算法来生成通信频率。这样可以确保设备之间在连接建立时选择相同的通信频率,从而在相同的数据通道上进行通信。

  3. 数据通道映射更新: 在连接的过程中,通信频率可能会发生变化。BLE设备可以通过L2CAP层(Logical Link Control and Adaptation Protocol)发送Channel Map Update请求来请求通信频率的更新。这样可以在运行时适应通信环境的变化。

  4. 信道质量: 通信频率的选择还可能受到当前通信环境的信道质量的影响。设备可以通过信道质量指示(Channel Quality Indicator,CQI)来了解信道的质量,并相应地选择合适的数据通道。

协商通信频率的过程通常包括以下步骤:

  1. 连接请求和响应: 主机向从机发送连接请求,从机响应连接请求。在这个过程中,双方可以交换一些基本的连接参数,包括通信频率。

  2. 通信频率的协商: 通信频率是通过连接参数协商来确定的。通常,设备会采用一种算法,比如哈希函数或伪随机算法,生成通信频率。协商的目的是确保连接时设备之间选择相同的通信频率。

  3. 连接参数更新: 在连接过程中,设备还可以通过L2CAP层(Logical Link Control and Adaptation Protocol)发送Channel Map Update请求,请求更新通信频率。这使得设备可以在连接的运行时动态地适应通信环境的变化。

这篇关于BLE蓝牙发送速率、BLE底层蓝牙分包机制、BLE底层蓝牙重发机制、BLE中的MTU、BLE中蓝牙连接后数据通道选择的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635071

相关文章

Java的volatile和sychronized底层实现原理解析

《Java的volatile和sychronized底层实现原理解析》文章详细介绍了Java中的synchronized和volatile关键字的底层实现原理,包括字节码层面、JVM层面的实现细节,以... 目录1. 概览2. Synchronized2.1 字节码层面2.2 JVM层面2.2.1 ente

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

MySQL中Next-Key Lock底层原理实现

《MySQL中Next-KeyLock底层原理实现》Next-KeyLock是MySQLInnoDB存储引擎中的一种锁机制,结合记录锁和间隙锁,用于高效并发控制并避免幻读,本文主要介绍了MySQL中... 目录一、Next-Key Lock 的定义与作用二、底层原理三、源代码解析四、总结Next-Key L

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Nginx之upstream被动式重试机制的实现

《Nginx之upstream被动式重试机制的实现》本文主要介绍了Nginx之upstream被动式重试机制的实现,可以通过proxy_next_upstream来自定义配置,具有一定的参考价值,感兴... 目录默认错误选择定义错误指令配置proxy_next_upstreamproxy_next_upst

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②