0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全志R128 BLE最高吞吐量测试正确配置测试方法

冬至子 来源:丨budboool 作者:丨budboool 2023-10-27 17:17 次阅读

在R128使用前我们需要了解BLE的最高吞吐量,以方便评估相关功能的开发。

首先我们了解一下哪些因素会影响蓝牙的吞吐量:

1、蓝牙版本与PHY: 蓝牙设备的版本和物理层(PHY)对于吞吐量有很大影响。例如,R128设备支持蓝牙5.0,而蓝牙5.0版本后支持2M PHY,使用2M PHY会获得更高的数据吞吐量。

2、DLE(数据长度扩展): 在蓝牙4.2版本之后,BLE(蓝牙低功耗)开始支持DLE(也称为长包),使用长包可以使单个BLE数据包传输的payload达到251字节。通常,此功能是默认启用的,这有助于提高数据吞吐量。

3、MTU与数据发送量: 协议规定LL data PDU的Payload最大为251字节,即一次可以传输251字节的L2CAP数据。在L2CAP Data之上还有4个字节的头部,因此L2CAP的Payload为251-4=247字节,即一次可以传输247字节的ATT data。而在ATT Data之上还有3个字节的头部,所以ATT的payload为247-3=244字节,即一次可以传输244字节的应用数据。MTU(最大传输单元)通常指的是L2CAP的Payload,即ATT data,其大小为247字节。在发送数据时,应尽量减少拆包和组包的过程,以便提高吞吐量。这意味着应用在发送数据时,应尽量每次发送不超过244字节的数据。

downloadFileByUrl.png

4、连接间隔: BLE技术的特点是低功耗,这主要是因为BLE的两个设备并不是传统意义上的长连接,而是间隔一段时间进行周期性交互。这个周期性的间隔称为连接间隔。连接间隔越小,单位时间内可以发送的数据包就越多。因此,为了提高吞吐量,应尽量减小连接间隔。

downloadFile1ByUrl.png

5、每个连接事件的最大数据包数: 在蓝牙连接过程中,每个连接事件内可以发送的数据包数量通常为7个。如果在一个连接事件内发送过多的数据包,可能会导致吞吐量下降。因此,应尽量保证在一个连接事件内发送不超过7个数据包。

6、写操作: 在蓝牙通信中,write和write_without_response、indicate和notify是常见的操作方式。write操作需要对方确认,效率相对较低;而write_without_response和notify操作则不需要对方确认,效率较高。因此,为了提高吞吐量,应优先使用write_without_response和notify操作。

针对以上因素,我们可以制定出一套可以满足最大吞吐需求的正确配置

1、使用2M PHY
(1)若我方作为GATTC,应该由我方发起PHY UPDATE的动作。
在较新的btmanager中已经适配(在SDK V0.9版本后才有),老版本上未有。若客户不使用btmanager,需要自行检查适配。
(2)若我放作为GATTS,一般支持蓝牙的5.0的手机设备默认有PHY UPDATE的动作。

2、更新LL data length
虽然默认支持长包功能,但是为了兼容4.0和4.1版本,蓝牙controller默认还是使用27字节的包发送。

需要在连接的时候主动更新LL data length为251字节。在较新的btmanager中已经适配(在SDK V0.9版本后才有)。若客户不使用btmanager,需要自行检查适配。

3、MTU与数据发送量
L2CAP MTU 设置为247:

-CONFIG_BT_L2CAP_RX_MTU=65
+CONFIG_BT_L2CAP_RX_MTU=247
-CONFIG_BT_L2CAP_TX_MTU=65
+CONFIG_BT_L2CAP_TX_MTU=247

同时,应用或测试demo在发送数据时,应该每次最多发送244字节。

4、连接间隔
连接间隔范围是7.5ms ~ 4s。
但是并不是越小就越好

  • 连接间隔越小,抗干扰能力就越差。
  • 若蓝牙controller在一个连接事件中能发送7个数据包,连接间隔应该设置大于12.5ms,因为这7个包已经占用了大概9.5ms了。
  • 建议连接间隔在12.5ms、13.75ms、15ms中尝试。

(1)若我方作为GATTC,可以在btmg_le_connect中指定为连接间隔即可。
(2)若我放作为GATTS,对方使用的连接间隔太大,我方可以通过协议栈主动更新,相关配置

-# CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS is not set
+CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=y
+CONFIG_BT_PERIPHERAL_PREF_MIN_INT=11
+CONFIG_BT_PERIPHERAL_PREF_MAX_INT=11
+CONFIG_BT_PERIPHERAL_PREF_SLAVE_LATENCY=0
+CONFIG_BT_PERIPHERAL_PREF_TIMEOUT=42

5、增大协议栈TX和RX buff
增大协议栈TX buff可以让数据能快速送到蓝牙controller。

-CONFIG_BT_CONN_TX_MAX=3
+CONFIG_BT_CONN_TX_MAX=8

-CONFIG_BT_L2CAP_TX_BUF_COUNT=3
+CONFIG_BT_L2CAP_TX_BUF_COUNT=8

增大RX buff 可以提高接收效率:
设置为255是因为包含HCI的包头4个字节。

-CONFIG_BT_RX_BUF_LEN=88
+CONFIG_BT_RX_BUF_LEN=255

-CONFIG_BT_DISCARDABLE_BUF_SIZE=88
+CONFIG_BT_DISCARDABLE_BUF_SIZE=255

6、使用write_without_response和notify发送数据

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PDU
    PDU
    +关注

    关注

    0

    文章

    94

    浏览量

    16978
  • PHY
    PHY
    +关注

    关注

    2

    文章

    301

    浏览量

    51733
  • 协议栈
    +关注

    关注

    2

    文章

    141

    浏览量

    33629
  • HCI
    HCI
    +关注

    关注

    0

    文章

    29

    浏览量

    12949
  • BLE技术
    +关注

    关注

    0

    文章

    28

    浏览量

    5850
  • R128
    +关注

    关注

    0

    文章

    41

    浏览量

    105
收藏 人收藏

    评论

    相关推荐

    R128内存泄漏调试案例分享

    硬件:R128 软件:FreeRTOS + rtplayer\_test(Cedarx)+ AudioSystem
    的头像 发表于 11-20 17:27 1019次阅读
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>R128</b>内存泄漏调试案例分享

    R128硬件设计指南①

    信号,使 SOC复位,软件系统重新启动。 R128硬件系统组成如下表: [td]系统说明 CPU小系统时钟,复位,中断,系统配置 存储系统PSRAM,SPI NAND/SPI NOR/EMMC/SD
    发表于 01-04 09:23

    R128 Devkit开发板原理图模块介绍及使用说明

    :CH341SER.EXE 购买链接 百问科技淘宝店 - R128 DevKit 原理图模块介绍R128 模组R128 模组使用 SMT
    发表于 01-17 09:45

    网卡吞吐量测试解决方案

    随着互联网的迅速发展,计算机日益成为人们生活中不可或缺的部分。伴随着网络业务的丰富,用户对计算机网卡的要求也越来也高。如何对计算机网卡吞吐量进行合理的测试,已越来越成为众多计算机网卡生产厂家日益关注
    发表于 12-23 11:07

    无线测试吞吐量测试

    无线网络测试之无线吞吐量测试方法、步骤
    发表于 06-25 08:40

    iperf固定吞吐量测试如何设置

    我有两个CYW43907演示,并下载控制台项目。我想使用IpFF命令来测试固定的UDP吞吐量。示例:IPEF-C 192.1680.1-P 5001 -I 2 -T 30 -U-B 60M,但客户端
    发表于 11-06 14:09

    联咏行车记录仪方案配RTL8189FTV的WIFI吞吐量测试方法

    `联咏行车记录仪方案配RTL8189FTV的WIFI吞吐量测试方法1.机器测试的前提条件:机台设备连上串口,在串口打印内先输入”ki” 命令啟動WIFI,再输入 “modeplayba
    发表于 08-28 13:46

    提高BLE吞吐量的可行办法

    提高BLE吞吐量的可行办法如何实现更快的BLE吞吐量
    发表于 01-18 06:26

    如何利用NI LabVIEW技术提高测试系统的吞吐量

    怎么可以创建出高性能的测试系统?如何利用NI LabVIEW技术提高测试系统的吞吐量?如何利用NI LabVIEW技术实现并行化处理和并行化测试
    发表于 04-15 07:00

    R128 BLE最高吞吐量测试正确配置测试

    R128使用前我们需要了解BLE最高吞吐量,以方便评估相关功能的开发。 首先我们了解一下哪些因素会影响蓝牙的吞吐量: 1、蓝牙版本与PH
    发表于 10-16 15:22

    R128 BLE最高吞吐量测试正确配置测试

    R128使用前我们需要了解BLE最高吞吐量,以方便评估相关功能的开发。 首先我们了解一下哪些因素会影响蓝牙的吞吐量: 1、蓝牙版本与PH
    发表于 10-26 16:46

    iperf吞吐量测试流程

    iperf吞吐量测试指南
    发表于 04-03 15:40 2次下载

    兆易创新GD32W51x吞吐量及场景功耗测试指南

    兆易创新GD32W51x吞吐量及场景功耗测试指南GD32W51x吞吐量及场景功耗测试指南
    发表于 10-19 17:26 5次下载

    R128启用USB ADB以及无线ADB配置方法

    首先在FreeRTOS的环境下,选择r128\_c906\_pro
    的头像 发表于 11-01 11:43 1192次阅读
    <b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>R128</b>启用USB ADB以及无线ADB<b class='flag-5'>配置</b><b class='flag-5'>方法</b>

    影响ATE电源系统吞吐量的关键因素

    从串行设备测试改变为并行设备测试可以显著地增加测试系统吞吐量测试执行活动的大部分可能涉及使用DC电源设置条件和进行测量。
    发表于 11-29 12:36 418次阅读
    影响ATE电源系统<b class='flag-5'>吞吐量</b>的关键因素