用户工具

站点工具


cc2640r2f:exchange_mtu

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
cc2640r2f:exchange_mtu [2017/08/31 23:15]
wuyl
cc2640r2f:exchange_mtu [2021/06/22 23:14] (当前版本)
行 2: 行 2:
 # BLE 一次能传多少数据 # # BLE 一次能传多少数据 #
  
-BLE 到底一包能够收发多少数据是很多开发者都会关心的。我们知道 BLE 5.0 物理层设计 2Mpbs 的码元率,实际数据传输速率远远到不了这个级别。主要原因是无法直接单次发送 1M 或者 1K 数据,必须按照我们知道的 `ATT_MTU` 作为最大值进行拆包发送,不断拆包的过程中导致整体蓝牙有效数据吞吐量下降。本章节,我们实用性发研究如何究竟蓝牙一包能够发送多少数据。+BLE 到底一包能够收发多少数据是很多开发者都会关心的。我们知道 BLE 5.0 物理层设计 2Mpbs 的码元率,实际数据传输速率远远到不了这个级别。主要原因是无法直接单次发送 1M 或者 1K 数据,必须按照我们知道的 `ATT_MTU` 作为最大值进行拆包发送,不断拆包的过程中导致整体蓝牙有效数据吞吐量下降。本章节,我们实用性发研究如何究竟蓝牙一包能够发送多少数据。
  
 以下是 GAPP Client 进行特征值写请求的完整抓包,`AttValue` 表示写入的值,该值的最大长度到底是多少呢?本文将详细研究并且验证。 以下是 GAPP Client 进行特征值写请求的完整抓包,`AttValue` 表示写入的值,该值的最大长度到底是多少呢?本文将详细研究并且验证。
行 10: 行 10:
 本文的正确打开姿势,我们希望你已经仔细阅读并理解协议栈的 L2CAP,和 BLE4.2/5.0 全新支持的 LE 数据扩展功能。 本文的正确打开姿势,我们希望你已经仔细阅读并理解协议栈的 L2CAP,和 BLE4.2/5.0 全新支持的 LE 数据扩展功能。
  
-* <a href="..\..\..\ble_stack_app\stack\l2cap\l2cap.html"> Logical Link Control and Adaptation Layer Protocol (L2CAP) </a> +* <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:stack:l2cap:l2cap"> Logical Link Control and Adaptation Layer Protocol (L2CAP) </a> 
-* <a href="..\..\..\ble_stack_app\stack\le_data_length_extension\le_data_length_extension.html"> LE Data Length Extension </a>+* <a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:stack:le_data_length_extension:le_data_length_extension"> LE Data Length Extension </a>
  
 ## 术语 ## ## 术语 ##
行 62: 行 62:
  
 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/exchange_mtu/images/GATTserverandclient.png) ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/app_examples/exchange_mtu/images/GATTserverandclient.png)
-对于 simpler_peripheral 工程我们的<a href="..\..\..\leconiot\cc13x0_cc26x0_evaluation_board\cc13x0_cc26x0_evaluation_board.html">开发板</a>作为 GATT Server 决定 `ATT_MTU` 的最大值。+对于 simpler_peripheral 工程我们的<a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:leconiot:cc13x0_cc26x0_evaluation_board:cc13x0_cc26x0_evaluation_board">开发板</a>作为 GATT Server 决定 `ATT_MTU` 的最大值。
  
 simpler_peripheral 默认的 `ATT_MTU` 为 23 ,即实际写属性值最大长度为 20 。GATT 服务端 `ATT_MTU` 由以上宏定义,GATT 客户端可以通过`GATT_ExchangeMTU()` 命令配置。 GATT 服务端根据当前的配置的 ATT_MTU 决定是否生效。例如我们这里的 `simple_peripheral` 作为 GATT 服务端,以更改宏 `L2CAP_MTU_SIZE` 为 150 ,` GATT_ExchangeMTU()` 需要配置到 200,返回 150 表示生效。 simpler_peripheral 默认的 `ATT_MTU` 为 23 ,即实际写属性值最大长度为 20 。GATT 服务端 `ATT_MTU` 由以上宏定义,GATT 客户端可以通过`GATT_ExchangeMTU()` 命令配置。 GATT 服务端根据当前的配置的 ATT_MTU 决定是否生效。例如我们这里的 `simple_peripheral` 作为 GATT 服务端,以更改宏 `L2CAP_MTU_SIZE` 为 150 ,` GATT_ExchangeMTU()` 需要配置到 200,返回 150 表示生效。
行 69: 行 69:
  
  
-参考《<a href="..\..\..\get_started\first_example\first_example.html">运行第一个例程</a>》,直接更改最大 ATT_MTU 到 251 ,通过《 <a href="tool_kits\btool\btool.html">BTool</a>》配置客户端 ATT_MTU 到 251 ,并且更改 simple_peripheral characteristic 5 数组为 251 ,属性为可读可写。+参考《<a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:get_started:first_example:first_example">运行第一个例程</a>》,直接更改最大 ATT_MTU 到 251 ,通过《 <a href="tool_kits\btool\btool.html">BTool</a>》配置客户端 ATT_MTU 到 251 ,并且更改 simple_peripheral characteristic 5 数组为 251 ,属性为可读可写。
  
 ### 更改工程 ### ### 更改工程 ###
行 93: 行 93:
  
 ``` ```
-由于增加了特征值 5 的大小为 240,相应参考特征的栈空间也得增加,它对应着任务栈,否则程序可能会跑飞。+由于增加了特征值 5 的大小为 248,相应参考特征的栈空间也得增加,它对应着任务栈,否则程序可能会跑飞。
 ``` ```
 //examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral\src\app\simple_peripheral.c SBP_TASK_STACK_SIZE Line 180 //examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral\src\app\simple_peripheral.c SBP_TASK_STACK_SIZE Line 180
行 252: 行 252:
  
 ## LE Data Extension ## ## LE Data Extension ##
-<a href="..\..\..\ble_stack_app\stack\le_data_length_extension\le_data_length_extension.html"> LE Data Length Extension </a> 文章详细讲解过,BLE4.2/5.0 已经硬件支持 257 的 LL Data Payload Size ,为了兼容 BLE4.1/4.0 而默认保留该功能。接下来详细讲解如何使能该功能,实现真正意义的最大 `ATT_MTU` 发送,同时体验 BLE4.2/5.0 全新速率。+<a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:stack:le_data_length_extension:le_data_length_extension"> LE Data Length Extension </a> 文章详细讲解过,BLE4.2/5.0 已经硬件支持 257 的 LL Data Payload Size ,为了兼容 BLE4.1/4.0 而默认保留该功能。接下来详细讲解如何使能该功能,实现真正意义的最大 `ATT_MTU` 发送,同时体验 BLE4.2/5.0 全新速率。
  
 BLE4.2/5.0 设备默认支持 TX_PDU 大小,为了兼容 BLE4.1/4.0 设备,默认设置为 27 字节/328us;同时又为了兼容 BLE4.2/5.0RX PDU 默认设置为 251字节/2152us。默认使能 251/2120us 只需要主从收发的任意一方设置自己的 TX_PDU 为 251 字节/2120us ,那么收发双发就会直接发起协商功能。 BLE4.2/5.0 设备默认支持 TX_PDU 大小,为了兼容 BLE4.1/4.0 设备,默认设置为 27 字节/328us;同时又为了兼容 BLE4.2/5.0RX PDU 默认设置为 251字节/2152us。默认使能 251/2120us 只需要主从收发的任意一方设置自己的 TX_PDU 为 251 字节/2120us ,那么收发双发就会直接发起协商功能。
cc2640r2f/exchange_mtu.1504192557.txt.gz · 最后更改: 2021/06/22 23:14 (外部编辑)