ADRV9009
Recommended for New Designs
The ADRV9009 is a highly integrated, radio frequency (RF), agile transceiver offering dual transmitters and receivers, integrated synthesizers, and digital...
Datasheet
ADRV9009 on Analog.com
I tried to enable the LOL tracking calibration on my ADRV9009 project. I enabled both QEC and LOL tracking calibration.
I initially used TALISE_setArmGpioPins to tell ARM TX_GPIO_08 and TX_GPIO_09 are assigned to ORX_TX_SEL0 and ORX_TX_SEL1 respectively. And I toggled the TX_GPIO_08 and TX_GPIO_09 so ARM knows the Tx1/2 to Orx1 path is established, hence the ARM shall schedule the calibration. But the report only showed the QEC tracking calibration was complete. the LOL calibration has no errors but no complete either. In my case I used TX_GPIO_01-07 to map to GPIO3v3, so the TX_GPIO_01-07 output were level translated into 3.3v and available on TX_GPIO3v3_01-07 output. Also I allocate the enough time (5sec) to the LOL tracking calibration by keeping the TX_GPIO_08 and TX_GPIO_09 in the same state during this 5 sec period.
Due to the above method didn't work. I then used TALISE_setTxToOrxMapping to tell ARM the the Tx1/2 to Orx1 path is established. I assume this will allow ARM to schedule the LOL tracking calibration but it still had the same outcome: no errors and no completion.
Any suggestion?
Can you please share the TX LOL calibration status log using TALISE_getTxLolStatus() API , please print the error Code, iterCount and update count as well .
Are you enabling the TX LOL tracking cal using enableTrackingCals() API and also the radio must be in ON state while enabling the calibration.
Please refer to "ADRV9009 Transmitter LO Leakage Tracking Calibration" page 179 and "System Considerations for Tracking Calibrations" section for more details from UG.
Yes, I enabled the TX LOL tracking cal. And the Radio was turned on after talise_setup was called.
The status returned from TALISE_getTxLolStatus is always:
Cal Status: error: 0, percentage 0, iterCount: 53, update count: 53
Is the iter and update count incrementing while checking the TALISE_getTxLolStatus() API or stuck with iter and update count of 53? If its incrementing , it means that the LOL cal is running.
Kindly ignore the percentage parameter , we should consider the error , iter and update count to ensure that the cal is running.
It stuck with the iter and update count of 53.
Is there any sugguestion?
The Arm processor scheduler must know which feedback is currently available so to schedule the correct transmitter LO leakage tracking calibrations.
We will need the feedback path for the external LOL cal to run and to get the specified performance of LO leakage level.
Is the TX to ORx mapping set properly as per your desired configuration? Also, please crosscheck the mapping as shown below

Is the iter count incrementing alone incrementing, can you run the LOL cal for few iterations say 20, and check the TX LOL status.
Can you please go through the ARM GPIO PINS" and "ADRV9008-2 and ADRV9009 Transmitter LO Leakage Tracking Calibration" section in the UG (PAGE 181) and crosscheck the required configuration.
As I said, I used TALISE_setTxToOrxMapping(pd, 1, TAL_MAP_TX1_ORX, TAL_MAP_NONE) so ARM knows the Tx1 to Orx1 path is established. And I also enabled the transmitter LO leakage tracking calibration. But I can't see iter counter incrementing.
You requested me the run LOL cal for few iterations, I don't know how to control it.
Also, the iter count and update count was locked to 53. That means it did finish a number of calibrations. But why it stopped incrementing. Again I never see the iter count incrementing.
Another question: Does the LOL tracking calibration support both internal and external LO calibration? Or it only do for the external.
You requested me the run LOL cal for few iterations, I don't know how to control it.
Can you try implementing below block of code in python in your system and send me the log of the LOL status.

Does the LOL tracking calibration support both internal and external LO calibration? Or it only do for the external.
It supports both internal and external LO calibration . Refer to Figure 108 and 109 for more details.

I did the equivalent C code of your python code after the adrv9009 setup done and radio was turned on and result is,
Tx LOL Trackign Cals Status ErrorCode 0 PercentComplete 0 VarianceMetric 0 IterCount 53 UpdateCount 53
It repeated the same for each iteration of the loop.
I was using my custom adrv9008-2 board for the test.
I used TALISE_setTxToOrxMapping(pd, 1, TAL_MAP_TX1_ORX, TAL_MAP_NONE) so ARM knows the Tx1 to Orx1 path is established
Can you try setting the orx mapping to TAL_MAP_TX1_ORX and see if the cal runs?


Are you using external LO or Internal LO calibration? Is the Tx fed back to Orx path?
As the QEC cal is running , this seems to be mostly a mapping issue .
Can you please have a look at page 173 in UG for running the calibrations.