I have been trying to get my Nordic nRF51822 transmit continuously on a particular channel for FCC certification. The Test lab wants me to test the product in 2402MHz, 2442MHz , 2480MHz. They want me to transmit in these frequencies separately. After few searches in the devzone forum, I was able to find the code which does the same in SDK(Radio Test Example in the \examples\peripheral\radio_test folder).
After going through the code, I realized that the code works with an UART interface with PC. But the issue is I havent given external access to any pins on my product for UART access to control from my PC.
So here is what I did, I edited the code so that the parameters which are set via UART are hard coded in the code like channel_start_ , test parameters so that they dont need to be send via PC to get activated. I am attaching my main.c file. (Its almost same as the original radio test example, I have just commented out the switch cases and hard-coded the parameters for a particular frequency.)
I erased the device completely, then programed just the radio test example. I tested the code in the test lab and to my dismay the device was not transmitting in the defined frequencies(I didn't find any spikes in the spectrum analyzer, once the there was a particular spike at 2442 MHz when the channel_start_ was set to 0, which shouldn't ideally happen) and I wasted half a day in the lab trying to fix the code but failed figure out why the device was not working.
Following are my queries
Can someone please see the attached main.c file see if I am doing some obvious blunder which I am clearly not realizing?
Assuming this issue is fixed, is there any other way to switch the transmitting frequency mode not via UART or an external input. (I am assuming no, but a wireless way would be nice :D )
Non- Nordic related question. Is there a cheap spectrum analyzer(or similar, I am not looking for accurate power measurements) which I can buy to test if the device is transmitting in the correct frequency, before I do a visit to the test lab again, I have shortlisted this one to buy. Any suggestions to test the channel frequencies at home.
Thanks in advance.
1) From what I can see in your code, the radio is never set to start transmitting, the function radio_tx_sweep_start(..) makes it start transmitting. For your reference, I have attached a modified version…
1) From what I can see in your code, the radio is never set to start transmitting, the function radio_tx_sweep_start(..) makes it start transmitting. For your reference, I have attached a modified version of the radio test example that is set up to transmit one channel: radio_test_setup_one_channel.zip (SDK 11, folder: ..\examples\peripheral)
2) You can use a timer to make the radio_test example switch frequency every given time interval.
3) It looks like Triarchy Technologies has some smaller and cheaper spectrum analyzers.
Note that in addition to check the output power in the in the 2.4 GHz band, FCC does also have maximum radiation requirements for the harmonics and RX Lo. For FCC, the maximum peak level for the harmonics is -21 dBm, and the average for the harmonics should be less than -41 dBm. RX Lo should be less than - 41 dBm. I would recommend you to have a few dB margin to those requirements, in order to make sure that you pass.
The middle of the harmonic bands will be at approximately 4.85 GHz, 7.3 GHz, 9.75 GHz, 12.2 GHz, and the RX Lo and RX Lo/2 will have center frequency at 2.79 GHz and 1.395 GHz, respectively.
I would recommend you to take a look at the whitepaper "Regulatory and Compliance Standards for RF Devices"
That should I ideally solve it. I thought radio_tx_sweep_start was only channel sweep. My mistake.
Regarding the emissions, Thanks for the inputs, I was under the limits for fundamental and higher when I was "using" the advertising channels for testing. :)