这里会显示出您选择的修订版和当前版本之间的差别。
cc2640r2f:le_2m_phy [2017/09/11 22:48] wuyl |
cc2640r2f:le_2m_phy [2021/06/22 23:14] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | < | ||
- | # 介绍 # | ||
- | |||
- | BLE5-Stack 支持以每秒符号速率为 1 兆( Ms/s )。由于一个符号对应于一个数据位,因此与堆栈的高位相关联,比特率为 1Mb/ | ||
- | |||
- | 默认情况下,BLE5-Stack 的所有项目都支持 LE 2M PHY, 需要在应用程序中调用 API 来使用该功能。 | ||
- | |||
- | **添加了以下 HCI 命令来支持此功能:** | ||
- | - LE 设置 PHY 命令( HCI_LE_SetPhyCmd()) | ||
- | - LE 设置默认PHY命令( HCI_LE_SetDefaultPhyCmd()) | ||
- | - LE 读 PHY 命令( HCI_LE_ReadPhyCmd()) | ||
- | |||
- | 当调用 HCI_LE_SetPhyCmd()时,Controller 启动 PHY 更新过程来更改 PHY。该过程会交换两个设备的 PHY 参数并根据 PHY 参数协商使用正确的 PHY 。根据对端设备的能力和优先级,PHY 更新过程可能不会导致有效 PHY 配置发生变化。 | ||
- | |||
- | ## LE 2M PHY ## | ||
- | |||
- | LE 2M PHY 功能使用与 LE 1M PHY 相同的发射功率,唯一的变化是 PHY 中数据的调制。由于在相同的输出功率下进行更高的数据调制,LE 2M PHY 的能耗会降低。下表列出了两个 PHY 之间的一些区别: | ||
- | |||
- | |参数|比较| | ||
- | |: | ||
- | |能量消耗|在对等设备中的两个端点之间的逻辑连接,其特征在于它们的信道标识符( CID )| | ||
- | |速率|服务数据单元:L2CAP 与上层交换的数据包,并使用本文档中规定的过程通过 L2CAP 通道透明传输| | ||
- | |接收灵敏度|协议数据单元:包含 L2CAP 协议信息字段,控制信息和/ | ||
- | |输出功率|L2CAP 层实体可以接受的八位字节中的有效负载数据的最大大小(即 MPS 对应于最大 PDU 有效载荷大小)。| | ||
- | |||
- | 使用 LE 2M PHY 的主要优点是高吞吐量应用程序以更高的速度传输数据。 | ||
- | |||
- | ## PHY 限制 ## | ||
- | |||
- | 以下是 BLE5-Stack 当前的 PHY 限制: | ||
- | |||
- | - BLE 控制器不支持在连接期间链路层发起的 PHY 自动更改,连接总是以 1M PHY 形成。应用程序或对端设备调用 HCI_LE_SetPhyCmd()来切换到不同的 PHY。 | ||
- | - BLE 控制器不支持连接在每个方向( RX 和 TX )上使用不同 PHY 的非对称连接。 | ||
- | - HCI_LE_SetPhyCmd()中的 PHY_options 参数将在以后的版本中与 LE Long Range 功能一起得到支持。 | ||
- | |||
- | ## 默认 PHY ## | ||
- | |||
- | 应用程序可以调用 HCI_LE_SetDefaultPhyCmd()设置主配置和从配置默认的 PHY 首选项。如果没有指定首选项或 API 没有被调用,则堆栈将使用所有支持的 PHY(1M + 2M)。类似地,对于 HCI_LE_SetPhyCmd(),如果没有指定首选项,则堆栈将使用默认 PHY(即由 HCI_LE_SetDefaultPhyCmd()定义的连接 PHY )),否则将使用参数中指定的内容。 | ||
- | |||
- | HCI_LE_SetDefaultPhyCmd()应在连接之前调用,HCI_LE_SetPhyCmd()只能在连接期间被调用。另请注意 HCI_LE_SetDefaultPhyCmd()不更改 PHY,只有 HCI_LE_SetPhyCmd()可以更改 PHY。 | ||
- | |||
- | 在下面这两种情况下使用 HCI_LE_SetDefaultPhyCmd()设置的首选项: | ||
- | |||
- | - 对端设备使用 HCI_LE_SetPhyCmd()启动 PHY 更新过程, 根据两个设备的首选项协商正确的 PHY | ||
- | - HCI_LE_SetPhyCmd()被调用,设置为 1 AllPhys 参数(表示对设置参数没有要求) | ||
- | |||
- | 在 PHY 协商中可以看到这个例子。 | ||
- | |||
- | ## 更改 PHY ## | ||
- | |||
- | 应用程序可以在连接中启动 PHY 更新过程,不需要考虑设备的角色。在 PHY 协商期间默认使用 HCI_LE_SetDefaultPhyCmd()设置的 PHY 首选项,除非 HCI_LE_SetPhyCmd()更改了 PHY 。HCI LE setdefaultmd()用于指定用于传输和接收所有后续连接的首选参数。但是当 HCI_LE_SetPhyCmd()用于更改连接的 PHY 时,更改仅适用于该连接(后续连接将恢复为使用默认 PHY )。 | ||
- | |||
- | 两者的参数 HCI_LE_SetDefaultPhyCmd()和 HCI_LE_SetPhyCmd()是相同的。ALL_PHYS 参数指定是否使用其他两个参数( TX_PHYS 和 RX_PHYS )。主值 ' | ||
- | |||
- | 下面的序列图 1 显示了主机启动 PHY 更新过程的用例。 | ||
- | |||
- | ![](http:// | ||
- | |||
- | 图1. 主机启动 PHY 更新过程 | ||
- | |||
- | 或者图 2 中从设备也可以使用与以下相同的 API 启动 PHY 更新过程。 | ||
- | |||
- | ![](http:// | ||
- | |||
- | 图2. 从设备启动 PHY 更新过程 | ||
- | |||
- | 如果 PHY 没有改变(例如,如果主机尝试更改为 Slave 不支持的 PHY ),那么只有启动 PHY Update 过程的一方将获得 hciEvt_BLEPhyUpdateComplete_t事件,另一方将不会收到 hciEvt_BLEPhyUpdateComplete_t 事件,如图 1 和图 2 中虚线箭头所示。 | ||
- | |||
- | ## 加入我们 ## | ||
- | |||
- | 文章所有代码、工具、文档开源。加入我们[**QQ群 591679055**](http:// | ||
- | <div> | ||
- | <p align=" | ||
- | <a target=" | ||
- | © Copyright 2017, 成都乐控畅联科技有限公司. | ||
- | </p> | ||
- | </ | ||
- | |||
- | </ |