Other Parts Discussed in Thread: CC2652R7, SYSCONFIG
Thread 中讨论的其他器件: SysConfig、 SysBIOS
您好!
我在定制电路板上使用的是 cc2652r7。 在固件开发中、我使用了 BLE5堆栈中的简单外设示例。
我希望我的器件每隔5秒广播一次、不可连接的、扫描的、并且只广播一个数据包、我 已经实现了以下代码。
问题是、我在 ~5秒内得到~3-4个数据包。 我不能找到哪里出了问题,请让我知道你对此的回答。
提前感谢。
代码片段:
// if(nvs_ReadData==1)
{
LedInterval=5000;
advParams1.primIntMin=NormalAdvinterval; (5000/0.625)
advParams1.primIntMax=NormalAdvinterval; (5000/0.625)
advParams1.eventProps= GAP_ADV_PROP_LEGACY | GAP_ADV_PROP_SCANNABLE;
}
// Create Advertisement set #1 and assign handle
status = GapAdv_create(&SimplePeripheral_advCallback, &advParams1,
&advHandleLegacy);
SIMPLEPERIPHERAL_ASSERT(status == SUCCESS);
advertData2[0] = 0x02; // Length of this data
advertData2[1] = GAP_ADTYPE_FLAGS;
advertData2[2] = GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED|GAP_ADTYPE_FLAGS_GENERAL;
// Add Manufacturer specific data
advertData2[3]= ADV_DATA_LEN ; //Length of this data
advertData2[4]= GAP_ADTYPE_MANUFACTURER_SPECIFIC;
memcpy( &advertData2[5],StartofPacket,2); //Start of packet 2bytes
memcpy( &advertData2[7],adDeviceName,ADV_DEVICE_NAME_LEN); // Device Name 8bytes
advertData2[15]= HW_version[0]; //HW version
advertData2[16]= HW_version[1]; //HW version
advertData2[17]= SW_version[0]; //SW version
advertData2[18]= SW_version[1]; //SW version
memcpy(&advertData2[19],systemAddress,6);
advertData2[25]=Reserved; //application
occpancystatus[0] = GPIO_read(KEY_GPIO0);
advertData2[26]=occpancystatus[0]; //application
advertData2[27]= Battery_level; //application
memcpy( &advertData2[28],EndofPacket,2);
// Load advertising data for set #1 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleLegacy, GAP_ADV_DATA_TYPE_ADV,
sizeof(advertData2), advertData2);
SIMPLEPERIPHERAL_ASSERT(status == SUCCESS);
// 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(scanResData1), scanResData1);
// SIMPLEPERIPHERAL_ASSERT(status == SUCCESS);
// 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_END);
// Enable legacy advertising for set #1
/* @ref GAP_ADV_ENABLE_OPTIONS_USE_DURATION, this is the time
* (in 10 ms ticks) to advertise before stopping where the range is 10
* ms - 655,540 ms <br>*/
status = GapAdv_enable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);