The ADRV9009‘s Slicer GPIOs are not working with AGC Mode 2

HI,We use adrv9009 chip with version "adrv9009 Rev 192, Firmware 6.0.2 API version: 3.6.0.5". We  try to use the agc mode 2(Mode 2—Digital Gain Compensation with Slicer GPIO Outputs).

The setting profile is "tx_bw400_ir491p52_rx_bw200_or245p76_orx_bw400_or491p52_dc245p76"

The slicer GPIO outputs are gpio(8,9,10, 12,13,14) of adrv9009. we  use pin mode with api "TALISE_setRadioCtlPinMode(phy->talDevice, TAL_TXRX_PIN_MODE|TAL_ORX_PIN_MODE|TAL_ORX_SEL|TAL_ORX_ENAB_SEL_PIN, TAL_ORX1ORX2_PAIR_45_SEL);"

If we do not use pin mode, the slicer gpios(8,9,10, 12,13,14) of adrv9009 are working good. for example, the gpios(10 9 8) value is 0 0 1 when Rx1 receive radio signal with -5db, and Digital gain  is Compensed.

But if we use the pin mode, the slicer gpios(8,9,10, 12,13,14) of adrv9009 are not working. and the Digital gain is working good. for example,  the gpios(10 9 8) value is 0 0 0 when Rx1 receive radio signal with -5db, and Digital gain  is Compensed.

would you please give me some suguestion about that. Thank you.

Parents
  • 0
    •  Analog Employees 
    on May 15, 2020 8:58 AM 6 months ago in reply to jerry-yang

    For mode2 , Are you configuring GPIO control correctly?. TALISE_setGpioSourceCtrl() function.

     

     

    Also are correct GPIO pins assigned for Slicer? . taliseRx1ExtSlicerGpioSelect_t and taliseRx2ExtSlicerGpioSelect_t.

     

    Please post your Linux driver-related queries in Linux support forum,

    https://ez.analog.com/linux-software-drivers/

  • I have done followed your suggestion, but the agc gpio is still unworking with pin mode.

    Here is the 10 steps of api sequense.

    If I delete the 10th step, -5DB signal is connetced the Rx1, the gpio 10,9,8 output values are 0,0,1.  otherwise the gpio 10,9,8 output values are 0,0,0. please help. thank you.

    /*for ad9009 gipoin: 2,3,4,5; gpioout: 8,9,10,12,13,14*/

    1, TALISE_radioOff(phy->talDevice)

    2, TALISE_setGpioOe(phy->talDevice, 0x00007700, 0x0000773C);

    /*gpio:14,13,12,10,9,8->aa->GPIO_SLICER_OUT_MODE; gpio:5,4,3,2->99->GPIO_ARM_OUT_MODE*/

    3, TALISE_setGpioSourceCtrl(phy->talDevice, 0x0000aa00);

    4, TALISE_radioOn(phy->talDevice);

    5, TALISE_setRxTxEnable(phy->talDevice,
           has_rx_and_en(phy) ? TAL_RX1RX2_EN : 0,
          has_tx_and_en(phy) ? TAL_TX1TX2 : 0);

    6, TALISE_getRxDataFormat(phy->talDevice,&test_rxdataformat);

    7, test_rxdataformat.formatSelect = TAL_GAIN_WITH_INTSLICER;

    8, TALISE_setRxDataFormat(phy->talDevice,&test_rxdataformat);

    9, TALISE_setRxGainControlMode(phy->talDevice, TAL_AGCSLOW);

    10, TALISE_setRadioCtlPinMode(phy->talDevice, TAL_TXRX_PIN_MODE|TAL_ORX_PIN_MODE|TAL_ORX_SEL|TAL_ORX_ENAB_SEL_PIN, TAL_ORX1ORX2_PAIR_45_SEL);

Reply
  • I have done followed your suggestion, but the agc gpio is still unworking with pin mode.

    Here is the 10 steps of api sequense.

    If I delete the 10th step, -5DB signal is connetced the Rx1, the gpio 10,9,8 output values are 0,0,1.  otherwise the gpio 10,9,8 output values are 0,0,0. please help. thank you.

    /*for ad9009 gipoin: 2,3,4,5; gpioout: 8,9,10,12,13,14*/

    1, TALISE_radioOff(phy->talDevice)

    2, TALISE_setGpioOe(phy->talDevice, 0x00007700, 0x0000773C);

    /*gpio:14,13,12,10,9,8->aa->GPIO_SLICER_OUT_MODE; gpio:5,4,3,2->99->GPIO_ARM_OUT_MODE*/

    3, TALISE_setGpioSourceCtrl(phy->talDevice, 0x0000aa00);

    4, TALISE_radioOn(phy->talDevice);

    5, TALISE_setRxTxEnable(phy->talDevice,
           has_rx_and_en(phy) ? TAL_RX1RX2_EN : 0,
          has_tx_and_en(phy) ? TAL_TX1TX2 : 0);

    6, TALISE_getRxDataFormat(phy->talDevice,&test_rxdataformat);

    7, test_rxdataformat.formatSelect = TAL_GAIN_WITH_INTSLICER;

    8, TALISE_setRxDataFormat(phy->talDevice,&test_rxdataformat);

    9, TALISE_setRxGainControlMode(phy->talDevice, TAL_AGCSLOW);

    10, TALISE_setRadioCtlPinMode(phy->talDevice, TAL_TXRX_PIN_MODE|TAL_ORX_PIN_MODE|TAL_ORX_SEL|TAL_ORX_ENAB_SEL_PIN, TAL_ORX1ORX2_PAIR_45_SEL);

Children