Post Go back to editing

How to reduce DC offset of AD9375?

Hi,

I'm using AD9375 and output from TX one signal tone sine as image. I see image rejection the same specification. But DC offset seems higher specification (is M2 point in image).

I had enabled DC_OFFSET in initCalMask to Calibration every change frequency:

mykonosErr_t SetFreq(mykonosDevice_t mykDevice, uint64_t u64TxFrq, uint64_t u64RxFrq)
{
    mykonosErr_t        mykError;
    uint8_t             errorFlag = 0;
    uint8_t             errorCode = 0;
    uint32_t             initCalsCompleted = 0;
    uint8_t             pllLockStatus = 0;


    uint32_t initCalMask =TX_QEC_INIT |
            LOOPBACK_RX_LO_DELAY |
            LOOPBACK_RX_RX_QEC_INIT |
            RX_LO_DELAY | RX_QEC_INIT | DC_OFFSET ;


    MYKONOS_radioOff(&mykDevice);

    if ((mykError = MYKONOS_setRfPllFrequency(&mykDevice, TX_PLL, u64TxFrq)) != MYKONOS_ERR_OK)
    {
        return MYKONOS_ERR_FAILED;
    }

    if ((mykError = MYKONOS_setRfPllFrequency(&mykDevice, RX_PLL, u64RxFrq)) != MYKONOS_ERR_OK)
    {
        return MYKONOS_ERR_FAILED;
    }

    Delay_Ms(100);

    if ((mykError = MYKONOS_checkPllsLockStatus(&mykDevice, &pllLockStatus)) != MYKONOS_ERR_OK)
    {
        return MYKONOS_ERR_FAILED;
    }
//    LREP("\r\n[ LockStatus: 0x%x]", pllLockStatus);
//    LREP("\r\n[ LockStatus1: 0x%x]", (pllLockStatus & 0x0F));
    if ((pllLockStatus & 0x0F) == 0x0F)
    {
        LREP("\r\n [PLL Locked]");
    }
    else
    {
        LREP("\r\n[ PLL Not Lock]");
        return MYKONOS_ERR_FAILED;;
    }

    // Make sure PA is ON
    if((mykError = MYKONOS_abortInitCals(&mykDevice, &initCalsCompleted)) != MYKONOS_ERR_OK)
    {
        /*** < Info: errorString will contain log error string in order to debug why failed > ***/
        //errorString = getMykonosErrorMessage(mykError);
        puts("abortInitCals failed");
        fflush(stdout);
        puts(getMykonosErrorMessage(mykError));
    }

    if ((mykError = MYKONOS_runInitCals(&mykDevice, initCalMask)) != MYKONOS_ERR_OK)
    {
        /*** < Info: errorString will contain log error string in order to debug why failed > ***/
        //errorString = getMykonosErrorMessage(mykError);
        puts("MYKONOS_runInitCals");
        fflush(stdout);
        puts(getMykonosErrorMessage(mykError));
    }

    if ((mykError = MYKONOS_waitInitCals(&mykDevice, 60000, &errorFlag, &errorCode)) != MYKONOS_ERR_OK)
    {
        /*** < Info: errorString will contain log error string in order to debug why failed > ***/
        //errorString = getMykonosErrorMessage(mykError);
        puts("MYKONOS_waitInitCals");
        fflush(stdout);
        puts(getMykonosErrorMessage(mykError));
     }
    MYKONOS_radioOn(&mykDevice);

    return MYKONOS_ERR_OK;

}

How to reduce DC offset in Tx and Rx?

Thanks