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.

[参考译文] 回复:LP-CC1352P7:LP-CC1352P7的数据流器示例代码

Guru**** 2391185 points
Other Parts Discussed in Thread: CC2340R5, CC1352P7, CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1344799/re-lp-cc1352p7-data-streamer-example-code-for-lp-cc1352p7

主题中讨论的其他器件:CC1352P7CC2650、CC2340R5

您好 Arthur、

我已 从 GitHub 的给定链接将简单串行套接字客户端示例代码移植到 CC1352P7。  除一些警告外、所有编译错误都将得到解决。

可以看到 UART 终端打印"Info: DONE Initializing"

我已根据所需的串行 客户端代码更改了所需的 UUID。

我对如何使用制造商 ID 将 CC1352p7与 CC2650 (BLE 外设)连接感到困惑。

请帮助我解决此问题

谢谢!

D·萨尔维

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

    您好 Arther、

    您能否帮助我在 cc2650中设置制造商特定的数据、以便我可以将 CC1352P7连接到其中

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

    您好!

    我已更改代码、现在可以连接到 BLE 外设 CC2650。

    static void SimpleSerialSocketClient_processAppMsg(ssscEvt_t *pMsg)
    {
        bool safeToDealloc = TRUE;
        // Specify the address 84:C6:92:F3:E7:B0
    //    uint8_t targetAddress[B_ADDR_LEN] = {0x84, 0xC6, 0x92, 0xF3, 0xE7, 0xB0};//
        uint8_t targetAddress[B_ADDR_LEN] = {0xB0, 0xE7, 0xF3, 0x92, 0xC6, 0x84};//
    
        switch (pMsg->hdr.event)
        {
        case SSSC_EVT_ADV_REPORT:
        {
    
            target_addr_matched = 0;
            GapScan_Evt_AdvRpt_t *pAdvRpt = (GapScan_Evt_AdvRpt_t*) (pMsg->pData);
    //        if (SimpleSerialSocketClient_findSerialStreamServer(
    //                SimpleStreamServerUUID, serverManufData,
    //                sizeof(serverManufData), pAdvRpt->pData, pAdvRpt->dataLen))
    
            for (int i = 0; i < B_ADDR_LEN; ++i) {
                    if ((pAdvRpt->addr[i]) == (targetAddress[i])) {
                        target_addr_matched++;
                    }
                    else
                    {
                        unmatched++;
                        return;
                    }
                }
            if(target_addr_matched==B_ADDR_LEN)
            {
                // We found our device
                scanningStarted = FALSE;
    
                // Disable scanning
                GapScan_disable("");
    
                // Establish a connection to the device
                GapInit_connect(pAdvRpt->addrType & MASK_ADDRTYPE_ID, pAdvRpt->addr,
                                INIT_PHY_1M, 0);
            }
    
            // Free report payload data
            if (pAdvRpt->pData != NULL)
            {
                ICall_free(pAdvRpt->pData);
            }
    
            break;
        }

    我正在检查外设的能力地址、如果找到所需的地址设备、则连接到该设备。

           for (int i = 0; i < B_ADDR_LEN; ++i) {
                    if ((pAdvRpt->addr[i]) == (targetAddress[i])) {
                        target_addr_matched++;
                    }
                    else
                    {
                        unmatched++;
                        return;
                    }
                }

    现在、我在终端上看到这个、

    但是在键入时、终端窗口上没有显示任何内容。

    我认为、根据 GitHub 上的自述文件、我需要启用通知。

    请帮我解决这个问题。

    谢谢!

    D·萨尔维

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

    您好!

    输入到终端中的数据将不会显示。 只会显示器件通过 BLE 接收到的数据。

    此致、

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

    您好!

    CC2650端也没有收到任何数据

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

    你好?

    (4月3日下午12时30分)

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

    您好,Clement?

    此问题在许多天之后仍然存在。

    请不要张贴一个衬里模糊的答案和隐藏。

    如果您真的想要帮助、 请在您有空时分享时间、或者指引我走更好的方向

    (4月3日下午12时47分)

    D·萨尔维

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

    您好!

    感谢您的耐心。 由于所用器件型号的混淆、支持被延迟。

    根据提供的日志、我了解您已成功在设备之间建立了蓝牙连接。 但是、根据您的描述、通知接收未启用。 是这样吗?

    客户端(以及此示例中的蓝牙中心)应启用通知。 您能否确认此操作已在中心侧成功完成?
    应通过写入与要接收通知的特征相关的 CCCD 特征来启用通知。

    • 确保 GATT_WriteNoRsp ()函数正确执行
    • 确保在正确的属性句柄上完成 GATT 写入-例如、可通过使用 host_test + BTool 检索服务器的 GATT 表来进行检查
    • 将 CC2650替换为运行 SIMPLELINK-CONNECT-SW-MOBILE-APP 的手机 、以检查您是否可以成功启用通知
    • 在服务器端检查是否正确接收到用于打开通知的 GATT 写入
    • 使用蓝牙监听器查看是否发生了其他问题

    我希望这将有所帮助、

    此致、

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

    您好!

    我发现 CC1352无法在 CC2650上发现 ble simple service

    我已更改 simple_stream_profile_client.h 和 bcomdef.h 中的服务 uuid、如随附图像中所示。

    显示"simple_discovery_unsuccessfully"

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

    您好!  

    有趣。 为了确保完整性、您能否检查 两个器件上是否已更新相同内容?

    您是否实施了除 此更改之外的其他更改?  
    同样、为了完全确认问题是/不在 CC2650上、我建议使用手机验证 CC2650的 GATT 表是否包含预期的元素。  

    此致、  

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

    您好!

    是的、我已经确认 CC2650能够在 lightblue Android 应用程序上发送通知。 我已将 CC2650上的特性5更改为1个字节(与特性4相同)。

    因此、这不是要(至少目前)启用通知。

    是的、CC2650具有所需的服务和特征以及定义的 UUID。

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

    还有其他调试线索吗?

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

    您好!  

    很高兴看到 CC2650以您想要的方式工作。  现在、我们重点关注 CC1352P7。  
    也许您可以在执行 GATT 表发现的同时开始单步执行代码。 这可帮助您了解 CC1352P7是如何"看到"表的。  
    此致、  

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

    您好!                   (2024年4月10日、IST 01:30)

    我认为 CC1352能够找到服务 UUID、但代码中的某些条件不满足。  

    根据屏幕截图、

    IN 函数  uint32_t SimpleServiceDiscovery_discoverService (uint16_t connHandle、Call_Entity 52实体、
    simpleService_t *服务、gattMsgEvent_t * pMsg)  

    如果、

    案例 BLE_DISC_STATE_SVC:
    {
    //找到服务,存储句柄
    如果(pMsg->method == ATT_FIND_by_type_value_RSP &&
    pMsg->msg.findByTypeValueRsp.numInfo >0)
    {
    service->startHandle = ATT_ATTR_Handle (pMsg->msg.findByTypeValueRsp.pHandlesInfo、0);
    service->endHandle = ATT_GRP_END_Handle (pMsg->msg.findByTypeValueRsp.pHandlesInfo、0);
    // char * uart_msg_str ="找到服务,存储句柄\n\r";
    // uart2_write (uartHandle、uart_msg_str、strlen (uart_msg_str)、NULL);

    不满足此"如果"条件。

    并且直接控制则尝试在最后一行退出该函数、

    返回返回值;

     

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

    这是13天,这个问题被张贴在这里。

    但仍然没有能够真正导致解决问题的可靠答案。

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

    您好!

    修改后的移植代码中、 "手柄数量信息" 找到值为零、

    和 未经修改的 simple_central_LP_CC1352P7_4_tirtos7_ticlang 代码中的  "手柄数量信息"  找到一个、

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

    Clement,  ???             (4月12日下午12时50分)

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

    尊敬的 Dnyaneshvar:

    您是否具有服务发现过程的监听器日志?

    您可以将另一个 TI LaunchPad 与数据包监听器软件配合使用:

    https://www.ti.com/tool/download/PACKET-SNIFFER-2/1.9.0

    谢谢、

    M·H

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

    尊敬的 Marie H:

    请参阅随附的图像、了解 BLE 连接的监听器日志。

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

    此外、我遵循了 https://software-dl.ti.com/lprf/simplelink_academy/modules/ble_01_basic/ble_01_basic.html 上的指令 、并扫描了 CC2650的属性表。 更改屏幕截图以了解更多信息。

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

    尊敬的 Dnyaneshvar:

    您可以发布完整的监听器日志吗? 我想看看服务发现交换。 (如果您不想在论坛上发布、可以通过 PM 将其发送给我。)

    谢谢、

    M·H

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

    尊敬的 Marie H:

    我在个人消息上共享了一个监听器日志。

    当 BLE 外围设备进行广播时、我们可以在监听器日志中看到服务 UUID。

    这是足够的吗? 还是需要我提供更多输入?

    谢谢!

    D·萨尔维

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

    我 还发送了 监听器日志的个人消息、当 CC1352向 CC2650发送连接请求时、该日志会记录信息。

    但是、我在该日志中看不到任何服务 UUID 信息、

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

    尊敬的 Dnyaneshvar:

    感谢您发送日志、但它不是我们所需要的。

    如果我正确理解了您的问题、您会收到 BLE_DISC_STATE_SVC 事件、但 pMsg 字段为空。 例如、服务发现有问题。

    服务发现是在设备连接后发生的过程。 (您正确地说、设备在广播数据包中可以具有一个或多个服务 UUID、但该信息不会传输到服务发现过程。 中央设备必须从头开始。) 如果在监听器日志中捕获了成功的服务发现过程、则表明中心设备正在请求服务句柄、并且外设正在发送服务句柄。 基于此、中央系统将构建与您发送的屏幕快照中的服务表类似的服务表。

    如果在监听器日志中捕获连接时遇到问题、它可以帮助您将广播修改为仅使用一个通道、然后确保监听器在同一个通道上监听。  

    谢谢、

    M·H

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

    尊敬的 Marie H:

    如果在监听器日志中捕获连接时遇到问题、它可以帮助您将广播修改为仅使用一个通道、然后确保监听器在同一个通道上监听。 -  

    这是否意味着我需要配置我的外设以在特定通道上广播、还需要设置监听器以查找该特定的 Adv 通道?

    如果可能、您可以帮助我完成此操作

    谢谢!

    D·萨尔维

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

    尊敬的 Dnyaneshvar:

    1.本 SimpleLink Academy 中包含有关更改广播通道映射的说明。 您必须更新  advChannelMap。

    https://dev.ti.com/tirex/explore/node?node=A__AKZ9pF.Uwg1ra8sjP2oUSw__com.ti.SIMPLELINK_ACADEMY_CC2640R2SDK__7unKOT8__LATEST&placeholder=true 

    2.我认为监听器默认使用频道37。 因此、如果您在外设上使用此信道、它们将使用相同的信道。

    3.您可以在用户指南中看到如何设置监听器以遵循连接、向下滚动到数据包监听器、SmartRF 监听器代理设置。

    https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_7_40_00_77/docs/ble5stack/ble_user_guide/html/ble-stack-5.x-guide/debugging-index.html

    谢谢、

    M·H

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

    尊敬的 Marie H:

    感谢你的帮助。

    我已根据提供的链接中给出的说明将 CC2650设置为在通道37上进行广播、还验证了 CC2650使用通道37使用该监听器广播其数据。

    是的、监听器默认使用通道编号 37.

    监听器的结果没有变化。

    我甚至尝试 通过 LightBlue Android 应用连接 CC2650 (BLE 外设)、并将一些数据发送到 CC2650。

    但得知 在 BLE 中央设备和外设相互连接后、我不会获得任何监听器信息。

    附加屏幕截图。

    在连接后的屏幕截图中、建立连接后该低频器件之间没有有关 BLE 通信的信息。

    我正在发送一条个人消息、其中包含监听器的全部日志、以了解详细信息。

    可能是在建立 BLE 连接后、监听器未捕获数据。

    (我们在办公室有许多可识别设备(CC2650和其他设备)、我没有看到它们在监听器日志中交换数据、只有 ADC 和扫描 RSP)

    ----------------------------------------------------------------------------------------------------------

    除此之外、我想与您分享一些信息。

    在 GITHUB 的以下链接上、有一个有关项目限制的注意事项。

    该文档涉及不同的项目 CC2340R5 (SDK7.40)。 链接、

    https://github.com/TexasInstruments/ble_examples/blob/simplelink_low_power_f3_sdk-7.40/examples/rtos/LP_EM_CC2340R5/ble5stack/basic_ble_GATT_client/README.md 。

    但是、当我尝试将它与我当前的问题相关联、并知道  simple_serial_socket_client.c 文件中使用.NumChars = 2的初始化结构变量 streamServiceHandle (附有屏幕截图)时。

    但在我的 BLE 外设应用中、它具有21个特征。

    该结构用于  

    功能 uint32_t SimpleServiceDiscovery_discoverService (uint16_t connHandle、Call_Entity 实体、
    simpleService_t *服务、gattMsgEvent_t * pMsg)
    {

    在文件中  simple_service_discovery.c 用于与服务发现相关的功能。

    这是否与我的问题相关?

    谢谢!

    D·萨尔维

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

    尊敬的 Marie H:

    我有更新。

    我参考了项目 "simple_central_LP_CC1352P7_4_tirtos7_ticlang"。

    并在 simple_service_discover.c 文件中进行了一些更改。 (需要16位 UUID 而非128位)

    我改变了  service->uuuid.uuid , 至 uuid service->uuuid.len 至 ATT_BT_UUID_SIZE。

    我开始成功地发现简单的服务。

    (请参阅随附的屏幕截图)。

    但是当我在控制台上键入内容时、仍然没有在 BLE 外设端(CC2650)收到任何内容

    此致、

    D·萨尔维

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

    尊敬的 Dnyaneshvar:

    很高兴听到这个消息。

    您能解释一下您在 CC2650 LaunchPad 上运行的程序是什么吗? 您链接的 GitHub 文档适用于 CC2340、而不是 CC2650。

    谢谢、

    M·H

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

    尊敬的 Marie H:

    我在 CC2650上使用了简单的 BLE 外设示例代码。

    我们已增加特征5的大小、以接收244字节数据。

    这是我们在过去2年中使用的生产代码。 CC2650代码没有问题。

    谢谢!

    D·萨尔维

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

    One more update 更新 Marie H,

    我已经开始在 CC2650通信外设上接收数据。

    我在中央端代码中做了更多的更改、很快就会在这里分享。

    此致、

    D·萨尔维