Post Go back to editing

AD9361 Split gain issue

Category: Software
Product Number: AD9361

Hello,

We are using a custom board (no OS driver), TDD mode. AGC is set to fast attack, with full gain around 2300 MHz. Everything works fine, but we’re trying to improve the receiver’s immunity to out-of-band blockers by switching to the split gain table (we are currently using the default tables).

The issue is that when the AD9361 is initialized with split_gain_table_mode_enable = 1 and HAVE_SPLIT_GAIN_TABLE = 1, AGC performance becomes very poor: we see many errors, DC issues, and IQ imbalance even without blockers.

Any guidance on the correct configuration procedure for split gain table mode would be greatly appreciated.

  • HI  

    AD9361 expects Full, valid gain tables loaded for BOTH bands, matching the exact analog front‑end design, Correct bandwidth‑dependent analog filter calibrations, Matching TIA gain vs. BBPF settings, Correct thresholds for fast‑AGC gain steps, Consistency between TDD timing, gain update timing, and RSSI settling.  

    If any of the above are not meeting, then it could cause the issue.

    Recommended procedure to enable split gain table:

    • Load both gain tables (low‑band and high‑band).
    • Re-run ALL analog calibrations after the split table is active.
    • Set correct AGC thresholds for the split tables.
    • Repeat calibrations for each TDD state.
    • Set correct split‑table crossover frequency.
    • Verify your custom RF front end (filters, LNA, matching).
    • Fast-AGC timing needs adjustment in TDD.

    For debugging, Pls disable AGC and test manual Rx gain on split table and see if it works or observing any DC/IQ errors. if you observe errors then your table is invalid for your RF front-end chain. Also please check on LNA gain if it is saturating mixer when split table is used.

    Regards,

    SJ

  • Hi  ,

    1) Since we are using no os driver, the procedure you mention already done by power up init once the split table is enabled by "split_gain_table_mode_enable"?

    2) what do you mean by "Repeat calibrations for each TDD state"? 

    3) how to check the mixer is saturated? I didn't find relevant register, even on Table 44. Control Output Table

    Thanks

  • HI  ,

    1) Yes partially, but if you change gain modes dynamically or use TDD where RX/TX switches rapidly, the initial calibration is not enough.

    2) Every time you switch between TX and RX in TDD mode, the AD9361 can end up with change in gain:

    Whenever the TDD scheduler switches states, the following calibration should be repeated or reloaded Rx DC offset, Tx DC offset.
    In linux these are automatically reapplied but in no-os you must trigger then manually.
    Each TDD state must realign the analog chain because split-gain tables cause large gain jumps → recalibrations required.

    3) There is NO direct register showing "mixer saturation" flag. You may try checking on High LMT overload or just apply lower signal values or gain change Flag and large gain drops could indicate you with better picture in your setup.
    Regards,
    SJ
  •  thanks for the explanation.

    Could you please clarify which exact function(s) you are referring to in the no-OS driver when you say the Rx DC offset and Tx DC offset calibrations must be manually triggered? and when (which ENSM state)?

     Are you referring to ad9361_do_calib()?