用户工具

站点工具


cc2640r2f:le_data_length_extension

差别

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

到此差别页面的链接

后一修订版
前一修订版
后一修订版 两侧同时换到之后的修订记录
cc2640r2f:le_data_length_extension [2017/08/31 16:30]
127.0.0.1 外部编辑
cc2640r2f:le_data_length_extension [2017/09/12 21:22]
wuyl
行 1: 行 1:
 <markdown> <markdown>
 +
 # 概要 # # 概要 #
  
-数据长度扩展(LE Data Length Extension)功能允许LE控制器在连接状态下发送具有高达251字节的PDU在连接期间的任何时刻,主从设备可以协商该PDU大小。+数据长度扩展( LE Data Length Extension )功能允许 LE 控制器在连接状态下发送高达 251 字节的 PDU在连接期间的任何时刻,主从设备可以协商该 PDU 大小。
  
-对比BLE4.0/4.1的控制器数据通道最大有效载荷为27字节使能数据扩展功能后的BLE4.2/BLE5.0能够达到251,数据速率提高了大约2.5倍。+对比 BLE4.0/4.1 的控制器数据通道最大有效载荷为 27 字节使能数据扩展功能后的 BLE4.2/BLE5.0 能够达到 251 ,数据速率提高了大约 2.5 倍。
  
 ## 数据长度更新过程 ## ## 数据长度更新过程 ##
  
 一旦建立连接,控制器将以两种可能的方式之一进行操作: 一旦建立连接,控制器将以两种可能的方式之一进行操作:
->**提示**本文所有的提及默认PDU/传输时间,均是指兼容BLE4.0/4.1的27Byte/328us,数据长度扩展(LE Data Length Extension)只被BLE4.2/5.0 支持。 
  
-- 如果在连接之前,PDU大小和传输时间都被设置为默认值(即TX和RX都为27B,328us则CC2640R2F将不会发起数据长度交换命令即`LL_LENGTH_REQ`不发送)。+ > **提示:**本文所有的提及默认 PDU/传输时间,均是指兼容 BLE4.0/4.1 的 27Byte/328us ,数据长度扩展( LE Data Length Extension 只被 BLE4.2/5.0 支持
  
-    如果对等连接的主从设备发送`LL_LENGTH_REQ`对等备同样以默认大小`LL_LENGTH_RSP`回应.+如果连接之前PDU 大小和传输间都被置为默认值(即 TX 和 RX 都为 27B,328us),则 CC2640R2F 将不会发起数据长度交换命令(即 `LL_LENGTH_REQ不发送)。
  
-如果连接之前,PDU大小和传输时间收发双方或者有一方不是默认值,则设备的LE控制器将使用`LL_LENGTH_REQ``LL_LENGTH_RSP`控制PDU协商一个PDU的较大的有效负载大小+    如果对等连接的主从设备发送 `LL_LENGTH_REQ` ,此时对等设备同样以默认大小 `LL_LENGTH_RSP` 回应
  
-    数据长度更新可由HostController自主执行。主机或从机可以启动该过程+- 如果在连接之前,PDU 的大小和传输时间收双方者有一方不是默认值,则设备的 LE 控制器将使用 `LL_LENGTH_REQ` 和 `LL_LENGTH_RSP` 控制 PDU 协商,选择一个较大的 PDU 有效负载
  
-数据长度更新过程完成后两个控制器都会根据两个参数选择新的数据长度:PDU大小和传输时间。同时被主从设备支持的最大长度将会被选择; 考虑到时间来支持不同的数据速率这些参数定义如下:+    数据长度更新可由 Host 发起或 Controller 自主执行,主机或机可以启动该过程
  
-* **PDU大小** +数据长度更新过程完成后,两个控制器都会根据两个参数选择新的数据长度:PDU 大小和传输时间,同时被主从设备支持的最大长度将会被选择。考虑到时间来支持不同的数据速率。这些参数定义如下: 
-Controller支持的最大应用数据有效载荷大小。该大小不包括数据包的其他固定开销,例如访问地址或前导码。+ 
 +* ** PDU 大小** 
 +Controller 支持的最大应用数据有效载荷大小。该大小不包括数据包的其他固定开销,例如访问地址或前导码。
 * **时间** * **时间**
-设备以PHY速率发送或接收PDU的最大微秒数。该参数使用微秒单位(us)。+设备以 PHY 速率发送或接收 PDU 的最大微秒数。该参数使用微秒单位(us)。 
 + 
 + > **注意**:有关数据长度更新过程的更多信息,请参考蓝牙核心规范版本 5.0 的数据长度更新过程部分([Vol 6],B 部分,第 5.1.9 节)。
  
-> **注意**:有关数据长度更新过程的 更多信息,请参考蓝牙核心规范版本5.0数据长度更新过程部分([Vol 6],B部分第5.1.9节)+下表可以参考支持最大时间和大小CC2640R2F 支持这些最大值
  
-可以参考支持的最大时间和大小。CC2640R2F支持这些最大值。+1. 数据长度扩展支持的最大时间和大小
  
 ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/stack/le_data_length_extension/Images/PDUtimeandsize.png) ![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/stack/le_data_length_extension/Images/PDUtimeandsize.png)
行 34: 行 38:
 ## 初始值 ## ## 初始值 ##
  
-BLE4.2/5.0 工程为了兼容BLE4.0/BLE4.1 所以默认的TX PDU设置为 27字节,同时同时使用328作为最大传输时间。+BLE4.2/5.0 工程为了兼容B LE4.0/BLE4.1默认的 TX PDU 设置为 27 字节,同时使用 328 作为最大传输时间。
  
-在RX PDU上面,默认使能LE Data Packet功能,也就是默认支持接收 251,以及RX PDU最大传传输时间为2120us。+在 RX PDU 上面,默认使能 LE Data Packet 功能,也就是默认支持接收 251,以及 RX PDU 最大传传输时间为 2120us。
  
-为了最大吞吐量,诸如BLE主机的高层协议也应使用较大的PDU大小(<a href="..\..\..\cc2640r2f\ble_stack_app\stack\l2cap\l2cap.html">请参见最大传输单元(MTU)</a>)。 下图显示出了协议栈中的各种PDU大小。+为了最大吞吐量,诸如 BLE 主机的高层协议也应使用较大的 PDU 大小(<a href="http://docs.leconiot.com/doku.php?id=cc2640r2f:ble_stack_app:stack:l2cap:l2cap">请参见最大传输单元(MTU)</a>)。 下图 显示出了协议栈中的各种 PDU 大小。
  
->**注意**:正如**数据长度更新过程**章节介绍过,+![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/stack/le_data_length_extension/Images/stackPdu.jpg)
  
-应用工程可以通过以下两种方式更新数据长度: +1. 协议栈中各种 PDU 大小
-    1. 直接初始化到最大值,每次建立连接后Controller会自动申请一个更大PDU; +
-    2. Controller 可以设置默认的PDU大小和传时间(27byte/328us ),然后再建立连接时动态协商该值;+
  
-![](http://www.leconiot.com/md_res/cc2640r2f/ble_stack_app/stack/le_data_length_extension/Images/stackPdu.jpg)+ > **注意**:正如**数据长度更新过程**章节介绍过,
  
-## 数据长度扩展HCI命令事件 ##+应用工程可以通过以下两种方式更新数据长度: 
 +    1. 直接初始化到最大值,每次建立连接后 Controller 会自动申请一个更大 PDU ; 
 +    2. Controller 可以设置默认的 PDU 大小时间( 27byte/328us ),然后再建立连接时动态协商该值;
  
-以下HCI命令可用于与数据长度扩展功能相关的控制器交互:+## 数据长度扩展 HCI 命令和事件 ##
  
-- LE读取建议的默认数据长度命令(`HCI_LE_ReadSuggestedDefaultDataLenCmd()`) +以下 HCI 命令可用于与数据长度扩展功能相关的控制器交互:
-- LE写入建议的默认数据长度命令(`HCI_LE_WriteSuggestedDefaultDataLenCmd()`) +
-- LE读取最大数据长度命令(`HCI_LE_ReadMaxDataLenCmd()`) +
-- LE设置数据长度命令(`HCI_LE_SetDataLenCmd()`)+
  
-以上命令可能会产生LE数据长度更改事件。+- LE 读取建议的默认数据长度命令( `HCI_LE_ReadSuggestedDefaultDataLenCmd()` ) 
 +LE 写入建议的默认数据长度命令( `HCI_LE_WriteSuggestedDefaultDataLenCmd()` ) 
 +- LE 读取最大数据长度命令( `HCI_LE_ReadMaxDataLenCmd()` ) 
 +- LE 设置数据长度命令( `HCI_LE_SetDataLenCmd()` )
  
-LE Data Length Change Event+以上命令可能会产生 LE 数据长度更改事件。
  
-除了Bluetooth SIG定义的HCI命令之外,以下TI Vendor Specific命令还可以与数据长度扩展功能相关的控制器进行交互:+* LE 数据长度更改事件( Data Length Change Event ) 
 + 
 +除了 Bluetooth SIG 定义的 HCI 命令之外,以下 TI Vendor Specific 命令还可以与数据长度扩展功能相关的控制器进行交互:
  
 * HCI_EXT_SetMaxDataLenCmd * HCI_EXT_SetMaxDataLenCmd
行 67: 行 73:
 ### 在连接后设置包长度 ### ### 在连接后设置包长度 ###
  
-**初始值**章节我们已经讲解过,为了兼容BLE4.0/4.1设备,默认传输的TX PDU设置为27字节/328us。然后Controller会在设备连接之初,共同协商一个的数值。禁止该功能可以将以下代码段放入应用工程的初始化话阶段(例如simple_peripheral_init)+**初始值**章节已经讲解过,为了兼容 BLE4.0/4.1 设备,默认传输的 TX PDU 设置为 27字节/328usController 会在设备连接之初,共同协商一个的数值。如果要禁止该功能可以将以下代码段放入应用工程的初始化话阶段(例如 simple_peripheral_init ) 
 ````C ````C
     #define APP_TX_PDU_SIZE 27      #define APP_TX_PDU_SIZE 27 
行 74: 行 81:
     #define APP_RX_TIME 328     #define APP_RX_TIME 328
          
-    //这个API记录在hci.h +    //这个 API 记录在 hci.h 
     HCI_EXT_SetMaxDataLenCmd (APP_TX_PDU_SIZE  ,  APP_TX_TIME ,     HCI_EXT_SetMaxDataLenCmd (APP_TX_PDU_SIZE  ,  APP_TX_TIME ,
        APP_RX_PDU_SIZE , APP_RX_TIME )中。        APP_RX_PDU_SIZE , APP_RX_TIME )中。
 ```` ````
-一旦建立了连接,Controller对等的主从设备协商数据包大小。如果两个设备都设置为使用数据长度扩展,可以直接观察到吞吐量提高。+ 
 +一旦建立了连接,Controller 对等的主从设备协商数据包大小。如果两个设备都设置为使用数据长度扩展,可以直接观察到吞吐量提高。
  
 如果需要重新使能连接建立之初的自动协商功能,只需使用上述相同的命令调整值即可。使用代码段搜所示。 如果需要重新使能连接建立之初的自动协商功能,只需使用上述相同的命令调整值即可。使用代码段搜所示。
  
-否则控制器将拒绝此调用。除了TI Vendor Specific命令外,还可以使用蓝牙SIG HCI命令,如下所示+否则控制器将拒绝此调用。除了 TI Vendor Specific 命令外,还可以使用蓝牙 SIG HCI 命令,如下所示
  
 ````C ````C
行 88: 行 96:
     #define APP_SUGGESTED_TX_TIME 2120     #define APP_SUGGESTED_TX_TIME 2120
          
-    //这个API记录在hci.h 中+    //这个 API 记录在 hci.h 中
     HCI_LE_WriteSuggestedDefaultDataLenCmd (APP_SUGGESTED_PDU_SIZE      HCI_LE_WriteSuggestedDefaultDataLenCmd (APP_SUGGESTED_PDU_SIZE 
     APP_SUGGESTED_TX_TIME )     APP_SUGGESTED_TX_TIME )
行 96: 行 104:
 ## 在连接中设置包长度 ## ## 在连接中设置包长度 ##
  
-也可以使用以下API代码片段在连接中动态更改数据包长度。应用程序可以根据任何逻辑(如传感器数据或按钮按下)确定何时发生。+也可以使用以下 API 代码片段在连接中动态更改数据包长度。应用程序可以根据任何逻辑(如传感器数据或按钮按下)确定何时发生。
  
 ````C ````C
行 111: 行 119:
  
 ## 加入我们 ## ## 加入我们 ##
 +
 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http://shang.qq.com/wpa/qunwpa?idkey=d94f12d37c3b37892af4b757c6dc34bea140f3f3128a8d68e556a3d728148e85)获取更多支持,共同研究CC2640R2F&BLE5.0。 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http://shang.qq.com/wpa/qunwpa?idkey=d94f12d37c3b37892af4b757c6dc34bea140f3f3128a8d68e556a3d728148e85)获取更多支持,共同研究CC2640R2F&BLE5.0。
 <div> <div>
行 120: 行 129:
  
 </markdown> </markdown>
- 
cc2640r2f/le_data_length_extension.txt · 最后更改: 2021/06/22 23:14 (外部编辑)