FH Config Adrv9002


I am trying to perform FH with Adrv9002 using no-os. I called "adi_adrv9001_fh_Configure" function at the very beginning of headless.c file. Then i called "adi_adrv9001_fh_Configure_Inspect" and read the written values back correctly. But when i recall "adi_adrv9001_fh_Configure_Inspect" after post setup it seems the FH config parameters have returned to default values.

Am i calling "adi_adrv9001_fh_Configure" at the wrong place. As far as i know the state should be STANDBY for this operation. I checked channel state using "adi_adrv9001_radio_channel_state_get" it was STANDBY at first for that line. But then it starts with RF ENABLED state when running main function.

So how can i properly configure FH?

  • Moved to ADRV9001 support. API specific questions go here.


  • Hello CMirror,

    I had a quick read of the Doxygen file we provide as part of the SDK:

    Bear in mind this document is written for TES v0.18.1, so it's a good bit newer than the release you are using as you're taking the No-OS approach. The Configuration_Inpsect() API seems to be callable from any state after Initialization, so it's confusing to see your issue cropping up as they are.

    However, you could try to setup a FH configuration in TES using Demo Mode and see what our Driver Calls are during Initialization and throughout our State Machine. It might not have every answer you need, but it may provide some pointers.

    Give these a try and let me know if they return any results for you! In the meantime I will do a few tests on my side to see if I can get a more concrete answer for you.

    Best Regards,

  • Thank you for your reply. I tried to setup FH config through TES but I couldn't find a menu to set parameters such as FHmode, tableIndexCtrl etc. could you guide me please?

    Now it does not even let me inspect fhconfig after InitCalsRun which moves channel state to CALIBRATED. It does not give any error, system just stuck in Xil_DataAbortHandler.

    On the other hand i am encountering with a new problem. In order to start the normal transmit, state should be transmitted from PRIMED to RF ENABLED. In adrv9002_setup function there is a condition about state transition for rx and tx path config. If "duplexMode" is TDD then state will move to PRIMED from CALIBRATED and if FDD it will move to RF ENABLED. But when I set "fhMode" to 1 to enable Frequency Hopping, state never moves to RF ENABLED whether "duplexMode" is TDD or FDD. It somehow moves to PRIMED state. I tried to use "adi_adrv9001_Radio_Channel_ToRfEnabled" and "adrv9002_channel_to_state" functions separately to change state to RF ENABLED but it didn't work either.

    Best Regards

  • Dear I guess i figured out the reason why state was not moving to RF ENABLED. It seems i had to trigger the hop signal since fh mode is on. ATM i am able to Configure and Inspect FH successfully.

    I will give more detail on what i do exactly so you can assist me in a better way. 

    FH Configuration: Mux Preprocess, HopSignal1, Auto Loop

    I also set rxgain and txatten values, gainsetupbypin: false

    1-) I configure FH using "adi_adrv9001_fh_Configure" function right before InitCalsRun and read back the parameters correctly using "adi_adrv9001_fh_Configuration_Inspect" after adrv9002_setup. But when i set hop signals in config to Hop_Signal_2 on purpose and then triggered only Hop_Signal_1 and it still performed hopping so i am not sure but the configuration may be returned to default.

    2-) I configured hop table A and hop table B and read back them correctly after adrv9002_setup.

    3-) I set hop table to use and read it back again before InitCalsRun. But when i try to set table B, it gives an error. "Is device in correct state for calling command?". The function does not indicate which state it should be called.

    4-) Assume i set table A, Then i created a loop and triggered hop signal. I am able to read current frame info correctly in each iteration using frame info inspect. But only the first frequency in the table is present in signal analyzer and it shows nothing for other n element in the table. For example if there is 5 elements in the list, i can see first one then nothing for duration of 4 frequencies, then again the first one is visible. Also rxgain and txatten values are reset to 0 in frame info inspect, only hopFrequencyHz and r1OffsetFrequencyHz are correct. It is same when i configure hop tables after adrv9002_setup.

    Best Regards

  • Hello CMirror,

    It's sounding more like the issue you're experiencing is more related to a misuse of the Auto TDD State Machine, rather than an API issue. You've learned that you need to use the HOP signal to drive the device into the RF Enabled state, but you must also use the Tx and Rx Enable pins to set the operation of the HOP. Has this been accounted for in your setup?

    If you have not already done so I suggest you read through the FH section of the User Guide, as well as inspect our Auto TDD guides, available on the Documents page of this forum, and in video format on YouTube:



    Between these two guides, you should have a better understanding of how to implement an Auto TDD setup. Pair this knowledge with the User Guide chapter on FH to progress with your application.

    Give these a try and report your experience here!

    Best Regards,