ADL8113 Driver

Overview

The ADL8113 is a 10MHz to 12GHz Low Noise Amplifier with integrated bypass switches. This driver provides digital control over the amplifier mode selection and enable/disable functionality.

The device features:

  • Low noise amplifier: 10MHz to 12GHz operation

  • Bypass switches: 10MHz to 14GHz operation

  • Noise figure: 3.8dB

  • Small signal gain: 14.0dB

  • Output 3rd order intercept point (OIP3): 35.5dBm

  • Digital control interface via GPIO pins

Digital Control Interface

The ADL8113 uses two GPIO control pins:

  • VA: Mode control pin A

  • VB: Mode control pin B

Operation Modes

The ADL8113 supports four operation modes controlled by VA and VB pins:

  • Internal Amplifier: VA=0, VB=0 - Signal passes through the internal low noise amplifier

  • Internal Bypass: VA=1, VB=1 - Signal bypasses through internal bypass path

  • External Bypass A: VA=0, VB=1 - Signal routes through external bypass path A

  • External Bypass B: VA=1, VB=0 - Signal routes through external bypass path B

API Functions

Initialization

int adl8113_init(struct adl8113_dev **device, struct adl8113_init_param *init_param)

Initialize the device and configure GPIO pins. Set initial mode as specified in init parameters.

Mode Control

int adl8113_set_mode(struct adl8113_dev *dev, enum adl8113_mode mode)

Set operation mode to ADL8113_INTERNAL_AMPLIFIER, ADL8113_INTERNAL_BYPASS, ADL8113_EXTERNAL_BYPASS_A, or ADL8113_EXTERNAL_BYPASS_B.

int adl8113_get_mode(struct adl8113_dev *dev, enum adl8113_mode *mode)

Get current operation mode.

Cleanup

int adl8113_remove(struct adl8113_dev *dev)

Free resources allocated during initialization.

Usage Example

struct adl8113_dev *dev;
struct adl8113_init_param init_param = {
    .gpio_va = { /* VA GPIO configuration */ },
    .gpio_vb = { /* VB GPIO configuration */ },
    .initial_mode = ADL8113_INTERNAL_AMPLIFIER
};

// Initialize the device
ret = adl8113_init(&dev, &init_param);
if (ret)
    return ret;

// Switch to external bypass A mode
ret = adl8113_set_mode(dev, ADL8113_EXTERNAL_BYPASS_A);
if (ret)
    goto cleanup;

cleanup:
adl8113_remove(dev);

Dependencies

  • no_os_gpio.h

  • no_os_error.h

  • no_os_alloc.h