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
ADL8113 no-OS IIO support
The ADL8113 IIO driver comes on top of the ADL8113 driver and offers support for interfacing IIO clients through libiio.
ADL8113 IIO Device Configuration
Device Attributes
The ADL8113 IIO device does not have any device specific attributes.
Device Channels
The ADL8113 IIO device has 1 input channel:
Channel 0: voltage0
Channel Attributes
The voltage0 channel has the following attribute:
hardwaregain - The gain value corresponding to the current signal path. Writing a valid gain value selects the corresponding mode/path.
External Bypass Configuration
By default, only internal amplifier (14 dB) and internal bypass (-2 dB) modes are enabled. To enable external bypass paths, configure the init parameters:
adl8113_iio_ip.has_external_bypass_a = true;
adl8113_iio_ip.external_bypass_a_gain_db = 0; // Set gain for external path A
adl8113_iio_ip.has_external_bypass_b = true;
adl8113_iio_ip.external_bypass_b_gain_db = 0; // Set gain for external path B
ADL8113 IIO Driver Initialization Example
struct adl8113_iio_dev *adl8113_iio_desc;
struct adl8113_iio_init_param adl8113_iio_ip;
adl8113_iio_ip.adl8113_init_param = &adl8113_param;
adl8113_iio_ip.has_external_bypass_a = false;
adl8113_iio_ip.has_external_bypass_b = false;
ret = adl8113_iio_init(&adl8113_iio_desc, &adl8113_iio_ip);
if (ret)
return ret;
struct iio_app_device iio_devices[] = {
{
.name = "adl8113",
.dev = adl8113_iio_desc,
.dev_descriptor = adl8113_iio_desc->iio_dev,
.read_buff = NULL,
.write_buff = NULL,
},
};
struct iio_app_desc *app;
struct iio_app_init_param app_init_param = { 0 };
app_init_param.devices = iio_devices;
app_init_param.nb_devices = NO_OS_ARRAY_SIZE(iio_devices);
app_init_param.uart_init_params = uart_ip;
ret = iio_app_init(&app, app_init_param);
if (ret)
return ret;
return iio_app_run(app);