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.

[FAQ] CC2642R: Periodic Advertising with CC2642R / CC2652R7

Part Number: CC2642R
Other Parts Discussed in Thread: CC2652R, CC2652R7, SYSCONFIG

Hi,

Here are some steps to enable periodic advertising on CC2642R, CC2652R or CC2652R7.

This guide assumes you are using the simple_peripheral example for the device selected. This guide has been tested on SDK 7.10.00.98.

1- Enable support for Periodic Advertising in SysConfig

2- Create a new advertising set in SysConfig

3- Setup the advertising data for the newly created advertisement set

4- Save and close SysConfig

5- (Optional) Disable the other advertisements set by commenting out the "GapAdv_enable" commands found

6- Add the global data needed

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Create non connectable & non scannable advertising
#define GAPADV_PARAMS_AE_NC_NS { \
.eventProps = 0, \
.primIntMin = 160, \
.primIntMax = 160, \
.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 = 1 \
}
static uint8 advHandleNCNS; // Non-Connactable & Non-Scannable
// Periodic Advertising Data
static uint8_t periodicData[] =
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

7- Add the following code at the end of the handling of the GAP_DEVICE_INIT_DONE_EVENT event in SimplePeripheral_processGapMessage()

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Create Advertisement set #3 and assign handle
GapAdv_params_t advParamNonConn = GAPADV_PARAMS_AE_NC_NS;
status = GapAdv_create(&SimplePeripheral_advCallback, &advParamNonConn,
&advHandleNCNS);
// Load advertising data for set #3 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleNCNS, GAP_ADV_DATA_TYPE_ADV,
sizeof(advData3), advData3);
// Set event mask for set #3
status = GapAdv_setEventMask(advHandleNCNS,
GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
GAP_ADV_EVT_MASK_SET_TERMINATED);
// Enable non connectable & non scannable advertising for set #3
// This is a must in order to enable periodic advertisement
status = GapAdv_enable(advHandleNCNS, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

8- Add the handling for GAP_ADV_SET_PERIODIC_ADV_PARAMS_EVENT and GAP_ADV_SET_PERIODIC_ADV_DATA_EVENT events within SimplePeripheral_processGapMessage()

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
case GAP_ADV_SET_PERIODIC_ADV_PARAMS_EVENT:
{
uint8_t status;
GapAdv_periodicAdvData_t periodicDataParams = {0x03, sizeof(periodicData), periodicData};
status = GapAdv_SetPeriodicAdvData(advHandleNCNS, &periodicDataParams);
}
break;
case GAP_ADV_SET_PERIODIC_ADV_DATA_EVENT:
{
uint8_t status;
status = GapAdv_SetPeriodicAdvEnable(1, advHandleNCNS);
}
break;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

9- (Optional) Enable the RF Observables as described in the Debugging Guide (really useful when not having a Bluetooth Sniffer).
In main.c add the following include: "#include <driverlib/ioc.h>"

Then add the following code right after Board_initGeneral()

Fullscreen
1
2
3
4
5
6
// Map LNA enable pin RFC_GPO0 to DIO6
IOCPortConfigureSet(IOID_6, IOC_PORT_RFC_GPO0,
IOC_IOMODE_NORMAL);
// Map Tx start pin RFC_GPO3 to DIO7
IOCPortConfigureSet(IOID_7, IOC_PORT_RFC_GPO3,
IOC_IOMODE_NORMAL);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

10- Build the code and flash the device

Hexfile for CC26X2R1 LaunchPad enabling periodic advertising: /cfs-file/__key/communityserver-components-multipleuploadfilemanager/d35fa551_2D00_8bfa_2D00_42ea_2D00_8c7f_2D00_ea501b1a1ce7-370266-complete/simple_5F00_peripheral_5F00_CC26X2R1_5F00_LAUNCHXL_5F00_tirtos7_5F00_ticlang.hex

Hexfile for CC2652R7 LaunchPad enabling periodic advertising: /cfs-file/__key/communityserver-discussions-components-files/538/simple_5F00_peripheral_5F00_LP_5F00_CC2652R7_5F00_tirtos7_5F00_ticlang.hex

Please also check Synchronizing with a periodic advertising train - https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1295835/faq-cc2642r-synchronizing-with-a-periodic-advertising-train-cc2642r-cc2652r7

I hope this will help,

Best regards,