Hello,
I want to set LO frequency of ORx path to a different value than the Tx path, so I want to set the LO source of the ORx to AUX_PLL.
I have set the talInit.obsRx.obsRxLoSource = TAL_AUX_PLL in the initialization of taliseInit_t,also I have called the TALISE_setOrxLoSource after initial calibration.
But none of these works,I find that the LO of ORx remains the same as Tx,and I called TALISE_getOrxLoSource to show that the orx1LoSource and orx2LoSource are both TAL_OBSLO_RF_PLL.
Here is my configuration PLL process(initialization is already done):
//Turn off Radio talAction = TALISE_radioOff(&talDevice); if(talAction != TALACT_NO_ACTION) return 5; //Setup Pll Frequency talAction = TALISE_setRfPllFrequency(&talDevice, TAL_RF_PLL, freqRfPllHz); if(talAction != TALACT_NO_ACTION) return 7; //CLKPLL Status Check uint8_t pllLockStatus = 0; talAction = TALISE_getPllsLockStatus(&talDevice, &pllLockStatus); if(talAction != TALACT_NO_ACTION) return 8; if(pllLockStatus != 7) return 9; uint32_t initCalibMask = TAL_TX_ATTENUATION_DELAY | /*!< Tx attenuation delay calibration */ TAL_PATH_DELAY | /*!< Path delay equalization calibration */ TAL_TX_QEC_INIT | /*!< Tx quadrature error correction calibration */ TAL_TX_LO_LEAKAGE_INTERNAL | /*!< Internal Tx LO leakage calibration */ TAL_TX_LO_LEAKAGE_EXTERNAL | /*!< External Tx LO leakage calibration */ TAL_RX_PHASE_CORRECTION | /*!< Rx Phase correction calibration */ TAL_TX_BB_FILTER | /*!< Tx BB filter calibration */ TAL_ADC_TUNER | /*!< ADC tuner calibration */ TAL_TIA_3DB_CORNER | /*!< TIA 3dB corner calibration */ TAL_DC_OFFSET | /*!< DC offset calibration */ TAL_FLASH_CAL | /*!< Flash converter comparator calibration */ TAL_TX_DAC | /*!< Tx DAC passband calibration */ TAL_RX_GAIN_DELAY | /*!< Rx gain delay calibration */ 0; //Run Talise ARM Initialization Calibrations talAction = TALISE_runInitCals(&talDevice, initCalibMask); if(talAction != TALACT_NO_ACTION) return 10; uint8_t errorFlag = 0; talAction = TALISE_waitInitCals(&talDevice, 20000, &errorFlag); if(errorFlag != 0) return 11; if(talAction != TALACT_NO_ACTION) return 12; trackingCalibMask = TAL_TRACK_RX1_QEC | TAL_TRACK_RX2_QEC | TAL_TRACK_ORX1_QEC | TAL_TRACK_ORX1_QEC | TAL_TRACK_TX1_QEC | TAL_TRACK_TX2_QEC | TAL_TRACK_TX1_LOL | TAL_TRACK_TX2_LOL | TAL_TRACK_RX1_HD2 | TAL_TRACK_RX2_HD2 ; //Allow Tracking Calib talAction = TALISE_enableTrackingCals(&talDevice, trackingCalibMask); if(talAction != TALACT_NO_ACTION) return 19; //set ORx LO Source talAction = TALISE_setOrxLoSource(&talDevice, TAL_OBSLO_AUX_PLL); if(talAction != TALACT_NO_ACTION) return 24; talAction = TALISE_setRfPllFrequency(&talDevice, TAL_AUX_PLL, freqAuxPllHz); if(talAction != TALACT_NO_ACTION) return 6; //Turn on Radio talAction = TALISE_radioOn(&talDevice); if(talAction != TALACT_NO_ACTION) return 20; //Set Radio Enable talAction = TALISE_setRxTxEnable(&talDevice, TAL_ORX1ORX2_EN, TAL_TX1TX2); if(talAction != TALACT_NO_ACTION) return 23;
All three PLLs are locked, and self calibration went well. I don't know what wrong with my configuration, is the configured of the calibration not correctly?
Thank you very much!