TI中文支持网
TI专业的中文技术问题搜集分享网站

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,请问应该怎么处理?

Kevin Qiu1:

要更改广告间隔,需要修改 .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 moduleGapAdv_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;

,

peng wang:

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

   期待您的回复。

祝好

,

Kevin Qiu1:

按照任务3中的步骤操作可以在运行时改变广播间隔:

https://dev.ti.com/tirex/content/simplelink_academy_cc13xx_cc26xxsdk_6_10_01_00/modules/ble5stack/ble_scan_adv_basic/ble_scan_adv_basic.html

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F: 设置广播间隔不成功
分享到: 更多 (0)