Post Go back to editing

9026 clgc initcals error

Category: Software
Product Number: ADRV9029
Software Version: 6.4.0.14

After configuring orx_clock_select to AUXLO, we tried using the clgc function,                 

but an exception error occurred when executing the function adi_adrv9025_TrackingCalsEnableSet.

The following is a partial log of the error message.

The detailed error information is in the attached adrv9025.txt file.

 

API log file 
Start date 2019-02-14 18:18:25 
Logging level 15

...

2019-02-14 18:19:15: API_LOG:adrv9025_dpdTrackingConfigSet(...)
2019-02-14 18:19:15: API_LOG:adi_adrv9025_CpuMemWrite(...)
2019-02-14 18:19:15: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:15: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:15: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:15: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:16: API_LOG:adi_adrv9025_RadioCtrlCfgSet(...)
2019-02-14 18:19:16: API_LOG:adi_adrv9025_RadioCtrlCfgSetRangeCheck(...)
2019-02-14 18:19:16: API_LOG:adi_adrv9025_RxTxEnableSet(...)
2019-02-14 18:19:16: API_LOG:adi_adrv9025_RxTxEnableSetRangeCheck(...)
2019-02-14 18:19:19: API_LOG:adi_adrv9025_RadioCtrlCfgGet(...)
2019-02-14 18:19:19: API_LOG:adi_adrv9025_RadioCtrlCfgSet(...)
2019-02-14 18:19:19: API_LOG:adi_adrv9025_RadioCtrlCfgSetRangeCheck(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemRead(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemRead(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemRead(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencySet_v2(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencySetRangeCheck_v2(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_TxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_TxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_TxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_TxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_RxLoSourceGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_InitCalsCheckCompleteGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemRead(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemRead(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_PllFrequencyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemRead(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_TrackingCalsEnableSet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMemWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWriteWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:20: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_TxToOrxMappingSet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_InitCalsRun(...)
2019-02-14 18:19:21: API_LOG:adrv9025_InitCalStructureCheck(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuMemWrite(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_InitCalsWait(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdStatusWait(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:21: API_LOG:adi_adrv9025_CpuCmdStatusOpcodeGet(...)
2019-02-14 18:19:21: ERROR:Error number  3 (0x00000003), Recovery action -2.In file public/src/adi_adrv9025_cpu.c, in function adi_adrv9025_CpuCmdStatusWait, in line  1055, variable name device.Error message CpuCmdStatusWait() failed due to thrown CPU error. Is device in correct state for calling command?.

2019-02-14 18:19:21: API_LOG:adi_common_ErrorClear(...)
2019-02-14 18:19:21: ERROR:Error number  131086 (0x0002000e), Recovery action -3.In file private/src/adrv9025_cpu.c, in function adrv9025_CpuCmdErrorHandler, in line  2503, variable name detErr.Error message ADRV9025 CPU Command Error
.

2019-02-14 18:19:21: ERROR:Error number  5121 (0x00001401), Recovery action -3.In file private/src/adrv9025_cpu.c, in function adrv9025_CpuCmdErrorHandler, in line  2515, variable name mailboxErrCode.Error message DPDExt:DPD hardware is being used by other cals.

2019-02-14 18:19:21: API_LOG:adi_adrv9025_ClgcConfigSet(...)
2019-02-14 18:19:21: ERROR:Error number  5121 (0x00001401), Recovery action -3.In file dpd.c, in function adi_clgc_cfg, in line  1576, variable name ((void *)0).Error message DPDExt:DPD hardware is being used by other cals.

2019-02-14 18:19:21: API_LOG:adi_adrv9025_TrackingCalsEnableSet(...)
2019-02-14 18:19:22: API_LOG:adi_adrv9025_ClgcStatusGet(...)
2019-02-14 18:19:22: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:22: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:22: ERROR:Error number  3 (0x00000003), Recovery action -3.In file public/src/adi_adrv9025_cpu.c, in function adi_adrv9025_CpuMailboxBusyGet, in line  1171, variable name ((void *)0).Error message Invalid Get for mailboxBusy.

2019-02-14 18:19:22: ERROR:Error number  3 (0x00000003), Recovery action -3.In file public/src/adi_adrv9025_cpu.c, in function adi_adrv9025_CpuCmdWrite, in line  1250, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:22: ERROR:Error number  3 (0x00000003), Recovery action -3.In file dpd.c, in function adi_clgc_status, in line  1596, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:22: API_LOG:adi_adrv9025_TrackingCalsEnableSet(...)
2019-02-14 18:19:23: API_LOG:adi_adrv9025_TxToOrxMappingSet(...)
2019-02-14 18:19:24: API_LOG:adi_adrv9025_ClgcConfigSet(...)
2019-02-14 18:19:24: ERROR:Error number  3 (0x00000003), Recovery action -3.In file dpd.c, in function adi_clgc_cfg, in line  1576, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:24: API_LOG:adi_adrv9025_TrackingCalsEnableSet(...)
2019-02-14 18:19:25: API_LOG:adi_adrv9025_ClgcStatusGet(...)
2019-02-14 18:19:25: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:25: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:25: ERROR:Error number  3 (0x00000003), Recovery action -3.In file public/src/adi_adrv9025_cpu.c, in function adi_adrv9025_CpuMailboxBusyGet, in line  1171, variable name ((void *)0).Error message Invalid Get for mailboxBusy.

2019-02-14 18:19:25: ERROR:Error number  3 (0x00000003), Recovery action -3.In file public/src/adi_adrv9025_cpu.c, in function adi_adrv9025_CpuCmdWrite, in line  1250, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:25: ERROR:Error number  3 (0x00000003), Recovery action -3.In file dpd.c, in function adi_clgc_status, in line  1596, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:25: API_LOG:adi_adrv9025_TrackingCalsEnableSet(...)
2019-02-14 18:19:25: API_LOG:adi_adrv9025_TxToOrxMappingSet(...)
2019-02-14 18:19:26: API_LOG:adi_adrv9025_ClgcConfigSet(...)
2019-02-14 18:19:26: ERROR:Error number  3 (0x00000003), Recovery action -3.In file dpd.c, in function adi_clgc_cfg, in line  1576, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:26: API_LOG:adi_adrv9025_TrackingCalsEnableSet(...)
2019-02-14 18:19:27: API_LOG:adi_adrv9025_ClgcStatusGet(...)
2019-02-14 18:19:27: API_LOG:adi_adrv9025_CpuCmdWrite(...)
2019-02-14 18:19:27: API_LOG:adi_adrv9025_CpuMailboxBusyGet(...)
2019-02-14 18:19:27: ERROR:Error number  3 (0x00000003), Recovery action -3.In file public/src/adi_adrv9025_cpu.c, in function adi_adrv9025_CpuMailboxBusyGet, in line  1171, variable name ((void *)0).Error message Invalid Get for mailboxBusy.

2019-02-14 18:19:27: ERROR:Error number  3 (0x00000003), Recovery action -3.In file public/src/adi_adrv9025_cpu.c, in function adi_adrv9025_CpuCmdWrite, in line  1250, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:27: ERROR:Error number  3 (0x00000003), Recovery action -3.In file dpd.c, in function adi_clgc_status, in line  1596, variable name ((void *)0).Error message Invalid Get for adi_adrv9025_CpuMailboxBusyGet().

2019-02-14 18:19:27: API_LOG:adi_adrv9025_TrackingCalsEnableSet(...)


log content: 

ERR RETURN: public/src/adi_adrv9025_cpu.c 1056 adi_adrv9025_CpuCmdStatusWait

commonDev abort

commonDev abort

ERR RETURN: private/src/adrv9025_cpu.c 2518 adrv9025_CpuCmdErrorHandler

ERR RETURN: public/src/adi_adrv9025_cals.c 144 adi_adrv9025_InitCalsWait

2019-02-14 18:22:16 TX1 InitCalsWait failed   errFlags 7

ERR RETURN: public/src/adi_adrv9025_dfe.c 2485 adi_adrv9025_ClgcConfigSet

commonDev abort

ERR RETURN: public/src/adi_adrv9025_hal.c 562 adi_adrv9025_SpiByteRead

ERR RETURN: public/src/adi_adrv9025_cals.c 444 adi_adrv9025_TrackingCalsEnableSet

2019-02-14 18:22:17 CLGC tracking calibration fail

ERR RETURN: private/src/adrv9025_bf_core.c 46 adrv9025_CoreArmCommandBusyBfGet

commonDev abort

ERR RETURN: public/src/adi_adrv9025_cpu.c 1172 adi_adrv9025_CpuMailboxBusyGet

commonDev abort

ERR RETURN: public/src/adi_adrv9025_cpu.c 1251 adi_adrv9025_CpuCmdWrite

ERR RETURN: public/src/adi_adrv9025_dfe.c 2697 adi_adrv9025_ClgcStatusGet

commonDev abort




Need to ask question:

(1) If orx_clock_delect is configured as AUXLO, help to check whether the current clgc_get_process is normal?

(2) We hope,  when orx_clock_delect is configured as AUXLO, function adi_adrv9025_ClgcStatusGet, clgcTxRmsPower & clgcOrxRmsPower  is valid,  how handle?

Thanks, look forward to your reply.

Thread Notes

  • I'm not sure how are you relating CLGC with AUX LO.

    For CLGC to run, DPD model must be loaded.

    Please see attached for the CLGC script and see if you are missing anything.

    #################################################################################
    #GUI Version: 0.0.0.939
    #DLL Version: 0.0.0.857
    #Cmd Server Version: 0.0.0.857
    #FPGA Version: 0xD9000007
    #ARM Version: 0.0.0.503
    #StreamVersion: 0.0.0.73
    #Author: Anand Kumar
    #Precondition: Ensure that Tx-ORx mapping is completed and a valid external loopback path exists between Tx to ORx.
    #Description: This script is meant for standalone CLGC setup(without internal DPD). 
    # This script runs the external path delay cal, external DPD init cal(to establish DPD actuator ownership) and initializes CLGC tracking cal
    #Note: To disable active Tx atten control and only monitor Tx and ORx power levels, a value of '0' needs to be passed to the clgcConfigSet() function (line 107)
    #################################################################################
    
    #Import Reference to the DLL
    import System
    import clr
    import time
    from System import Array
    clr.AddReferenceToFileAndPath("C:\\Program Files\\Analog Devices\\ADRV9025 Transceiver Evaluation Software_x64_FULL\\adrvtrx_dll.dll")
    from adrv9010_dll import AdiEvaluationSystem
    from adrv9010_dll import Types
    from adrv9010_dll import Ad9528Types
    from math import log10, sqrt
    
    def extPathDelayAndExtDpdInit():
        errorFlag = 0
        txCals = Types.adi_adrv9010_InitCals_t()
        txCals.calMask = int(Types.adi_adrv9010_InitCalibrations_e.ADI_ADRV9010_EXTERNAL_PATH_DELAY) | int(Types.adi_adrv9010_InitCalibrations_e.ADI_ADRV9010_DPD)
        txCals.channelMask = 0x1
        txCals.warmBoot = 0
        adrv9010.Cals.InitCalsRun(txCals)
        adrv9010.Cals.InitCalsWait(6000, errorFlag)
    
    def clgcStatusGet(txCh):
        print"*****************************CLGC Status, Tx = ",txCh
        clgcStatusRead = Types.adi_adrv9010_ClgcStatus_t()
        retVal = link.platform.board.Adrv9010Device.Dfe.ClgcStatusGet(txCh, clgcStatusRead)
        clgcStatusRead = retVal[1]
        MAX_CODE = 2**16
        updateCount = clgcStatusRead.clgcTrackingCalStatus.updateCount
        loopGain = clgcStatusRead.clgcLoopGain
        print "CLGC Loop Gain Est:",loopGain
        #print "CLGC Tx RMS Power:",clgcStatusRead.clgcTxRmsPower
        #print "CLGC Orx RMS Power:",clgcStatusRead.clgcOrxRmsPower
        if int(loopGain*100) != 0:
            print "CLGC Loop Gain Est_dB:",20*log10(float(loopGain))
            print "CLGC Tx RMS Power_dBFS:",20*log10(clgcStatusRead.clgcTxRmsPower/MAX_CODE)
            print "CLGC Orx RMS Power_dBFS:",20*log10(clgcStatusRead.clgcOrxRmsPower/MAX_CODE)
        
        print "CLGC errorCode:",clgcStatusRead.clgcTrackingCalStatus.errorCode
        print "CLGC activeTxAttenIndex_dB:",clgcStatusRead.activeTxAttenIndex*0.05
        print "CLGC activeOrxGainIndex:",clgcStatusRead.activeOrxGainIndex
        print "CLGC percentComplete:",clgcStatusRead.clgcTrackingCalStatus.percentComplete
        print "CLGC varianceMetric:",clgcStatusRead.clgcTrackingCalStatus.varianceMetric
        print "CLGC iterCount:",clgcStatusRead.clgcTrackingCalStatus.iterCount
        print "CLGC updateCount:",updateCount
        print "CLGC runState:",clgcStatusRead.clgcState
        print "CLGC captureStatus:",clgcStatusRead.clgcCaptureStatus
        print "CLGC Sync status =",clgcStatusRead.clgcSyncStatus
        return clgcStatusRead
    
    
    def clgcConfigSet(controlEnable = 0):         
        print"***************************************"
        clgcConfigSetObj = Array.CreateInstance(Types.adi_adrv9010_ClgcConfig_t, 1)
        clgcConfigSetObj[0] = Types.adi_adrv9010_ClgcConfig_t()
        clgcConfigSetObj[0].txChannelMask = 0x0F;
        clgcConfigSetObj[0].clgcEnableGainControl = controlEnable
        clgcConfigSetObj[0].clgcExpectedLoopGain_dB = -0.5
        clgcConfigSetObj[0].clgcTxQualifyingThreshold_dBFS = -70;
        clgcConfigSetObj[0].clgcOrxQualifyingThreshold_dBFS = -70;
        clgcConfigSetObj[0].clgcMaxGainAdjustmentStepSize_dB = 3;
        clgcConfigSetObj[0].clgcDampingParam = 0.1;
        clgcConfigSetObj[0].clgcMinTxAttenAdjust_dB = 0; 
        clgcConfigSetObj[0].clgcMaxTxAttenAdjust_dB = 30;
        clgcConfigSetObj[0].clgcExpectedLoopGainRipple_dB = 0.05;
        clgcConfigSetObj[0].clgcMaxSampleBatchesPerClgcRun = 512
        clgcConfigSetObj[0].clgcMeasurementBatchTime_us = 10
        clgcConfigSetObj[0].clgcOrxMinimumSnr_dB = 20
        link.platform.board.Adrv9010Device.Dfe.ClgcConfigSet(clgcConfigSetObj,1)
        print "CLGC Loop Gain(dB)",clgcConfigSetObj[0].clgcExpectedLoopGain_dB 
        print "CLGC Tx qualifying threshold(dBFS)",clgcConfigSetObj[0].clgcTxQualifyingThreshold_dBFS
        print "CLGC ORx qualifying threshold(dBFS)",clgcConfigSetObj[0].clgcOrxQualifyingThreshold_dBFS 
        print "CLGC Max gain adjustment step size",clgcConfigSetObj[0].clgcMaxGainAdjustmentStepSize_dB 
        print "CLGC Damping Param", clgcConfigSetObj[0].clgcDampingParam 
        print "Min Tx Atten(dB)",clgcConfigSetObj[0].clgcMinTxAttenAdjust_dB 
        print "Max Tx Atten(dB)",clgcConfigSetObj[0].clgcMaxGainAdjustmentStepSize_dB 
        print "Expected loop gain ripple(dB)",clgcConfigSetObj[0].clgcExpectedLoopGainRipple_dB    
        print"***************************************"
    
    def clgcTrackingCalEnable(enable = 0):
        if enable:
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX1_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_ENABLE)
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX2_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_ENABLE)
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX3_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_ENABLE)
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX4_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_ENABLE)
        else:
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX1_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_DISABLE)
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX2_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_DISABLE)
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX3_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_DISABLE)
            link.platform.board.Adrv9010Device.Cals.TrackingCalsEnableSet(int(Types.adi_adrv9010_TrackingCalibrations_e.ADI_ADRV9010_TRACK_TX4_CLGC), Types.adi_adrv9010_TrackingCalEnableDisable_e.ADI_ADRV9010_TRACKING_CAL_DISABLE)
        
    def clgcSetup():    
        #link.platform.board.Adrv9010Device.RadioCtrl.RxTxEnableSet(0x00,0x01) #Enable Tx1, Disable other ORx channels
        #extPathDelayAndExtDpdInit() #Required if using CLGC with External DPD
        #clgcConfigSet(1) #1 - Enable loop gain control, 0- Disable loop gain control
        #clgcTrackingCalEnable(1) #1 - Enable CLGC tracking cal, 0 - Disable CLGC tracking cal 
        #time.sleep(10)
    
        print "*********CLGC Status******************"
        clgcStatusGet(Types.adi_adrv9010_TxChannels_e.ADI_ADRV9010_TX1)  
    
    #Create an Instance of the Class
    link = AdiEvaluationSystem.Instance
    connect = False
    
    if (link.IsConnected() == False):
        connect = True
        link.platform.board.Client.Connect("192.168.1.10", 55556) 
        print "Connecting"
    
    if (link.IsConnected()):
        adrv9010 = link.Adrv9010Get(1)
        print "Connected"
        adrv9010 = link.Adrv9010Get(1)
        ##### YOUR CODE GOES HERE #####
        clgcSetup()
    else:
        print "Not Connected"
    
    if (connect):
        link.platform.board.Client.Disconnect()
        print "Disconnected"

    Did you configure ORX LO as AUX LO? If so, any specific reason?

    We use AUX LO for running the init and tracking cals.

  • Hi, Ramarao:

    Because we have to use Sniffer and Dpd,  So we set ORX LO as AUX LO, and  load a learnt model during the initialization.

    In the present situation, We tried using clgc again. 

    The clgc code flow is the same as this script. 

    Actually, we wanted to see,  if we set ORX LO as AUX LO,  clgc would work?

    if not, Do we have other ways that work?

    Thanks, Looking forward to your reply.

  • DPD and CLGC should work with TX LO. AUX LO is not supported for DPD and CLGC cals.