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.

[参考译文] CC2745R10-Q1:广播数据包故障

Guru**** 2644735 points

Other Parts Discussed in Thread: CC2745R10-Q1

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1585621/cc2745r10-q1-advertisement-packet-failure

器件型号: CC2745R10-Q1

我使用 CC2745R10-Q1 电路板作为中央器件。 电路板持续扫描并连接外设 10 秒、然后断开连接;20 秒后、再次连接 10 秒 此周期必须连续发生、但我们可以观察到、在 2 或 3 小时(时间不确定)后、它会停止生成广播报告、因此无法连接到 外设。

在以下情况下不会输入:

    用例 BLEAPPUTIL_ADV_REPORT:
    {
      ScanStopIndicationFlag = 0;
      Swaraj++;
      for (int i = 0;i < 6;i++)
      {
        scanBuff[i]= scanMsg->pBuf->pAdvReport.addr[i];
      }
      IF ((scanBuff[5]== 0x28 && scanBuff[4]== 0x3C && scanBuff[3]== 0xCC && scanBuff[2]== 0xE3 && scanBuff[1]== 0xA3 && scanBuff[0]== 0xB9)
      {
        BLEApp Util_Connect ConnParams_t centralConnParams =
        {
         .peerAddrType = scanMsg->pBuf->pAdvReport.addrType、
         phys = init_PHY_1M、
         .timeout = 3000
        };
        //复制选定的地址
        memcpy (centralConnParams.pPeerAddress、scanBuff、B_ADDR_LEN);
        //复制选定的地址
        BLEAppUtil_CONNECT (&centralConnParams);
      }

      //必须释放缓冲区
      BLEAppUtil_FREE(scanMsg->pBuf);
      memset (scanBuff、0、sizeof (scanBuff));

      休息;
    }

 

image.png

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

    您好:  

    首先、我建议在释放缓冲区而不是使用 memset 设置为 0 后、将 scanBuf 设置为 NULL。 我将把它分配给另一位工程师负责。  

    谢谢、

    Isaac

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

    我尝试过,但仍然面临的问题

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

    你好 Divyani、

    有几个问题以便我可以更好地为您提供支持、您能为我提供您所使用的 SDK 版本吗? 您使用什么参数或代码在外设端发送实际广播?

    谢谢、

    Eshaan

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

    我正在使用 SDK“simplelink_lowpower_f3_SDK_8_40_00_61"。“。  

    我认为这不是外设侧的问题、因为外设持续广播。 扫描中央设备并连接外围设备(遥控器)10 秒、然后断开连接(10 秒后) 外设侧发生断开连接)。 按下 20 秒遥控器按钮后、FOB 开始广播、然后中央连接到外围设备;此循环仅持续约 2 - 3 小时、然后中央停止以生成广播报告。 我使用了一个标志来检查扫描是否已禁用、然后我观察到未设置标志意味着正在进行扫描。 我创建了其他线程、该线程持续工作(20ms 延迟)、这意味着其他功能正常工作、而不是广播数据包。

    void uint32_t EventHandler (Central_Scan 事件、BLEAppUtil_msgHdr_t *pMsgData)

    BLEApp Util_Scan EventData_t *scanMsg =(BLEApp Util_Scan EventData_t *) pMsgData;

    开关(事件)

    用例 BLEAPPUTIL_ADV_REPORT:

    ScanStopIndicationFlag = 0;
    Swaraj++;
    for (int i = 0;i < 6;i++)

    scanBuff[i]= scanMsg->pBuf->pAdvReport.addr[i];
    }
    if ((scanBuff[5]== 0xAA && scanBuff[4]== 0x3C && scanBuff[3]== 0x90 && scanBuff[2]== 0xE3
    && scanBuff[1]== 0xA3 && scanBuff[0]== 0xD7)

    BLEApp Util_Connect ConnParams_t centralConnParams =

    .peerAddrType = scanMsg->pBuf->pAdvReport.addrType、
    phys = init_PHY_1M、
    .timeout = 3000
    };
    //复制选定的地址
    memcpy (centralConnParams.pPeerAddress、scanBuff、B_ADDR_LEN);
    //复制选定的地址
    BLEAppUtil_CONNECT (&centralConnParams);
    }

    //必须释放缓冲区
    BLEAppUtil_FREE(scanMsg->pBuf);
    memset (scanBuff、0、sizeof (scanBuff));

    休息;
    }

    用例 BLEAPPUTIL_SCAN_ENABLED:

    centralScanIndex = 0;
    MenuModule_printf (APP_MENUM_SCAN_EVENT、0、“扫描状态:扫描已启动...“);

    休息;
    }

    用例 BLEAPPUTIL_SCAN_DISABLED:

    uint8 i;

    for (I = 0;I < APP_MAX_NUM_OF_ADV_REPORTS;I++)

    memset (&centralScanRes[i]、0、sizeof (App_scanResults);
    }

    //检查保存在主机级别的广播报告并保存它
    对于 (i = 0;i < scanMsg->pBuf->pScanDis.numReport;i++)

    Gap Scan_Evt_Adv Rpt_t advReport;
    //从报告中获取地址
    GapScan_getAdvReport (I、&advReport);
    //将报告添加到扫描列表中
    CENTRAL_addScanRes (&advReport);
    }

    ScanStopIndicationFlag = 1;
    BLEAppUtil_scanStart (&centralScanStartParams);

    MenuModule_printf (APP_MENUE_SCAN_EVENT、0、“扫描状态:扫描禁用-“
    “原因:“ MENUM_MODULE_COLOR_YLORD “%d" MENUM_MODULE_COLOR_RESET“ MENUM_MODULE_COLOR_RESET
    “数值结果:“ menu_module_color_黄色“%d “ menu_module_color_reset、
    scanMsg->pBuf->pScanDis.reason、
    scanMsg->pBuf->pScanDis.numReport);
    休息;
    }

    默认值:

    休息;
    }

    }
    }

    Swaraj 可以验证,一段时间后不会递增

    外  设在广播中广播低于 28 字节数据的情况下应通过广播。

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

    我可以看到中心角色参数的 sys config 变量吗? 您发送的第一张图片是针对观察者角色配置、但当 BLE 处于观察者角色时、它根本无法发起连接、因此与您附加的代码不一致。  

    此外、每次中央设备收到来自外设的广播数据包时都会生成 BLEAPPUTIL_ADV_REPORT、因此如果您未到达该事件、并且扫描工作正常、我怀疑外设存在问题。 您是否有任何方法来捕获 BLE 数据包? 我想确认外设是否正在传输数据包、或者在连接开始失败时外设在接收端的问题。

    谢谢、

    Eshaan

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

    我使用“simplelink_lowpower_f3_SDK_9_11_01_16"SDK 进行“ 进行了测试、该 SDK 工作正常。 我认为较旧的 SDK 中存在问题(错误)

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

    好的、听起来不错、问题现在已经解决了吗?

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

    是的