adjusting RF channel used to transmit.

This previous case is an example of what i am trying to do.Reconfifure the radio parameters.

 nRF52840 BLE/NFC compliance testing, How to Change Channel & which tool to use ? 

 Using example code does not work for me. the DUT has other aspects that need to be EMC compliant, firmware is required to drive these aspects. I also have no access to a serial or UART port on the DUT. So, i cannot simply load example code in (which doesn't complile and run properly anyway!). Additionaly, i dont see this being a valid test platform, even if i did have uart communications on my board. This is not representative of the devices normal operation, so just loading example code in for compliance testing does not seem legitimate?

Having dug through this example i am trying to use some of the functions that the example uses, to make basic adjustments to the physical characteristics of the radio output.

This is for pre-compliance testing. Thus relatively informal.

As per the attached thread. I am starting by trying to simply adjust the channel on which the device transmits. - nothing complex. Just this to start with.

I am trying to do this with the following function. Currently this is run while the device is advertising (possibly part of my problem?) and throws up errors. Beleive the error is softdevice invalid memory access, what must i do to the ble to be able to adjust channel number during operation?


radio_channel_set(NRF_RADIO_MODE_BLE_1MBIT,0);

I can find no obvious set of rules for this function and next to no useful/meaningful documentation for it. But it clearly pretains to what i need to do.

Note: I do not want to pursue some highly abstracted solution. I am on a tight deadline and have tried including the radio_cmd file & other solutions that do not directly call the nrf_radio functions, but i faced endless dependancy issues that i simply dont have time to solve). I just need this function to work when called directly.

Parents
  • Note: I have now implemented the following code

     APP_ERROR_CHECK(nrf_sdh_disable_request());        //stop SD to avoid access error
     radio_channel_set(NRF_RADIO_MODE_BLE_1MBIT,1);     //change channel.
     ble_init(false);                                   //re-init ble & stack, arguement allows me to qvoid re-initialising queued write module
                                                        //(no useful documentation as to what this does, but error avoided by not re-initialising)
     ble_adv_start();                                   //Begin avertising.

    This appeared to work, although i do not have a spectrum analyser, and the RSSI viewer tool on nrfconnect just straight up doesn't work (wont detect or program connected dev kit). so i cannot prove if this has changed channel or not.

    I have realised however this does not produce a continuous transmission that would be suitable for precompliance testing.

    instead i found a 7 year old - unanswered forum post suggesting the use of the following function:

    radio_unmodulated_tx_carrier();

    However, when called (with comparable arguements to the "radio_channel_set" function, the board appears to lock up, the flashing LED on the board locks up (uses a timer instance?) & I have no further evidence of what the board is doing. No errors returned to be seen.

Reply
  • Note: I have now implemented the following code

     APP_ERROR_CHECK(nrf_sdh_disable_request());        //stop SD to avoid access error
     radio_channel_set(NRF_RADIO_MODE_BLE_1MBIT,1);     //change channel.
     ble_init(false);                                   //re-init ble & stack, arguement allows me to qvoid re-initialising queued write module
                                                        //(no useful documentation as to what this does, but error avoided by not re-initialising)
     ble_adv_start();                                   //Begin avertising.

    This appeared to work, although i do not have a spectrum analyser, and the RSSI viewer tool on nrfconnect just straight up doesn't work (wont detect or program connected dev kit). so i cannot prove if this has changed channel or not.

    I have realised however this does not produce a continuous transmission that would be suitable for precompliance testing.

    instead i found a 7 year old - unanswered forum post suggesting the use of the following function:

    radio_unmodulated_tx_carrier();

    However, when called (with comparable arguements to the "radio_channel_set" function, the board appears to lock up, the flashing LED on the board locks up (uses a timer instance?) & I have no further evidence of what the board is doing. No errors returned to be seen.

Children
No Data
Related