This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AFE7920: real-time DC_offset calibration

Part Number: AFE7920

Hello.

First, I know how to run run-time DC-offset cal or to stop DC-offset cal. 

# how to run time dc-offset calibration

SPIWrite 00a3,00,0,7

SPIWrite 00a2,01,0,7

SPIWrite 00a1,03,0,7

SPIWrite 00a0,0f,0,7

SPIWrite 0193,4b,0,7

#how to stop disable dc-offset calibration

SPIWrite 00a3,00,0,7

SPIWrite 00a2,00,0,7

SPIWrite 00a1,03,0,7

SPIWrite 00a0,0f,0,7

SPIWrite 0193,4b,0,7

I want to know how to use power-up calibration without run-time cal.

Could you please provide assistance with this issue? 

Thank you in advance for your help. I look forward to hearing from you soon.

  • Hi Jongroh,

    The above commands are not complete as there are no page opening/closing commands for the DC offset calibration. I have routed this to Michael to further help support your request. Thank you.

  • Hi Jongroh,

    The power-up calibration has a separate macro routine. You can search for opcode 0x13 in the config and change the highlighted data to 1 to enable the power-up calibration.

    SPIPoll 00f0,0,0,01
    SPIWrite 00a3,01,0,7 //MACRO_OPERAND_REG0=0x10100ff; Address(0xa0[7:0],0xa1[7:0],0xa2[7:0],0xa3[7:0],0xa4[7:0])
    SPIWrite 00a2,01,0,7
    SPIWrite 00a1,00,0,7
    SPIWrite 00a0,ff,0,7
    SPIWrite 00a7,00,0,7 //MACRO_OPERAND_REG1=0x0; Address(0xa4[7:0],0xa5[7:0],0xa6[7:0],0xa7[7:0],0xa8[7:0])
    SPIWrite 00a6,00,0,7
    SPIWrite 00a5,00,0,7
    SPIWrite 00a4,00,0,7
    SPIWrite 0193,13,0,7 //MACRO_OPCODE=0x13; Address(0x193[7:0],0x194[7:0])

    Thanks,

    Michael

  • Hi Michael.

    Thank you for your quick answer, 

    I tried "power-up calibration and no run-time calibration", but I didn't get the desired DC-offset characteristic.

    Can "Run-time DC-offset calibration" be freeze?   I want DC-offset  to remain in the "the most optimized status".

    Thank you.

    Jongroh

  • Hi Jongroh,

    I'll do by best to help get the DC-offset characteristic optimized. I just have a couple questions for you so I can better understand your issue. 

    First is can you confirm the power-up calibration macro completed successfully? Second is how are you determining the DC-offset characteristic? Are you measuring some resultant spur? Lastly, the DC offset calibration setting should be static with the run-time cal disabled; can you clarify what you mean by "run-time DC-offset calibration freeze"? 

    Thanks,

    Michael

  • Hi Michael.

    Your words saying that you will help me are a great strength for me.

    I  answer each of your questions.

    1. Q:First is can you confirm the power-up calibration macro completed successfully?

        A : Yes.

            I have modified the power-up calibration contents of the generated file from latte 1.10.1 as you guided me.

            then using Spectrum analyzer,  I have confirmed   that run-time calibration has stop and and basic RF operation works

            Also, I checked the afe7920 status thru API Funtion(healthcheck) .

                  

    2. Q :Second is how are you determining the DC-offset characteristic? Are you measuring some resultant spur?

         A : I tested  via (RX ADC->FPGA -> TX DAC)

            I changed the DAC Nco frequency a little to exclude the spur problem with the DAC.

            I checked 5/4*fs Spur(3686.4MHz) of ADC using Specturm Anayzer.

            I repeated the above characteristic confirmation while rebooting.

            I have confirmed that the spur characteristics change every time the system boots,  to  max 10dB.

       

    3. Q:  Lastly, the DC offset calibration setting should be static with the run-time cal disabled; can you clarify what you mean by "run-time DC-offset calibration freeze"? 

         A :  I understand that  AFE7920 run-time calibration is optimizing dc-offset-like ,

                'Freeze' means that  "run-time calibration" stops  and  "dc-offset-like value" keep  the already calibrated value  .

    Thank you.

    Jongroh

  • Hi Jongroh,

    I have done some research on this topic and have some suggestions and guidance for you.

    The Fs*5/4 sampler spur is expected to change power level based on the power-up calibration results. It has been seen that the spur performance is best with both the power-up and dc-offset cal turned off. Do you see a DC component in the FFT spectrum in this mode?

    We can also explore using the DC-offset calibration in tandem with the DC-offset freeze that you mentioned. Note that the run-time DC-offset calibration relies on data from the power-up calibration and should not be used without enabling the power-up cal. There is a macro which can be used to freeze the run-time DC-offset cal as you clarified. The SPI writes for this macro are below. Please try using the DC-offset calibration, with the power-up cal enabled, and the DC-offset freeze.

    SPIWrite 0016,00,0,7 //dac_jesd=0x0; Address(0x16[7:2])
    SPIWrite 0018,20,0,7 //macro=0x1; Address(0x18[7:5])
    SPIRead 00f0,0,0

    //Read MACRO_READY=0x1; Address(0xf0[7:0])


    SPIPoll 00f0,0,0,01
    SPIWrite 00a3,00,0,7 //MACRO_OPERAND_REG0=0x1030f; Address(0xa0[7:0],0xa1[7:0],0xa2[7:0],0xa3[7:0],0xa4[7:0])
    SPIWrite 00a2,01,0,7 //freeze enable
    SPIWrite 00a1,03,0,7 //FB channel select
    SPIWrite 00a0,0f,0,7 //RX channel select
    SPIWrite 0193,4a,0,7 //MACRO_OPCODE=0x4a; Address(0x193[7:0],0x194[7:0])

    WAIT 0.001
    SPIRead 00f0,2,2

    //Read MACRO_DONE=0x1; Address(0xf0[7:2])


    SPIPoll 00f0,2,2,04
    SPIReadCheck 00f0,3,3,00

    //Read MACRO_ERROR=0x0; Address(0xf0[7:3])

    SPIRead 00f1,0,7

    //Read MACRO_ERROR_OPCODE=0x0; Address(0xf1[7:0],0xf2[7:0])

    SPIRead 00f0,4,4

    //Read MACRO_ERROR_IN_OPCODE=0x0; Address(0xf0[7:4])

    SPIRead 00f0,5,5

    //Read MACRO_ERROR_OPCODE_NOT_ALLOWED=0x0; Address(0xf0[7:5])

    SPIRead 00f0,6,6

    //Read MACRO_ERROR_IN_OPERAND=0x0; Address(0xf0[7:6])

    SPIRead 00f0,7,7

    //Read MACRO_ERROR_IN_EXECUTION=0x0; Address(0xf0[7:7])

    SPIRead 00f3,0,7
    SPIRead 00f2,0,7

    //Read MACRO_ERROR_EXTENDED_CODE=0x0; Address(0xf2[7:0],0xf3[7:0],0xf4[7:0])

    SPIRead 00f7,0,7
    SPIRead 00f6,0,7
    SPIRead 00f5,0,7
    SPIRead 00f4,0,7

    //Read MACRO_ERROR_EXTENDED_CODE_2=0x0; Address(0xf4[7:0],0xf5[7:0],0xf6[7:0],0xf7[7:0],0xf8[7:0])

    Thanks,

    Michael 

  • Hi Michael.

    I have added the freeze content you guided me to the end of the file generated in Latte1.10.1.

    also I have added "WAIT 2" between 'end of file generated" and "freeze contents".

    I have test as followings sequence.

    1. No signal Input for ADC

    2. AFE7920 Initialize

    3. Sigal input On

    3. check Spur and EVM

    I have confirmed that there are no issues.

    I will contact you after a few more days of testing and confirmation.

    Thank you sincerely.

    Jongroh

  • Hi Jongroh,

    I'm glad to hear that. Happy to help! I will mark this thread as resolved now, but please feel free to re-open it if you need any more assistance.

    Thanks,

    Michael