ADRV9029
Recommended for New Designs
The ADRV9029 is a highly integrated, radio frequency (RF) agile transceiver offering four independently controlled transmitters, dedicated observation...
Datasheet
ADRV9029 on Analog.com
Hi,
Looking for some advice about calibrations on the ADRV9029 device.
We are using a custom board design and transmitting a CW signal. We are using some third party software libraries which are effectively wrappers around the Analog Devices ADRV902x transceiver-based API code, so calls to "adi_adrv9025_" functions.
The issue we have is that we are having unreliable responses to calibrations often seeing LO leakage signal much larger than expected and even getting up to the same level as out CW signal!
Our software does initialization sequences to set up the JESD links and enable the device. It does an initial calibration sequence using a calibration mask to select several of the RX calibrations and then we revert to just having Rx tracking enabled. Prior to enabling the transmission of the CW signal, we apply a TX attenuation level and then run another calibration process choosing ADI_ADRV9025_INTERNAL_PATH_DELAY, ADI_ADRV9025_TX_LO_LEAKAGE_INTERNAL and ADI_ADRV9025_TX_QEC_INIT calibrations. We ensure to stop all tracking whilst running this calibration, and when it returns successfully we restore the tracking state and set the Tx attenuation level again (as we believe it may be altered during the calibration process). We find that as we try different attenuation levels then we get very different LO leakage values. The results are repeatable between power cycles.
Although we don't believe this is a proper, long term solution, we have a work around whereby we apply 0dB attenuation before doing the TX calibrations and then set the desired attenuation level again after. This appears to give acceptable LO leakage values but we don't understand why as we thought the level should not really affect the calibration process?
Here is a few results to demonstrate the sort of LO leakage values we get.
| Tx Calibration with required tx atten | Tx Calibration fixed at 0dB for tx atten | |||||||||||
| bb gain = 0.9 | CW @ 464 MHz, LO @ 482 MHz | bb gain = 0.9 | CW @ 464 MHz, LO @ 482 MHz | |||||||||
| tx atten | CW | LO | CW Reflection | CW/LO Delta | tx atten | CW | LO | CW Reflection | CW/LO Delta | |||
| 0 | 3 | -66 | -62 | 69 | 0 | 3 | -68 | -64 | 71 | |||
| -1 | 2 | -69 | -42 | 71 | -1 | 2 | -66 | -66 | 68 | |||
| -5 | -1 | -52 | -49 | 51 | -5 | -1 | -81 | -58 | 80 | |||
| -10 | -6 | -48 | -70 | 42 | -10 | -6 | -76 | -53 | 70 | |||
| -15 | -12 | -15 | -39 | 3 | -15 | -11 | -69 | -55 | 58 | |||
| -20 | -16 | -43 | N/A | 27 | -20 | -16 | -66 | -62 | 50 | |||
We have also tried running equivalent software routines on the ADRV9029 development board, connected to the Xilinx ZCU dev board. In this scenario the ADV902x linux driver is used and iio function calls are made to configure the transceiver. In this set-up then the LO leakage value always appears to be OK. As far as I can tell the linux driver is not doing anything particularly different...
| Tx Calibration with required tx atten | |||||
| bb gain = 0.9 | CW @ 464 MHz, LO @ 482 MHz | ||||
| tx atten | CW | LO | CW Reflection | CW/LO Delta | |
| 0 | 3 | -60 | -78 | 63 | |
| -1 | 2 | -61 | -69 | 63 | |
| -5 | -1 | -67 | -79 | 66 | |
| -10 | -6 | -75 | -84 | 69 | |
| -15 | -11 | -80 | N/A | 69 | |
| -20 | -16 | -85 | N/A | 69 | |
We would appreciate any input you have on this subject from your experience and guidance on what the correct procedure should be.
Thanks
Steve
The LOL tracking calibration also must be run and the LOL tracking calibration expects the Tx to ORX mapping and the external Tx to ORX feedback path. If you don't run LOL tracking calibration and if its still varying, then there could be some problem with the LOL init cal which may be related to matching.

Thanks for your reply Ramarao. We are using ADI_ADRV9025_TX_LO_LEAKAGE_INTERNAL for the initial calibration, so not expecting to have do any TX to ORX mapping.