This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Does SDK radio_test example actually set BLE channel or frequency?

We are in the process of getting our product through SRRC certification in China. I am using the radio_test example from SDK 11.0 for this. All is working fine.

However, I am confused by the channel selection parameters. I've been looking for similar questions but have not found any, so I decided to post it here.

Everywhere in the docs/code it is mentioned that you can set the radio to a specific channel by setting the 'channel_start_' and 'channel_end_' parameters.And indeed, in radio_test.c the channel is passed as parameter 'channel' to the carrier functions. But then the channel value is passed to the radio registers as follows:

NRF_RADIO->FREQUENCY  = channel;

Taking a look at the actual radio frequency register in the datasheet (RADIO BASE 0x40001000 + OFFSET 'FREQUENCY' 0x508) tells me the following:

Radio channel frequency
Frequency = 2400 + FREQUENCY (MHz).

Source:

https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fradio.html&cp=4_2_0_22_13_8&anchor=register.FREQUENCY

And thus I believe that we are actually setting frequencies here and not channels. For example: BLE channel 2 should result in a signal at 2408MHz, but in the current implementation results in 2402 MHz (which is actually BLE channel 37). 

Or am I wrong in assuming BLE channels while they are actually Bluetooth Classic channels? This would explain why for example a non-BLE frequency of 2401 MHz can be set. But I understood that all NRF chips only support BLE, so that would be confusing as well. If this is the case, do I need to set a different radio mode to ensure that only BLE frequencies are supported?

Any tips are appreciated.

  • Hi,

    I understand the confusion and you're correct in your assumption that the channel is actually setting the frequency. I agree that channel can be a confusing name as many will relate it to BLE channels. However, the radio test example isn't made specifically for BLE but for the radio itself, and our radio supports more protocols then just BLE. Many of these radio protocols has a different way of defining a channel. Setting the frequency directly was probably therefore chosen to be the method that fitted best. Again, I agree that channel is a bad variable name as it can confuse developers, I'll pass the feedback to the developers.

    Thank you,

    best regards

    Jared 

  • Hi Jared,

    Thanks for your quick reply and the clarification!

    One final question: do I need to set the radio mode to 'RADIO_MODE_MODE_Ble_1Mbit' for SRRC BLE certification testing, or is this irrelevant? 

Related