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.

[参考译文] 用于建立 BLE 连接的 HCI 命令序列

Guru**** 2583825 points
Other Parts Discussed in Thread: CC2564MODA, CC2650MODA, CC2650

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/616820/hci-command-sequence-to-establish-ble-connection

主题中讨论的其他器件:CC2564MODACC2650MODACC2650

您好!

我不熟悉 BLE。

我正在使用 HCI 命令进行 BLE 通信。 我正在通过3线 UART 接口使用 CC2564MODA。 目前使用 HCITester 工具来测试 CC2564MODA 的工作情况。

执行"HCI_Write_Scan_enable 0x01"命令时出现"Command Disallowed"错误。 这表示仍有一些初始化。

 是否有任何 HCI 命令序列记录在任何位置、以便我可以跟踪它。

基本上、我在 BLE 中央端查找需要分步执行的命令、以便 BLE 外设在查询期间被检测并可以与它们连接?

Vishal N

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您的查询已分配给相关专家。 我们很快会回来

    谢谢
    Saurabh
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我做了一些研究、并尝试找到命令序列。 但我无法成功发现周围的外围设备。

    有关我的问题的更多信息-我正在开发 BLE 中央设备(IoT 网关)、它将发现周围的外围设备并使用 GATT 协议与它们进行通信。 为此、我必须仅使用 HCI 命令序列、因为 BLE 堆栈在 MCU 上不可移植。 这是我要在其中添加 BLE 功能的现有产品、因此不能在两者之间使用 MSP430或任何其他 MCU。 我们已选择 CC2564MODA 模块作为 BLE 收发器。

    我正在使用 HCITester 应用程序发送 HCI 命令。 我还使用 TI 初始化脚本 v1.6启动了 CC2564MODA 模块。 下面是我创建的脚本。 请查看并告诉我此脚本中所需的更正。

    SEND_HCI_READ_LOCAL 支持的命令
    WAIT_HCI_COMMAND_COMPLEE_READ_LOW_SUPPORTED 的命令事件5000、任何
    发送的 HCI_READ_LOCAL 支持的功能 WAIT_HCI_COMMAND_READ_LOCAL
    支持的功能事件5000、任何
    发送的 HCI_SET_Event_END_HCI_SEND_0000000000000001FFF、0x000000000000 000HCI_LE_HCI_WIT_LE_END_Event
    
    
    屏蔽、0x0000000HCI_LE_LET_HCI_WIT_LE_WIT_LE_LE_LET_Event 掩码0x00000005000、0x0000000HCI_WIT_WIT_LE_WIT_LE_LE_LE_ 任何
    "Send_HCI_LE_Read_Buffer_Size
    WAIT_HCI_Command_Complete_LE_Read_Buffer_Size_Event 5000"、任何 HCI_LE_Read_Buffer_Size、
    "Send_HCI_Read_Buffer_Size
    WAIT_HCI_Command_Complete_Read_Buffer_Size_Event 5000"、任何、 HCI_READ_Buffer_Size、
    Send_HCI_Read_BD_ADDR
    WAIT_HCI_Command_Complete_READ_BD_ADDR_Event 5000、任何
    
    Send_HCI_LE_Set_Random_Address "0C8EB3484FC3"
    WAIT_Command_Complete_Event 5000 Send_LE_Write_Data_WRIe_Data_Set_0001_HCI_Write_WQ_000_000_LE_WQ_0001_0001_0001_0001_WQ_0001_0001_0001_WQ_000_COMMEND_0C1_0001_0001_0001_WQ_0001_000_000_COMMEND_0001_0001_0001_0001_WQ_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_LE_LE_WQ_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_0001_
    
    
    
    
    
    
    
    
    
    0x00
    WAIT_HCI_Command_Complete_LE_Set_Scan_Parameters_Event 5000、任意、HCI_LE_Set_Scan_Parameters、
    Send_HCI_LE_Set_Scan_Enable 0x01、0x01
    WAIT_HCI_Command_Complete_LE_Set_Scan_Enable_Event 5000、 任意、HCI_LE_Set_Scan_Enable、0x00
    
    WaitForAllEvents 50000、True
    

    我没有从 CC2564MODA 模块获得 LE 广播报告。

    请告诉我我的方法是否正确?

    Vishal N

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请将此帖子标记为"未回答"。 我错误地将其标记为已回答
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vishal、

    我正在研究您的问题。

    您有多个其他线程处于打开状态、即

    e2e.ti.com/.../616598
    e2e.ti.com/.../615758

    这些是否仍然打开、或者您是否已将其弄清楚?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dale、

    感谢您的回答。

    是的、多个线程处于打开状态、但问题仅为一个。 我已经描述了上面这个线程中的主要问题。

    我正在使用 TI 的 CC2564MODA 在我的现有产品中开发一款 BLE 中央设备。 我想使用 HCI 命令与绕过 BLE 堆栈的模块进行通信。 因为我的 MCU 没有如此多的存储器来托管 BLE 堆栈。

    我正在寻找 HCI 命令序列来将 CC2564MODA 配置为 BLE 中央设备并与外设进行通信。

    等待您的回复。

    Vishal N
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vishal、

    好的、感谢您的清除。 如果可以的话、我将关闭这些其他线程、并关注当前线程。 我很快会回来的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dale、

    正在等待您的回复。

    Vishal N

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vishal、

    您是否使用过 BLE 附加服务包? 此服务包包含在执行任何其他操作之前在器件上初始化 BLE 所需的步骤。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dale、

    是的、我已经使用下面提到的脚本来初始化模块(CC2564MODA)

    initscripts-TIInit_6.7.16_bt_spec_4.1.bts (initscripts-TIInit_6.7.16_bt_spec_4.1.txt)

    initscripts-TIInit_6.7.16_ble_add-on.bts

    我的 script.txt -我创建了此文件以启用和禁用 LE 扫描。

    我已将所有这些脚本(scripts.zip)附加到此帖子、并已将从 HCITester 导出的跟踪日志附加到该帖子中。

    BLE 附加脚本仅包含两条命令

    SEND_ATT_ReadByTypeRsp 0xc000、0x1b、""

    SEND_ATT_ReadByTypeRsp 0xc000、0x1b、""

    此脚本是否正确。 我从 TI 网站获得了这些脚本、其版本为 TIInit_6.7.16。 请告诉我这些脚本是否正确。

    Vishal N

    e2e.ti.com/.../4428.Scripts.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dale、

    我可以在这里稍微进步一点。 现在、我能够使用 HCI 脚本读取广播包。 脚本如下所示。 我获得了正确的初始化脚本和 BLE 附加脚本。

    当前面临的问题-无法连接到外围设备。 我已使用以下命令连接到器件。 我从模块中获取"命令被禁止"作为返回事件的状态。

    SEND_HCI_LE_Create_Connection 0x0100、0x0004、0x01、0x02、"1ccae320057d"、 0x01、0x0008、0x0008、"0x0002"、"0x0001"、 0x0000、0x0000、0x0100、0x0004、0x01、 0x00、"1ccae320057d"、0x01、0x0008、0x0008、 "0x0002"、"0x0001"、0x0000、0x0014
    WAIT_HCI_Command_Status_Event 2000、0x00、 任意、0x200D 

    有什么不能连接的想法吗? 您可以在下面查看我的完整 HCI 脚本。

    Vishal N


    SEND_HCI_SET_Event_Mask 0x28bffffffffb9fff WAIT_HCI_Command_Complete_Set_Event_Mask_Event 5000、任意 发送_HCI_LE_Set_Event_Mask 0x00000000001f WAIT_HCI_Command_Complete_LE_Set_Event_Event 5000、任意 发送_HCI_Change_Name_Local_Name_HCI_Name_HCI_Name_HCI_Name_Name_HCI_READ_HCI_HCI_LO_HCI_HCI_END_RET_LIT_H1_H1_H1_H1_HCI_ENT_HCI_H1_H1_END_ENT_HCI_H1_ENT_H1_ENT_HCI_HCI_H1_END_ENCH_ENT_H1_000_ENT_H1_HCI_HCI_Name_ENT_ 0x00 WAIT_HCI_Command_Complete_Write_LE_Host_Support_Event 5000、任意、HCI_Write_LE_Host_Support、0x00 Send_HCI_LE_Read_Buffer_Size WAIT_HCI_Command_Complete_LE_Read_Buffer_Size_Event 5000、任意、HCI_LE_Read_Buffer_Size、HCI_Read_Buffer_Size、 HCI_Command Wait_Read_Event_Command 、HCI_Set_Event_Command HCI_READ_Buffer_SIZE、 "Send_HCI_READ_BD_ADDR WAIT_HCI_Command_Complete_Read_BD_ADDR_Event 5000"、任何 "Send_HCI_LE_Write_Scan_Parameters 0x01、0x0010、0x0010、 0x00、0x01 WAIT_HCI_Command_Complete_LE_Set_Scan_Parameters_Event 5000、任意、HCI_LE_Set_Scan_Parameters、 Send_HCI_Write_Scan_Enable 0x01 WAIT_HCI_Command_Complete_Write_Scan_Enable_Event 5000、任意、HCI_Write_Scan_Enable、0x00、5000、 任意、HCI_Write_Scan_Enable、0x00、5000、任意、 HCI_Write_Scan_Enable、0x00、5000、任意、HCI_Write_Scan_Enable、 0x00 Send_HCI_LE_CLE_CLE_CLEAR_W_List WAIT_HCI_Command_Complete_LE_CLE_CLE_White_List_Event 5000、任意、HCI_LE_CLE_CLE_ADD_Device_TO_White_List 0x00、"1cca320057d" HCI_Command_Complete_LE_Event_5000、发送至白色设备列表0x00、"1cca320057d" 任何、HCI_LE_Add_Device_TO_White_List、0x00 发送_HCI_LE_Write_Scan_Enable 0x01、0x1 WAIT_HCI_Command_Complete_LE_Set_Scan_Enable_Event 5000、任何、 HCI_LE_Set_Scan_Enable、0x00 WAIT_HCI_LE_General_Report_Event 5000、任意、 发送_HCI_LE_Write_Scan_Enable 0x00、0x0 WAIT_HCI_Command_Complete_LE_Set_Scan_Enable_Event 5000、 任意 发送_HCI_LE_Create_Connection 0x0100、0x0004、0x01、0x02、"1ccae320057d"、 0x01、0x0008、0x0008、"0x0002"、"0x0001"、 0x0000、0x0000、0x0100、0x0004、0x01、 0x00、"1ccae320057d"、0x01、0x0008、0x0008、 "0x0002"、"0x0001"、0x0000、0x0014 WAIT_HCI_Command_Status_Event 2000、0x00、 任意、0x200D WaitForAllEvents 50000、真

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    看起来"Send_HCI_LE_Create_Connection 没有正确数量的参数传递给它:

    SEND_HCI_LE_Create_Connection 0x0100、0x0004、0x01、0x02、"1ccae320057d"、 0x01、0x0008、0x0008、"0x0002"、"0x0001"、 0x0000、0x0000

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dale、

    关于上述帖子

    我们是否有 LE (中央器件)的 HCI 序列图? 或者是否有任何文档描述了应将哪些 HCI 命令发送到 CC2564MODA 模块以启用扫描和连接建立?

    等待您的回复。

    Vishal N

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vishal、

    您可以参阅所有命令的蓝牙规范、但我们不建议通过 HCI 实现所有这些规范。 我们通常通过堆栈来实现它。

    此外、您是否仅尝试实现 LE 功能或计划添加 BT 经典? 如果是、我们还有其他专门针对 BLE 的产品、这些产品可能更适合您的应用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dale、

    感谢您的回复。

    在这方面,我确实有几个问题。
    我们选择 CC2564MODA 的初衷是 BD/EDR 和 BLE。 如果使用此模块有困难、那么我可以在电路板上直接使用哪个模块、哪个模块具有内置的 MCU 和收发器?
    2.如果我仅选择 BLE、那么哪一个是模块(MCU +收发器)
    3.在单独的主题中,我了解到有一个模块 CC2650MODA 可用于 BLE。 我有这个模块。 如何在其中加载主机测试固件(十六进制文件)? 我需要在 Windows 计算机上使用哪种软件工具? 我有 XDS110。 我有主机测试固件十六进制文件。

    正在等待您的回复。 我有意等待3号回复、因为这将为我提供一些尝试该模块的指导。

    Vishal N

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    关于(3):

    CC2650可使用 SmartRF 闪存编程器使用十六进制文件进行编程。 有关此器件的更多信息、请参阅 低功耗蓝牙论坛。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Dale、

    感谢您的回答。

    我可以将预编译的十六进制文件 HostTest 固件刷写到模块中。 但无法通过我的 PC 上的 UART 检测到它(使用 BTool)。

    我已刷写- simplelink\ble_sdk_2_02_01_18\examples\hex\cc2650lp_host_test_rel.hex

    我不使用 Launch Pad。 我已使用 XDS110连接模块的 JTG 引脚、并使用 XDS110的 TXD 和 RXD 将模块的引脚4和5连接在一起。 这些连接是否正确?

    问题-

    1.在没有 LaunchPad 的情况下应使用哪个版本的 HostTest 固件?

    主机测试固件运行后、UART 引脚是什么?

    3.如何检测 HostTest 固件是否正常工作?

    请参阅下图以了解我的连接。

    Vishal N

    P.S. -请注意、LaunchPad 板上仅使用调试器 XDS110。 连接到 Launch Pad 的所有跳线均已移除。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Vishal、

    我不支持仅 BLE 器件。 请将此问题直接发送至 BLE 论坛。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。