主题中讨论的其他器件: CC2640R2F
工具/软件:TI-RTOS
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好、Vidushi、
BLE5向后兼容 BLE4.2。 这里有更多有关这方面的信息。
简而言之、您无需担心更改示例中的代码即可与 BLE4.2配合使用。 建立连接后、两个器件将协商使用哪种标准。
很抱歉耽误你的时间。 从 BLE4.2到 BLE5发送的命令有一些差异。 在 Windows 上、BTool 是与运行 Host Test 的兼容板连接的应用程序。 下面是 BTool 用于初始化运行 BLE5堆栈的主机测试设备的调用序列。 您可以尝试发送这些命令吗? 让我知道接收到的内容(它应该与下面的 Tx/Rx 匹配)。
[1]: -10:38:10.065 港口于2018年9月10时38分10时--- --------------- [2]: -10:38:10.196 -类型 :0x01 (命令) -OpCode :0xFC1D (HCIExt_ResetSystemCmd) -数据长度:0x01 (1)字节 类型 :0x00 (0)(芯片复位) 转储(Tx): 0000:01 1D FC 01 00 … ---------------------------------------- [3]: - 10:38:10.350 -类型 :0x04 (事件) -EventCode :0x00FF (HCI_LE_ExtEvent) -数据长度:0x05 (5)字节 事件 :0x041D (1053)(HCIExt_ResetSystemCmdOne) 状态 :0x00 (0)(成功) CmdOpCode :0xFC1D (HCIExt_ResetSystemCmd) 转储(Rx): 0000:04 FF 05 1D 04 00 1D FC ………… ---------------------------------------- [4]: - 10:38:10.851 -类型 :0x01 (命令) -OpCode :0xFE00 (GAP_DeviceInit) -数据长度:0x08 (8)字节 ProfileRole:0x08 (8)(. 中央) AddrMode :0x00 (0)(ADDRMODE_PUBLIC) RandomAddr :00:00:00:00 :00转储(Tx): 0000:01 00 FE 08 08 00 00 00 00 00 00 00 . ---------------------------------------- [5]: - 10:38:10.974 -类型 :0x04 (事件) -EventCode :0x00FF (HCI_LE_ExtEvent) -数据长度:0x06 (6)字节 事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus) 状态 :0x00 (0)(成功) 操作码 :0xFE00 (GAP_DeviceInit) DataLength :0x00 (0) 转储(Rx): 0000:04 FF 06 7F 06 00 FE 00 。 ---------------------------------------- [6]: - 10:38:10.985 -类型 :0x04 (事件) -EventCode :0x00FF (HCI_LE_ExtEvent) -数据长度:0x2C (44)字节 事件 :0x0600 (1536)(GAP_DeviceInitDOne) 状态 :0x00 (0)(成功) DevAddr :54:6C:0E:A0:40:4C DataPtLen :0x00FF (255) NumDataPts:0x05 (5) irk :00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 :00 CSRK :68:B8:A7:F5:DC:3C:AE:B9:3B:F8:31:B5:2B:BD:F1:AF Dump (Rx): 0000:04 FF 2C 00 06 00 4C 40 A0 0E 6C 54 FF 00 05 00 ...... L@.. 0010:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 H 0020:B8 A7 F5 DC 3C AE B9 3B F8 31 B5 2B BD F1 AF ...<.. ---------------------------------------- [7]: - 10:38:11.038 -类型 :0x01 (命令) -OpCode :0xFE61 (GapInit_getPhyParam) -数据长度:0x02 (2)字节 PHY :0x01 (1)(init_phy_1M) ParamId :0x02 (2)(init_PHYPARAM_CONN_INT_MIN) 转储(Tx): 0000:01 61 FE 02 01 02 a.... ---------------------------------------- [8]: - 10:38:11.049 -类型 :0x01 (命令) -OpCode :0xFE61 (GapInit_getPhyParam) -数据长度:0x02 (2)字节 PHY :0x01 (1)(init_phy_1M) ParamId :0x03 (3)(init_PHYPARAM_CONN_INT_MAX) 转储(Tx): 0000:01 61 FE 02 01 03 a.... ---------------------------------------- [9]: - 10:38:11.059 -类型 :0x01 (命令) -OpCode :0xFE61 (GapInit_getPhyParam) -数据长度:0x02 (2)字节 PHY :0x01 (1)(init_phy_1M) ParamId :0x04 (4)(init_PHYPARAM_CONN_latency) 转储(Tx): 0000:01 61 FE 02 01 04 a.... ---------------------------------------- [10]: - 10:38:11.070 -类型 :0x01 (命令) -OpCode :0xFE61 (GapInit_getPhyParam) -数据长度:0x02 (2)字节 PHY :0x01 (1)(init_phy_1M) ParamId :0x05 (5)(init_PHYPARAM_SUP_TIMEOUT) Dump (Tx): 0000:01 61 FE 02 01 05 a.... ---------------------------------------- [11]: - 10:38:11.070 -类型 :0x04 (事件) -EventCode :0x00FF (HCI_LE_ExtEvent) -数据长度:0x09 (9)字节 事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus) 状态 :0x00 (0)(成功) 操作码 :0xFE61 (GapInit_getPhyParam) DataLength :0x03 (3) 参数 ID :0x02 (2)(INIT_PHYPARAM_CONN_INT_MIN) MinConnectInter:0x0050 (80) Dump (Rx): 0000:04 FF 09 7F 06 00 61 FE 03 02 50 00 … A..P. ---------------------------------------- [12]: - 10:38:11.092 -类型 :0x04 (事件) -EventCode :0x00FF (HCI_LE_ExtEvent) -数据长度:0x09 (9)字节 事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus) 状态 :0x00 (0)(成功) 操作码 :0xFE61 (GapInit_getPhyParam) DataLength :0x03 (3) 参数 ID :0x03 (3)(INIT_PHYPARAM_CONN_INT_MAX) MaxConnectInter:0x0050 (80) Dump (Rx): 0000:04 FF 09 7F 06 00 61 FE 03 50 00 … A..P. ---------------------------------------- [13]: -10:38:11.113 -类型 :0x04 (事件) -EventCode :0x00FF (HCI_LE_ExtEvent) -数据长度:0x09 (9)字节 事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus) 状态 :0x00 (0)(成功) 操作码 :0xFE61 (GapInit_getPhyParam) DataLength :0x03 (3) 参数 ID :0x04 (4)(init_PHYPARAM_CONN_latency) ConnectLatency:0x0000 (0) Dump (Rx): 0000:04 FF 09 7F 06 00 61 FE 03 04 00 … A. ---------------------------------------- [14]: - 10:38:11.124 -类型 :0x04 (事件) -EventCode :0x00FF (HCI_LE_ExtEvent) -数据长度:0x09 (9)字节 事件 :0x067F (1663)(GAP_HCI_ExtentionCommandStatus) 状态 :0x00 (0)(成功) 操作码 :0xFE61 (GapInit_getPhyParam) DataLength :0x03 (3) 参数 ID :0x05 (5)(init_PHYPARAM_SUP_TIMEOUT) SuperTimeout:0x07D0 (2000) Dump (Rx): 0000:04 FF 09 7F 06 00 61 FE 03 05 D0 07 … A. ----------------------------------------
尊敬的 Ammar:
下面是我们从 BTool (版本1.42.08- BLE5)获取的命令响应。 我们将从 Linux 代码发送相同的命令。 我们使用了默认的 CC2642R HostTest 固件(simplelink_cc26x2_sdk_2_20_00_36)。 我们的用例是从 HostTest 应用程序启用外设模式、并开始使用一些数据进行广播。 使用 cc2640r2f BLE4.2 HostTest 应用程序代码的流程相同。
但是、当我们尝试使用 CC2642r HostTest (或 CC2640r2f BLE5 HostTest 应用程序)执行相同的操作时、器件将返回以下错误。
[1]: 01:57:57.360
港口于2018年10月10日下午1:57:57开放
----------------------------------------
[2]: 01:57:57.516
类型:0x01 (命令)
-OpCode:0xFC1D (HCIExt_ResetSystemCmd)
数据长度:0x01 (1)字节
类型:0x00 (0)(芯片复位)
转储(Tx):
0000:01 1D FC 01 00…
----------------------------------------
[3]: 01:57:57.813
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x05 (5)字节
事件:0x041D (1053)(HCIExt_ResetSystemCmdOne)
状态:0x00 (0)(成功)
CmdOpCode:0xFC1D (HCIExt_ResetSystemCmd)
转储(Rx):
0000:04 FF 05 1D 04 00 1D FC ........
----------------------------------------
[4]: 01:57:58.391
类型:0x01 (命令)
-OpCode:0xFE00 (GAP_DeviceInit)
数据长度:0x08 (8)字节
ProfileRole:0x08 (8)(.
中央)
ADDRMode:0x00 (0)(ADDRMODE_PUBLIC)
RandomAddr : 00:00:00:00:00:00
转储(Tx):
0000:01 00 FE 08 08 00 00 00 00 00 00 00 00 00
----------------------------------------
[5]: 01:57:58.585
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x06 (6)字节
事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
状态:0x00 (0)(成功)
操作码:0xFE00 (GAP_DeviceInit)
数据长度:0x00 (0)
转储(Rx):
0000:04 FF 06 7F 06 00 00 FE 00 ..........
----------------------------------------
[6]: 01:57:58.601
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x2C (44)字节
事件:0x0600 (1536)(GAP_DeviceInitDone)
状态:0x00 (0)(成功)
DevAddr:F0:F8:F2:D2:B5:95
DataPtLen:0x00FF (255)
NumDataPkts:0x05 (5)
irk:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
CSRK:7C:6D:37:BC:AF:67:63:38:69:AA:99:4B:5A:C6:77:5A
转储(Rx):
0000:04 FF 2C 00 06 00 95 B5 D2 F2 F8 F0 FF 00 05 00 ..
0010:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7C |
0020:6D 37 BC AF 67 63 38 69 AA 99 4B 5A C6 77 5A m7..gc8i..kz.wz
----------------------------------------
[7]: 01:57:58.648
类型:0x01 (命令)
-OpCode:0xFE61 (GapInit_getPhyParam)
数据长度:0x02 (2)字节
PHY:0x01 (1)(init_phy_1M)
ParamId:0x02 (2)(init_PHYPARAM_CONN_INT_MIN)
转储(Tx):
0000:01 61 FE 02 01 02 .a....
----------------------------------------
[8]: 01:57:58.679
类型:0x01 (命令)
-OpCode:0xFE61 (GapInit_getPhyParam)
数据长度:0x02 (2)字节
PHY:0x01 (1)(init_phy_1M)
参数 ID:0x03 (3)(init_PHYPARAM_CONN_INT_MAX)
转储(Tx):
0000:01 61 FE 02 01 03 a....
----------------------------------------
[9]: 01:57:58.694
类型:0x01 (命令)
-OpCode:0xFE61 (GapInit_getPhyParam)
数据长度:0x02 (2)字节
PHY:0x01 (1)(init_phy_1M)
参数 ID:0x04 (4)(init_PHYPARAM_CONN_latency)
转储(Tx):
0000:01 61 FE 02 01 04 a....
----------------------------------------
[10]: 01:57:58.710
类型:0x01 (命令)
-OpCode:0xFE61 (GapInit_getPhyParam)
数据长度:0x02 (2)字节
PHY:0x01 (1)(init_phy_1M)
参数 ID:0x05 (5)(init_PHYPARAM_SUP_TIMEOUT)
转储(Tx):
0000:01 61 FE 02 01 05 a....
----------------------------------------
[11]: 01:57:58.710
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x09 (9)字节
事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
状态:0x00 (0)(成功)
操作码:0xFE61 (GapInit_getPhyParam)
数据长度:0x03 (3)
ParamId:0x02 (2)(init_PHYPARAM_CONN_INT_MIN)
MinConnectInter:0x0050 (80)
转储(Rx):
0000:04 FF 09 7F 06 00 61 FE 03 02 50 00 ...... A..P.
----------------------------------------
[12]: 01:57:58.741
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x09 (9)字节
事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
状态:0x00 (0)(成功)
操作码:0xFE61 (GapInit_getPhyParam)
数据长度:0x03 (3)
参数 ID:0x03 (3)(init_PHYPARAM_CONN_INT_MAX)
MaxConnectInter:0x0050 (80)
转储(Rx):
0000:04 FF 09 7F 06 00 61 FE 03 50 00 ...... A..P.
----------------------------------------
[13]: 01:57:58.773
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x09 (9)字节
事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
状态:0x00 (0)(成功)
操作码:0xFE61 (GapInit_getPhyParam)
数据长度:0x03 (3)
参数 ID:0x04 (4)(init_PHYPARAM_CONN_latency)
ConnectLatency : 0x0000 (0)
转储(Rx):
0000:04 FF 09 7F 06 00 61 FE 03 04 00 ...... A.
----------------------------------------
[14]: 01:57:58.804
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x09 (9)字节
事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
状态:0x00 (0)(成功)
操作码:0xFE61 (GapInit_getPhyParam)
数据长度:0x03 (3)
参数 ID:0x05 (5)(init_PHYPARAM_SUP_TIMEOUT)
超时:0x07D0 (2000)
转储(Rx):
0000:04 FF 09 7F 06 00 61 FE 03 05 D0 07… A.
----------------------------------------
[15]: 01:58:32.440
类型:0x01 (命令)
操作码:0x0C03 (HCI_Reset)
数据长度:0x00 (0)字节
转储(Tx):
0000:01 03 0C 00…
----------------------------------------
[16]: 01:58:32.487
类型:0x04 (事件)
-EventCode:0x000E (HCI_CommandCompleteEvent)
数据长度:0x04 (4)字节
数据包:0x01 (1)
操作码:0x0C03 (HCI_Reset)
状态:0x00 (0)(成功)
转储(Rx):
0000:04 0E 04 01 03 0C 00 ........
----------------------------------------
[17]: 01:58:46.129
类型:0x01 (命令)
-OpCode:0xFE00 (GAP_DeviceInit)
数据长度:0x08 (8)字节
ProfileRole:0x04 (4)(.
外设)
ADDRMode:0x00 (0)(ADDRMODE_PUBLIC)
RandomAddr : 00:00:00:00:00:00
转储(Tx):
0000:01 00 FE 08 04 00 00 00 00 00 00 00 00 00
----------------------------------------
[18]: 01:58:46.161
类型:0x04 (事件)
-EventCode:0x00FF (HCI_LE_ExtEvent)
数据长度:0x06 (6)字节
事件:0x067F (1663)(GAP_HCI_ExtentionCommandStatus)
状态:0x12 (18)(bleIncorrectMode)
操作码:0xFE00 (GAP_DeviceInit)
数据长度:0x00 (0)
转储(Rx):
0000:04 FF 06 7F 06 12 00 FE 00 ........
----------------------------------------
我们在这里是否缺少任何命令? 我们如何启用外设模式并开始广播?
您好、Aditya、
感谢您向我发送日志。 深入了解这一点后、必须设置一些构建配置、以便在 CC2640R2F 上启用外设模式。
请转至 ble5_host_test_cc2640r2lp_stack_library 项目、然后转至工具、然后打开 build_config.opt 文件。 然后注释掉中央配置行并包括外设配置行、如下所示:
/* BLE 主机构建配置*/ -DHOST_CONFIG=PERIOD_CFG /*-DHOST_CONFIG=CENTRAL_CFG */ /*-DHOST_CONFIG=Broadcaster _CFG */ ...
完成这些更改后、保存 build_config.opt 文件。 然后、清理堆栈库项目并构建它。 对主机测试应用项目执行相同的操作、并对 CC2640R2F 进行编程。
当您打开 BTOOL 时、器件将无法在中央模式下进行初始化(正如我们已将其从构建中删除)。 运行 HCIExt_ResetSystemCmd 继续。 然后运行 GAP_DeviceInit 命令、确保更改配置文件角色以启用 peripheralProfileRole。 (您可能需要重置设备并重试)。 收到成功确认后、您可以继续启用广播、方法是转到 GAP AE、然后发送 GapAdv_create 命令、后跟 GapAdv_enable 命令。
如果可以、请告诉我!
尊敬的 Ammar:
感谢你的帮助。 我们已经解决了这个问题、如果我们在 定义的函数中调用 GapAdv_prepareLoadByHandle、器件将被挂起。 但是、如果我们在 GAP_EVT_ADV_START 事件中调用 GapAdv_prepareLoadByHandle API、则其工作正常。 我们能够成功更新数据。
案例 GAP_EVT_ADV_START:
//不要释放任何内容,因为我们将使用相同的缓冲区重新加载
GapAdv_prepareLoadByHandle (advHandleLegacy、GAP_ADV_FREE_OPTION _DONT_FREE);
//在此处更新 scanRspData 缓冲区。
//重新加载要处理的缓冲区
GapAdv_loadByHandle (advHandleLegacy、GAP_ADV_DATA_TYPE_SCAN_RSP、sizeof (scanRspData)、scanRspData);
中断;