BLE一次能传多少数据(ATT_MTU设置/LE Data扩展)


BLE 到底一包能够收发多少数据是很多开发者都会关心的。我们知道 BLE 5.0 物理层设计 2Mpbs 的码元率,实际数据传输速率远远到不了这个级别。主要原因是无法直接单次发送 1M 或者 1K 数据,必须按照我们知道的 ATT_MTU 作为最大值进行拆包发送,不断拆包的过程中导致整体蓝牙有效数据吞吐量下降。本章节,我们实用性出发研究如何究竟蓝牙一包能够发送多少数据。

以下是 GAPP Client 进行特征值写请求的完整抓包,AttValue 表示写入的值,该值的最大长度到底是多少呢?本文将详细研究并且验证。

...

LE Data Length Extension


数据长度扩展( LE Data Length Extension )功能允许 LE 控制器在连接状态下发送高达 251 字节的 PDU,在连接期间的任何时刻,主从设备可以协商该 PDU 大小。

对比 BLE4.0/4.1 的控制器数据通道最大有效载荷为 27 字节,使能数据扩展功能后的 BLE4.2/BLE5.0 能够达到 251 ,数据速率提高了大约 2.5 倍。

...

Logical Link Control and Adaptation Layer Protocol (L2CAP)


L2CAP 运行在 HCI 之上的 Host ,实现 Host 更高层(GAP、GATT、APP)和低层协议栈之间传输数据。

该层负责在 Host 和协议栈之间把交换的数据进行分割( segmentation )和重组( reassembly )以提供协议的多路处理能力。L2CAP 允许更高级别的协议和应用程序发送和接收高达 64KB(实际受限于蓝牙设备实际内存)的上层数据包(L2CAP 服务数据单元,SDU)。

...

Generic Attribute Profile (GATT)


GAP 层负责连接相关的功能,GATT 主要是负责在两个已经连接的设备之间进行交互数据。GAP 层把 BLE 设备区分为主机 Master(Central)和从机 Slave(Perpherial),在 GATT 层则区分为 Server 和 Client 。客户端读取和写入存储在服务端的特征值( Characteristics )。

Server
该设备包含由 GATT 客户端读取或写入的 characteristic。

...

ble5.0 蓝牙协议概述


从这部分开始详细介绍蓝牙协议栈功能、接口、协议栈工程关联、实现协议栈的文件和任务,该任务也作为协议栈应用的最高优先级任务。
TI 采用库文件的方式作为协议栈的一个主策略,尽管如此,还是需要开发者了解协议栈各个抽象的功能和相互作用。

蓝牙 5.0 核心规范包含 LE 和 BR/EDR 两种设备类型,其中 LE 主要是设计为低功耗、小数据终端产品。
BLE5.0 核心主要包含以下功能:

...

STM32CubeMx


STM32CubeMx 是一个STM32的图形化配置工具,可以作为STMCube 工具独立使用,也可以作为Eclipse的插件。
主要包含以下主要工功能:

我们需要知道指定芯片具体型号和封装,例如我们这里的STM32F103RDT6 LQFP64。

...

关于ble 5.0的几个常见问答


本文汇集了关于蓝牙 5.0 几个常见问题的答案,以帮助开发人员更好地了解蓝牙 5.0 的一些新特性。

对于蓝牙 4.1 、4.2 和 5.0 中添加的所有功能,它们在 BLE 连接期间都是可以协商选择的。这一点确保了蓝牙 5.0 设备能够可靠地连接到旧版蓝牙 4.x 设备,并与其进行交互。除了向后兼容性之外,蓝牙 4.1 和 4.2 中的可选功能适用于蓝牙 5.0 .因此,除了 2 Mbps 功能之外,蓝牙 5.0 设备还可支持蓝牙 4.2 的数据长度扩展功能。TI BLE5-Stack 结合了蓝牙 4.1 和 4.2 协议栈现有的所有功能,包括增强的隐私性和安全连接配对。

...