Post Go back to editing

Can't set Tx Atten during Initial Calibrations.

Category: Software
Product Number: 9375

We are using the 9375 with DPD.  We are running the initial calibrations in two phases as suggested in the UG.  Sample code shown below...

MYKONOS_setTx1Attenuation(&mykDevice, 3000);  // 3 dB

MYKONOS_setTx2Attenuation(&mykDevice, 3000);  // 3 dB

initCalMask = TX_BB_FILTER |
ADC_TUNER |
TIA_3DB_CORNER |
DC_OFFSET |
TX_ATTENUATION_DELAY |
RX_GAIN_DELAY |
FLASH_CAL |
PATH_DELAY |
TX_LO_LEAKAGE_INTERNAL |
TX_QEC_INIT |
LOOPBACK_RX_LO_DELAY |
LOOPBACK_RX_RX_QEC_INIT |
RX_LO_DELAY |
RX_QEC_INIT;

MYKONOS_runInitCals(&mykDevice, initCalMask);

MYKONOS_waitInitCals(&mykDevice, 10000, &errorFlag, &errorCode);

/* Here we setup our RF chain and turn on the PA as directed in the UG */

MYKONOS_runInitCals(&mykDevice, TX_LO_LEAKAGE_EXTERNAL | DPD_INIT);

MYKONOS_waitInitCals(&mykDevice, 10000, &errorFlag2, &errorCode2);

The problem we discovered was that part of the code that sets up the RF chain and PA calls MYKONOS_setTx1Attenuation(&mykDevice, 16200);, but the command is not accepted.  16.2 dB is the Tx Atten setting our PA needs for nominal operation.  A verify call to MYKONOS_getTx1Attenuation(&mykDevice, &attenInDbx1000); returns 3000.  We tried multiple writes and the same result.  Since we are able to control the Tx Atten later, we found the trick was that the Tx Atten was only controllable before calibrations were started and after RadioOn was called.  So, our solution was as follows.

MYKONOS_setTx1Attenuation(&mykDevice, 3000);  // 3 dB

MYKONOS_setTx2Attenuation(&mykDevice, 3000);  // 3 dB

initCalMask = TX_BB_FILTER |
ADC_TUNER |
TIA_3DB_CORNER |
DC_OFFSET |
TX_ATTENUATION_DELAY |
RX_GAIN_DELAY |
FLASH_CAL |
PATH_DELAY |
TX_LO_LEAKAGE_INTERNAL |
TX_QEC_INIT |
LOOPBACK_RX_LO_DELAY |
LOOPBACK_RX_RX_QEC_INIT |
RX_LO_DELAY |
RX_QEC_INIT;

MYKONOS_runInitCals(&mykDevice, initCalMask);

MYKONOS_waitInitCals(&mykDevice, 10000, &errorFlag, &errorCode);

MYKONOS_radioOn(&mykDevice);  // Allows Tx Atten to be set correctly

/* Here we setup our RF chain and turn on the PA as directed in the UG */

MYKONOS_radioOff(&mykDevice);  // Allows calibrations to run again

MYKONOS_runInitCals(&mykDevice, TX_LO_LEAKAGE_EXTERNAL | DPD_INIT);

MYKONOS_waitInitCals(&mykDevice, 10000, &errorFlag2, &errorCode2);

Do you agree this approach is required and seems to be a good solution to the problem?

Thanks, Chris.

Top Replies

  • MYKONOS_runInitCals(&mykDevice, initCalMask);

    MYKONOS_waitInitCals(&mykDevice, 10000, &errorFlag, &errorCode);

    MYKONOS_radioOn(&mykDevice);  // Allows Tx Atten to be set…

  • MYKONOS_runInitCals(&mykDevice, initCalMask);

    MYKONOS_waitInitCals(&mykDevice, 10000, &errorFlag, &errorCode);

    MYKONOS_radioOn(&mykDevice);  // Allows Tx Atten to be set correctly

    /* Here we setup our RF chain and turn on the PA as directed in the UG */

    MYKONOS_radioOff(&mykDevice);  // Allows calibrations to run again

    MYKONOS_runInitCals(&mykDevice, TX_LO_LEAKAGE_EXTERNAL | DPD_INIT);

    Yes, this approach is correct. After running the init cals, you can go to radio on state and then set the TX attenuation and then go to radiooff and run the DPD init cal.

  • Thank you for the confirmation.  Might I suggest adding a comment in the UG in the DPD section where activating the PA is mentioned that this is required.  Had we not had code in place to read back the attenuator value (since the setTx1Attenuation() function does an internal rounding of the attenuator setting) we would have never known the setTx1Attenuation() was being honored at that time.