FAQ: How to improve adjacent channel selectivity on AX5043?

Q: How to improve adjacent channel selectivity on AX5043?

A: Try activating the VCOI calibration (top left in the RadioLAB Pinconfig panel).

The calibration requires a connection from the FILT pin to pin 25 via 12k Ohm and a 10 nF capacitor from pin 25 to GND. On our DVK module v1.7 these components are NC, but there are pads on the PCB. R1=12 kOhm, C2= 1 nF.

If you want to make a “manual” experiment which does not require the above connection, you could measure the spectrum in TX mode and vary the PLLVCOI register until you find the best phase noise performance. [If you lack a spectrum analyzer you can also enable bit 3 of the PLLLOOP register and measure the voltage at pin 8. The best PLLVCOI setting is the one with where the voltage is minimal.]

In addition to the PLLVCOI setting you can also try the following: Change “Channel spacing” from 50k to 25k. (This causes PLLCPI in RX mode to change from 0x20 to 0x2 and PLLLOP in TX mode to change from 0x0b to 0x09]. This should improve the selectivity close in, but at the price of worsening it for df > 100 kHz.

For more details on the VCOI Current Calibration routine check out the AND9858 application note.

I can’t find any information to explain this chart, can you help me analyze it?

Hi Justin, the app note AND9858-D describes the steps taken by the VCO calibration routine.
By enabling this calibration from the “Pin Configuration” panel in RadioLab, the FW automatically executes such optimization selecting within your application the optimal VCO current for achieving best phase noise.

What you see in the graphs above is a debugging feature to visualize the “raw data” from the calibration routine, and for getting multiple VCO Range values for different channels, so that a user can then hard code these values in their projects. Be aware that this VCO Calib project overrides any TX/RX/TEST project that you may be running. In more detail, the two graphs you posted:

  • Top graph shows what optimal “VCO range” was found for a range of frequencies (thus a specific VCORA-B in PLLRANGING, and specific current in PLLVCOI register, see Programming Manual).
  • Bottom graph is the raw data from the FILT pin as sampled by the ADC with varying VCOI (same as Figure 5 in AND9858-D)

Hope this helps,

When I use the VCO calibration function at 169MHz, everything is normal, but when I change the FAQ: How to operate AX5043 at 27 MHz, the information cannot be obtained normally using VCO calibration. What items should I pay attention to?


Hi Justin, it`s not clear to me what kind of issues are you experiencing.
The “VCO Calibration” project was not tested over all the frequency range and is intended only for expert use.
Nevertheless, what you are getting as output “END 001000000 05A00000 23F00000 00040000” means that you set freqstart 05A00000 (94 MHz), freqend 23F00000 (602 MHz), freqinc 00040000 (262 kHz). I think your issue is that you need to change the frequency sweep range in configvcocal.c to a lower FREQSTART.

Hello georgi:

// Spec: Internal 800MHz…1050MHz External 140MHz…525MHz

#define FREQINC 0x55555
#define FREQSTART 700
#define FREQEND 1150
const uint32_t __code freqinc = FREQINC;
const uint32_t __code freqincmhz = 0x55555;
const uint32_t __code freqstart = FREQSTART * FREQINC;
const uint32_t __code freqend = FREQEND * FREQINC;
#undef FREQINC
#undef FREQEND
How do I calculate the FREQSTART and FREQEND values

Hi Justin. The FREQSTART/FREQEND parameters in configvcocal.c are expressed in MHz and then ‘translated’ in hex by the FW.