Post Go back to editing

Questions about ADRV9029 DPD dpd status

I ran DPD on my board and it came out as below.

CLI debug > dpd status

DPD Status

dpdErrorCode          : 0x0
dpdPercentComplete    : 0
dpdIterCount          : 32
dpdUpdateCount        : 0
dpdSyncStatus         : 4
dpdModelTable         : 0

dpdStatistics.dpdMeanTuPower   : 0.000000
dpdStatistics.dpdPeakTuPower   : 0.000000
dpdStatistics.dpdMeanTxPower   : 0.000000
dpdStatistics.dpdPeakTxPower   : 0.000000
dpdStatistics.dpdMeanOrxPower  : 0.000000
dpdStatistics.dpdPeakOrxPower  : 0.000000
dpdStatistics.dpdDirectEvm     : 0.000000
dpdStatistics.dpdIndirectEvm   : 0.000000
dpdStatistics.dpdSelectError   : 0.000000
dpdStatistics.dpdIndirectError : 0.000000

dpdErrorStatus0.dpdMetricsMask : 0x0
dpdErrorStatus0.dpdActionMask  : 0x0

dpdErrorStatus1.dpdMetricsMask : 0x0
dpdErrorStatus1.dpdActionMask  : 0x0

dpdPersistentErrorStatus0.dpdMetricsMask : 0x0
dpdPersistentErrorStatus0.dpdActionMask  : 0x0

dpdPersistentErrorStatus1.dpdMetricsMask : 0x0
dpdPersistentErrorStatus1.dpdActionMask  : 0x0

dpdPerformanceMetric  : 0
reservedPM            : 0
reservedTP            : 0
reservedPR            : 0

This is a question about the above.
1) dpdErrorCode comes out as 0, only dpdIterCount is incremented, dpdUpdateCount is not incremented. Could you please advise on what parts I need to check in this regard.

2) There are no dpdStatistics related contents, please advise which part should be checked. Please let me know if you have any related needs.

3) “4” is displayed in dpd sync status, please advise on this part. (ADI_ADRV9025_TRACKINGCAL_SYNC_TARG_CAL_NOT_ENABLED)

I look forward to your advice.

thank you.

Parents
  • Please make sure that you follow the DPD bring up sequence as mentioned in the DPD user guide.

    Have you enabled the carrier at all as the statistics does not show up any powers being read?

    Please make sure that the Tx-ORX mapping is correct and TX channel is connected to the configured ORX channel.

    Are you loading a DPD model file?

    If you are checking in TDD mode, try to check in FDD mode once.

  • Have you enabled the carrier at all as the statistics does not show up any powers being read?

    The above RECOMMENDED SEQUENCE FOR ENABLING THE DPD TRACKING CALIBRATION has been applied, but the difference is as follows.
    - Step 4: Measure the external path delay using adi_adrv9025_InitCalsRun. But the two functions are not used. (adi_adrv9025_ExternalPathDelaySet(), adi_adrv9025_ClgcExternalPathDelaySet())
    - step 11: As it is optional, it was not used in this step.
    - step 12: CLGC is not used.
    - step 15: CLGC was not used.

    Have you enabled the carrier at all as the statistics does not show up any powers being read?

    LTE20M 9FA was activated and used.

    Please make sure that the Tx-ORX mapping is correct and TX channel is connected to the configured ORX channel.

    Tx-ORx mapping checked. I also checked the Orx input level with rxDecPowerGet().

    Are you loading a DPD model file?

    DPD model file was loaded and used.

    If you are checking in TDD mode, try to check in FDD mode once.

    Currently only using FDD mode.

    Please help.

Reply
  • Have you enabled the carrier at all as the statistics does not show up any powers being read?

    The above RECOMMENDED SEQUENCE FOR ENABLING THE DPD TRACKING CALIBRATION has been applied, but the difference is as follows.
    - Step 4: Measure the external path delay using adi_adrv9025_InitCalsRun. But the two functions are not used. (adi_adrv9025_ExternalPathDelaySet(), adi_adrv9025_ClgcExternalPathDelaySet())
    - step 11: As it is optional, it was not used in this step.
    - step 12: CLGC is not used.
    - step 15: CLGC was not used.

    Have you enabled the carrier at all as the statistics does not show up any powers being read?

    LTE20M 9FA was activated and used.

    Please make sure that the Tx-ORX mapping is correct and TX channel is connected to the configured ORX channel.

    Tx-ORx mapping checked. I also checked the Orx input level with rxDecPowerGet().

    Are you loading a DPD model file?

    DPD model file was loaded and used.

    If you are checking in TDD mode, try to check in FDD mode once.

    Currently only using FDD mode.

    Please help.

Children
  • Can you check the respective ORX power by using RXdecpowerget API?

    Hope the external path delay cal mask is set as described in the UG

    Can you please send us the DPD tracking config. parameters?

    Can you please send us the Spectrum plot at the TRX out and PA out as well?

  • Can you check the respective ORX power by using RXdecpowerget API?
    Please make sure that the Tx-ORX mapping is correct and TX channel is connected to the configured ORX channel.

    Tx-ORx mapping checked. I also checked the Orx input level with rxDecPowerGet().

    Hope the external path delay cal mask is set as described in the UG

                devicePostMcsInitInst.initCals.calMask = ADI_ADRV9025_EXTERNAL_PATH_DELAY;

                retval = adi_adrv9025_InitCalsRun(adrv9025_device, &devicePostMcsInitInst.initCals);

    Can you please send us the DPD tracking config. parameters?

                adi_adrv9025_DpdTrackingConfig_t dpdTrackingConfigInst;

     

                float FULL_SCALE_CODE = 32768;

     

                int32_t MThreshold_dBFS = -40;

                int16_t DpdLowPowerThreshold_dBFS = -46;

                int16_t DpdLowPowerThresholdORx_dBFS = -36;

     

                float temp = powf(10, (MThreshold_dBFS / 20.0)) * FULL_SCALE_CODE;

                uint32_t dpdMThreshold_val = pow(temp, 2);

                uint16_t minAvgSignalLevel_val = pow(10, (DpdLowPowerThreshold_dBFS / 20.0)) * FULL_SCALE_CODE;

                uint16_t minAvgSignalLevelOrx_val = pow(10, (DpdLowPowerThresholdORx_dBFS / 20.0)) * FULL_SCALE_CODE;

     

                dpdTrackingConfigInst.txChannelMask = ADI_ADRV9025_TX2;

                dpdTrackingConfigInst.dpdIndirectRegularizationValue = 20;

                dpdTrackingConfigInst.dpdDirectRegularizationValue = 20;

                dpdTrackingConfigInst.dpdSamples = 16384;

                dpdTrackingConfigInst.dpdMThreshold = dpdMThreshold_val;

                dpdTrackingConfigInst.dpdPeakSearchWindowSize = 65535;

                dpdTrackingConfigInst.dpdUpdateMode = ADI_ADRV9025_DPD_TRACKING_UPDATE_MODE_2;

                dpdTrackingConfigInst.minAvgSignalLevel = minAvgSignalLevel_val;

                dpdTrackingConfigInst.dpdMu = 50

                dpdTrackingConfigInst.minAvgSignalLevelOrx = minAvgSignalLevelOrx_val;

                dpdTrackingConfigInst.dpdFilterSel = 1;

                dpdTrackingConfigInst.enableDirectLearning = 1;

                dpdTrackingConfigInst.dpdIndirectRegularizationLowPowerValue = 20;

     

                retval = adi_adrv9025_DpdTrackingConfigSet(adrv9025_device, &dpdTrackingConfigInst);

                printf(" DPD Tracking Config Set Result : %d\n", retval);

    Please help.

  • On the sequence, it looks like the DPD reset with LUT restore step is missing after loading the model file and before full DPD reset (Between Step 8 and 9 ). Can you add this and let me know? Below is the typical seq (in brief)

    • Load the model
    • dpdModelRestoreFromFile(DPD reset with LUT_Restore)
    • resetDpdFull (DPD reset with DPD_REset_Full)
    • dpdTrackingConfigSet
    • runExtPathDelayInitCal(0xF) 
    • Give some delay(sleep time)
    • getExtPathDelay(Types.adi_adrv9010_TxChannels_e.ADI_ADRV9010_TX1) (Just to verify that the cal was run and path delay value was set)
    • dpdTrackingCalEnable
  • Hi Ramarao/Justin. I am experience same behavior and all looks. How did you solve this?

    Thanks in advance.

  • Its a DPD sequence related issue. Please make sure that the recommended DPD sequence is followed?

    Whats the RX channel mask configured? Is it FDD/ TDD; SPI/Pin mode?

    Do you get any DPD statistics? Can you share more details?