no-OS
Loading...
Searching...
No Matches
adgm3121.h File Reference

Header file of ADGM3121 Driver. More...

#include <stdint.h>
#include <stdbool.h>
#include "no_os_spi.h"
#include "no_os_gpio.h"
#include "no_os_util.h"
Include dependency graph for adgm3121.h:

Classes

struct  adgm3121_dev
 Device structure. More...
 
struct  adgm3121_init_param
 Initialization parameters. More...
 

Macros

#define ADGM3121_REG_SWITCH_DATA   0x20
 
#define ADGM3121_SW1_EN   NO_OS_BIT(0)
 
#define ADGM3121_SW2_EN   NO_OS_BIT(1)
 
#define ADGM3121_SW3_EN   NO_OS_BIT(2)
 
#define ADGM3121_SW4_EN   NO_OS_BIT(3)
 
#define ADGM3121_INTERNAL_ERROR   NO_OS_GENMASK(7, 6)
 
#define ADGM3121_RESERVED   NO_OS_GENMASK(5, 4)
 
#define ADGM3121_SPI_READ   NO_OS_BIT(15)
 
#define ADGM3121_SPI_WRITE   0
 
#define ADGM3121_SPI_ADDR_MSK   NO_OS_GENMASK(14, 8)
 
#define ADGM3121_SPI_DAISY_CHAIN_CMD   0x2500
 
#define ADGM3121_SWITCHING_TIME_US   200
 
#define ADGM3121_POWER_UP_TIME_MS   5
 
#define ADGM3053_POWER_UP_TIME_MS   5
 

Enumerations

enum  adgm3121_type {
  ID_ADGM3121 ,
  ID_ADGM3053
}
 Device type enumeration. More...
 
enum  adgm3121_switch {
  ADGM3121_SW1 ,
  ADGM3121_SW2 ,
  ADGM3121_SW3 ,
  ADGM3121_SW4
}
 Switch enumeration (valid for both devices) More...
 
enum  adgm3121_state {
  ADGM3121_DISABLE ,
  ADGM3121_ENABLE
}
 Switch state enumeration. More...
 
enum  adgm3121_mode {
  ADGM3121_MODE_PARALLEL ,
  ADGM3121_MODE_SPI
}
 Control mode enumeration. More...
 

Functions

int adgm3121_init (struct adgm3121_dev **device, struct adgm3121_init_param *init_param)
 Initialize the device.
 
int adgm3121_remove (struct adgm3121_dev *dev)
 Free resources allocated by adgm3121_init()
 
int adgm3121_set_switch_state (struct adgm3121_dev *dev, enum adgm3121_switch sw, enum adgm3121_state state)
 Set the state of a specific switch.
 
int adgm3121_get_switch_state (struct adgm3121_dev *dev, enum adgm3121_switch sw, enum adgm3121_state *state)
 Get the current state of a specific switch.
 
int adgm3121_set_switches (struct adgm3121_dev *dev, uint8_t switch_mask)
 Set multiple switches at once using bitmask.
 
int adgm3121_get_switches (struct adgm3121_dev *dev, uint8_t *switch_mask)
 Get all switch states as bitmask.
 
int adgm3121_reset_switches (struct adgm3121_dev *dev)
 Reset all switches to off state.
 
int adgm3121_enter_daisy_chain_mode (struct adgm3121_dev *dev)
 Enter SPI daisy chain mode.
 
int adgm3121_check_internal_error (struct adgm3121_dev *dev, uint8_t *error_status)
 Check for internal errors.
 
int adgm3121_write_register (struct adgm3121_dev *dev, uint8_t reg_addr, uint8_t data)
 Write to device register via SPI.
 
int adgm3121_read_register (struct adgm3121_dev *dev, uint8_t reg_addr, uint8_t *data)
 Read from device register via SPI.
 

Detailed Description

Header file of ADGM3121 Driver.

Author
Antoniu Miclaus (anton.nosp@m.iu.m.nosp@m.iclau.nosp@m.s@an.nosp@m.alog..nosp@m.com)

Copyright 2025(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ ADGM3053_POWER_UP_TIME_MS

#define ADGM3053_POWER_UP_TIME_MS   5

◆ ADGM3121_INTERNAL_ERROR

#define ADGM3121_INTERNAL_ERROR   NO_OS_GENMASK(7, 6)

◆ ADGM3121_POWER_UP_TIME_MS

#define ADGM3121_POWER_UP_TIME_MS   5

◆ ADGM3121_REG_SWITCH_DATA

#define ADGM3121_REG_SWITCH_DATA   0x20

◆ ADGM3121_RESERVED

#define ADGM3121_RESERVED   NO_OS_GENMASK(5, 4)

◆ ADGM3121_SPI_ADDR_MSK

#define ADGM3121_SPI_ADDR_MSK   NO_OS_GENMASK(14, 8)

◆ ADGM3121_SPI_DAISY_CHAIN_CMD

#define ADGM3121_SPI_DAISY_CHAIN_CMD   0x2500

◆ ADGM3121_SPI_READ

#define ADGM3121_SPI_READ   NO_OS_BIT(15)

◆ ADGM3121_SPI_WRITE

#define ADGM3121_SPI_WRITE   0

◆ ADGM3121_SW1_EN

#define ADGM3121_SW1_EN   NO_OS_BIT(0)

◆ ADGM3121_SW2_EN

#define ADGM3121_SW2_EN   NO_OS_BIT(1)

◆ ADGM3121_SW3_EN

#define ADGM3121_SW3_EN   NO_OS_BIT(2)

◆ ADGM3121_SW4_EN

#define ADGM3121_SW4_EN   NO_OS_BIT(3)

◆ ADGM3121_SWITCHING_TIME_US

#define ADGM3121_SWITCHING_TIME_US   200

Enumeration Type Documentation

◆ adgm3121_mode

Control mode enumeration.

Enumerator
ADGM3121_MODE_PARALLEL 
ADGM3121_MODE_SPI 

◆ adgm3121_state

Switch state enumeration.

Enumerator
ADGM3121_DISABLE 
ADGM3121_ENABLE 

◆ adgm3121_switch

Switch enumeration (valid for both devices)

Enumerator
ADGM3121_SW1 
ADGM3121_SW2 
ADGM3121_SW3 
ADGM3121_SW4 

◆ adgm3121_type

Device type enumeration.

Enumerator
ID_ADGM3121 
ID_ADGM3053 

Function Documentation

◆ adgm3121_check_internal_error()

int adgm3121_check_internal_error ( struct adgm3121_dev * dev,
uint8_t * error_status )

Check for internal errors.

Parameters
dev- The device structure
error_status- Pointer to store error status (bits 7:6)
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_enter_daisy_chain_mode()

int adgm3121_enter_daisy_chain_mode ( struct adgm3121_dev * dev)

Enter SPI daisy chain mode.

Parameters
dev- The device structure
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_get_switch_state()

int adgm3121_get_switch_state ( struct adgm3121_dev * dev,
enum adgm3121_switch sw,
enum adgm3121_state * state )

Get the current state of a specific switch.

Parameters
dev- The device structure
sw- The switch to read (SW1 to SW4)
state- Pointer to store the current state
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_get_switches()

int adgm3121_get_switches ( struct adgm3121_dev * dev,
uint8_t * switch_mask )

Get all switch states as bitmask.

Parameters
dev- The device structure
switch_mask- Pointer to store switch states bitmask
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_init()

int adgm3121_init ( struct adgm3121_dev ** device,
struct adgm3121_init_param * init_param )

Initialize the device.

Parameters
device- Pointer to the device structure pointer
init_param- Pointer to the initialization parameters
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_read_register()

int adgm3121_read_register ( struct adgm3121_dev * dev,
uint8_t reg_addr,
uint8_t * data )

Read from device register via SPI.

Parameters
dev- The device structure
reg_addr- Register address
data- Pointer to store read data
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_remove()

int adgm3121_remove ( struct adgm3121_dev * dev)

Free resources allocated by adgm3121_init()

Parameters
dev- The device structure
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_reset_switches()

int adgm3121_reset_switches ( struct adgm3121_dev * dev)

Reset all switches to off state.

Parameters
dev- The device structure
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_set_switch_state()

int adgm3121_set_switch_state ( struct adgm3121_dev * dev,
enum adgm3121_switch sw,
enum adgm3121_state state )

Set the state of a specific switch.

Parameters
dev- The device structure
sw- The switch to control (SW1 to SW4)
state- The desired state (ADGM3121_ENABLE or ADGM3121_DISABLE)
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_set_switches()

int adgm3121_set_switches ( struct adgm3121_dev * dev,
uint8_t switch_mask )

Set multiple switches at once using bitmask.

Parameters
dev- The device structure
switch_mask- Bitmask of switches to enable (bits 0-3)
Returns
0 in case of success, negative error code otherwise

◆ adgm3121_write_register()

int adgm3121_write_register ( struct adgm3121_dev * dev,
uint8_t reg_addr,
uint8_t data )

Write to device register via SPI.

Parameters
dev- The device structure
reg_addr- Register address
data- Data to write
Returns
0 in case of success, negative error code otherwise