CC2652R: Channels 37,38,39 seen on the spectrum analyzer when Advertisement configured for only one channel

Part Number: CC2652R

Tool/software:

Dear TI team, 

For our customer we are creating a software that suppose to advertise data on one channel at a time (channel selection by serial command). 

We created 3 handle for broadcasting, 3 `GapAdv_params_t` structures and 3 `BLEAppUtil_AdvInit_t` where each define a configuration for one of the channels. 
We also create one `BLEAppUtil_AdvStart_t` because it stores exactly the same data for each of channel. 

Fullscreen
1
2
3
4
5
6
7
GapAdv_params_t advParams_37 = {.... .primChanMap = GAP_ADV_CHAN_37, ... };
GapAdv_params_t advParams_38 = {.... .primChanMap = GAP_ADV_CHAN_38, ... };
GapAdv_params_t advParams_39 = {.... .primChanMap = GAP_ADV_CHAN_39, ... };
BLEAppUtil_AdvInit_t `broadcasterInitSettings_37 = { ... .advParam = &advParams_37, ...};
BLEAppUtil_AdvInit_t `broadcasterInitSettings_38 = { ... .advParam = &advParams_38, ...};
BLEAppUtil_AdvInit_t `broadcasterInitSettings_39 = { ... .advParam = &advParams_39, ...};
BLEAppUtil_AdvStart_t broadcasterStartSettings = { .... };
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


We are using BleAppUtil as the API to get access to the Ble stack. 
In the `initDoneHandler` callback we register eventHandler for `BLEAPPUTIL_GAP_ADV_TYPE` and call `BLEAppUtil_initAdvSet` for each of the channel 
Fullscreen
1
2
3
BLEAppUtil_initAdvSet(&broadcasterAdvHandle_37, &broadcasterInitSettings_37);
BLEAppUtil_initAdvSet(&broadcasterAdvHandle_38, &broadcasterInitSettings_38);
BLEAppUtil_initAdvSet(&broadcasterAdvHandle_39, &broadcasterInitSettings_39);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


When the serial command arrive with channel number we stop advertising on all channels and start advertising only on selected channel. 
Fullscreen
1
2
3
4
5
6
7
BLEAppUtil_advStop(broadcasterAdvHandle_37);
BLEAppUtil_advStop(broadcasterAdvHandle_38);
BLEAppUtil_advStop(broadcasterAdvHandle_39);
case 37: BLEAppUtil_advStart(broadcasterAdvHandle_37, &broadcasterStartSettings); break;
case 38: BLEAppUtil_advStart(broadcasterAdvHandle_38, &broadcasterStartSettings); break;
case 39: BLEAppUtil_advStart(broadcasterAdvHandle_39, &broadcasterStartSettings); break;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX



On the other device we implemented a AdvScanner firmware that prints received Advertisement packets and the channel on which the data were received.
To confirm and prove that both firmware works properly we also used nrf dk52 with Sniffer firmware and Wireshark. 


Everything looks and works good. We select channel, on the scanner and Sniffer we see data from only selected channel. - Looks perfect.
Until the device was taken to the laboratory and spectrum analyzer was connected to the antena and then all three channels were visible as could be seen on the image. 

The tests failed because there should be only one spike on one channel only. 
Why do we see all three of them?
How we can make sure that only one channel is active in the advertising process? 



Best regards 
Kamil