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.

CC2640R2F: 设置广播间隔不成功

Part Number: CC2640R2F


我使用SDK的是 simplelink_cc2640r2_sdk_5_30_00_03 里面的  ble5_simple_peripheral_cc2640r2lp_app 这个项目。

#define DEFAULT_ADVERTISING_INTERVAL_MIN 1600
#define DEFAULT_ADVERTISING_INTERVAL_MAX 1800

GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN;

// Create Advertisement set #1 and assign handle
status = GapAdv_create(&SimplePeripheral_advCallback, &advParamLegacy,
&advHandleLegacy);


// Load advertising data for set #1 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleLegacy, GAP_ADV_DATA_TYPE_ADV,
sizeof(advertData), advertData);


// Load scan response data for set #1 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleLegacy, GAP_ADV_DATA_TYPE_SCAN_RSP,
sizeof(scanRspData), scanRspData);

// Set event mask for set #1
status = GapAdv_setEventMask(advHandleLegacy,
GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
GAP_ADV_EVT_MASK_SET_TERMINATED);

uint16_t advIntmin = DEFAULT_ADVERTISING_INTERVAL_MIN;
uint16_t advIntmax = DEFAULT_ADVERTISING_INTERVAL_MAX;
GapAdv_setParam(advHandleLegacy,GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN,&advIntmin);
GapAdv_setParam(advHandleLegacy,GAP_ADV_PARAM_PRIMARY_INTERVAL_MAX,&advIntmax);


// Enable legacy advertising for set #1
status = GapAdv_enable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);

这么设置广播间隔还是5-7ms,请问应该怎么处理?

  • 要更改广告间隔,需要修改 .primIntMin 和 .primIntMax,该变量的单位为 0.625 ms (160 = ~ 100 ms)

    可以在 simple_peripheral.c 添加以下代码(修改为200ms):

    /// Custom parameters for legacy, scannable, connectable advertising
    /// 200 ms advertising interval
    #define GAPADV_PARAMS_LEGACY_SCANN_CONN_200MS {                                  \
      .eventProps = GAP_ADV_PROP_CONNECTABLE | GAP_ADV_PROP_SCANNABLE |        \
                    GAP_ADV_PROP_LEGACY,                                       \
      .primIntMin = 320,                                                       \
      .primIntMax = 320,                                                       \
      .primChanMap = GAP_ADV_CHAN_ALL,                                         \
      .peerAddrType = PEER_ADDRTYPE_PUBLIC_OR_PUBLIC_ID,                       \
      .peerAddr = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa },                      \
      .filterPolicy = GAP_ADV_WL_POLICY_ANY_REQ,                               \
      .txPower = GAP_ADV_TX_POWER_NO_PREFERENCE,                               \
      .primPhy = GAP_ADV_PRIM_PHY_1_MBPS,                                      \
      .secPhy = GAP_ADV_SEC_PHY_1_MBPS,                                        \
      .sid = 0                                                                 \
    }
    
    /// In simple_peripheral.c, change the above line to:
    
    // Temporary memory for advertising parameters for set #1. These will be copied
            // by the GapAdv module
            GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN_200MS;

    然后找到 GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN;将其改为:

    GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN_200MS;

  • 嗨,您好,您这种方法可以设置固定的广播间隔。如果我想在广播初期使用一种间隔,后面又使用另一种广播间隔,该如何设置呢?

       期待您的回复。

    祝好