The TI E2E™ design support forums will undergo maintenance from July 11 to July 13. If you need design support during this time, open a new support request with our customer support center.

AFE7901: Change Nyquist band (and RX frequency) after device bringup sequence

Part Number: AFE7901
Other Parts Discussed in Thread: AFE7950

Tool/software:

Hi,

We are using the AFE7901 on a custom board and are trying to change the RX NCO frequency at runtime (after boot) with the updateRxNco function.
This operations fails for frequencies outside the initial Nyquist band.

I read in this thread - https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/1279331/afe7950evm-is-it-possible-to-dynamically-change-the-nco-frequency/4857586 about the AFE7950 that
hints that it is not possible to change the nyquiest band after initial bringup logic is done.

Since this feature could really help I would want ask if there is a way we can change both of them after boot on the AFE7901 (or any other way to change the RX frequency across nyquists bands without doing the bringup sequence again).

Thanks!

  • Hi Alon,

    On the ADC side it is possible to change the the NCO across Nyquist zones but on the DAC side this is not supported. 

    Just to confirm are you using the CAFE library 'updateRxNco' function to change the NCO? 

    Can you explain more when you say the 'operation fails'? Do you see no input or does the spectrum look bad? 

    Regards,

    David Chaparro 

  • I'm using the `updateRxNco` function and it returns a status failed return value.

    After inspecting the function it looks like it fails when asserting that both frequencies (current and new one) are on the same nyquist band (which they are not).

    Thanks!

  • Hi, just checking in to see if there are any updates or results you could share regarding this issue.

    thank you in advance!

  • Hi Alon,

    Can you share the AFE script that you are using for the AFE configuration? There should be no issues changing NCO frequencies. Can you also share the function call that is failing? 

    Regards,

    David Chaparro

  • Hi, perhaps I was not clear but the configuration script successfully configures the AFE (sharing it just in case - AFE Configuration).
    The problem arise by trying to call `updateRxNco` function after the configuration stage.

    After inspecting the `updateRxNco` source in the CAFE library I noticed that it verifies  and aborts early in case of different nyquist bands between the old frequency and the new one:

        uint32_t mixerVal = 3000;
        uint32_t Fadc = AFE79_CURR_SYSPARAM.FadcRx;
        uint64_t ncoFreq;
        uint8_t byteList[7];
        uint8_t numOfOperands = 0;
        uint8_t byteListRxNCO[4];
        uint8_t newNyquistNo;
        uint8_t bringupNyquistNo = ((AFE79_CURR_SYSPARAM.rxNco[0][chNo][0] * 2) / Fadc);
    
        if (AFE79_CURR_SYSPARAM.ncoFreqMode == 1) /*FCW mode*/
        {
            ncoFreq = ((uint64_t)mixer * (uint64_t)Fadc) / (0x100000000);
            ncoFreq += Fadc * (bringupNyquistNo >> 1);
            newNyquistNo = (mixer >> 31);
            if (newNyquistNo != (bringupNyquistNo & 1)){ // Checking if the nyquist frequency
                afeLogErr("%s", "The new Nyquist frequency and the frequency set in bringup should be same");
                AFE79_PARAMS_VALID(newNyquistNo == (bringupNyquistNo & 1));
            }
        }
        else
        {
            ncoFreq = mixer;
            mixer = mixer % Fadc;
            newNyquistNo = ((ncoFreq * 2) / Fadc);
            if (newNyquistNo != bringupNyquistNo){ // Checking if the nyquist frequency
                afeLogErr("%s", "The new Nyquist frequency and the frequency set in bringup should be same");
                AFE79_PARAMS_VALID(newNyquistNo == bringupNyquistNo);
            }
        }
     

    We are using the latest CAFE version (V2p6)

    Thanks!

  • Hi, just checking in - any new updates on this?
    I'm still unsure if this isn't supported by design or its a misconfiguration / I'm not using the right functions.

    Thanks!