accel22 2.0.0.0
accel22.h File Reference

This file contains API for Accel 22 Click Driver. More...

#include "drv_digital_out.h"
#include "drv_digital_in.h"
#include "drv_i2c_master.h"
#include "drv_spi_master.h"
#include "spi_specifics.h"

Go to the source code of this file.

Data Structures

struct  accel22_s
 Accel 22 Click context object. More...
 
struct  accel22_cfg_t
 Accel 22 Click configuration object. More...
 
struct  accel22_axes_t
 Accel 22 Click Axes data structure. More...
 

Macros

#define ACCEL22_REG_DEVID_AD   0x00
 Accel 22 register map.
 
#define ACCEL22_REG_DEVID_MST   0x01
 
#define ACCEL22_REG_PART_ID   0x02
 
#define ACCEL22_REG_REV_ID   0x03
 
#define ACCEL22_REG_SERIAL_NUMBER_3   0x04
 
#define ACCEL22_REG_SERIAL_NUMBER_2   0x05
 
#define ACCEL22_REG_SERIAL_NUMBER_1   0x06
 
#define ACCEL22_REG_SERIAL_NUMBER_0   0x07
 
#define ACCEL22_REG_XDATA   0x08
 
#define ACCEL22_REG_YDATA   0x09
 
#define ACCEL22_REG_ZDATA   0x0A
 
#define ACCEL22_REG_STATUS   0x0B
 
#define ACCEL22_REG_FIFO_ENTRIES_L   0x0C
 
#define ACCEL22_REG_FIFO_ENTRIES_H   0x0D
 
#define ACCEL22_REG_XDATA_H   0x0E
 
#define ACCEL22_REG_XDATA_L   0x0F
 
#define ACCEL22_REG_YDATA_H   0x10
 
#define ACCEL22_REG_YDATA_L   0x11
 
#define ACCEL22_REG_ZDATA_H   0x12
 
#define ACCEL22_REG_ZDATA_L   0x13
 
#define ACCEL22_REG_TEMP_H   0x14
 
#define ACCEL22_REG_TEMP_L   0x15
 
#define ACCEL22_REG_EX_ADC_H   0x16
 
#define ACCEL22_REG_EX_ADC_L   0x17
 
#define ACCEL22_REG_I2C_FIFO_DATA   0x18
 
#define ACCEL22_REG_SOFT_RESET   0x19
 
#define ACCEL22_REG_THRESH_ACT_H   0x20
 
#define ACCEL22_REG_THRESH_ACT_L   0x21
 
#define ACCEL22_REG_TIME_ACT   0x22
 
#define ACCEL22_REG_THRESH_INACT_H   0x23
 
#define ACCEL22_REG_THRESH_INACT_L   0x24
 
#define ACCEL22_REG_TIME_INACT_H   0x25
 
#define ACCEL22_REG_TIME_INACT_L   0x26
 
#define ACCEL22_REG_ACT_INACT_CTL   0x27
 
#define ACCEL22_REG_FIFO_CONTROL   0x28
 
#define ACCEL22_REG_FIFO_SAMPLES   0x29
 
#define ACCEL22_REG_INTMAP1_LOWER   0x2A
 
#define ACCEL22_REG_INTMAP2_LOWER   0x2B
 
#define ACCEL22_REG_FILTER_CTL   0x2C
 
#define ACCEL22_REG_POWER_CTL   0x2D
 
#define ACCEL22_REG_SELF_TEST   0x2E
 
#define ACCEL22_REG_TAP_THRESH   0x2F
 
#define ACCEL22_REG_TAP_DUR   0x30
 
#define ACCEL22_REG_TAP_LATENT   0x31
 
#define ACCEL22_REG_TAP_WINDOW   0x32
 
#define ACCEL22_REG_X_OFFSET   0x33
 
#define ACCEL22_REG_Y_OFFSET   0x34
 
#define ACCEL22_REG_Z_OFFSET   0x35
 
#define ACCEL22_REG_X_SENS   0x36
 
#define ACCEL22_REG_Y_SENS   0x37
 
#define ACCEL22_REG_Z_SENS   0x38
 
#define ACCEL22_REG_TIMER_CTL   0x39
 
#define ACCEL22_REG_INTMAP1_UPPER   0x3A
 
#define ACCEL22_REG_INTMAP2_UPPER   0x3B
 
#define ACCEL22_REG_ADC_CTL   0x3C
 
#define ACCEL22_REG_TEMP_CTL   0x3D
 
#define ACCEL22_REG_TEMP_ADC_OVER_THRSH_H   0x3E
 
#define ACCEL22_REG_TEMP_ADC_OVER_THRSH_L   0x3F
 
#define ACCEL22_REG_TEMP_ADC_UNDER_THRSH_H   0x40
 
#define ACCEL22_REG_TEMP_ADC_UNDER_THRSH_L   0x41
 
#define ACCEL22_REG_TEMP_ADC_TIMER   0x42
 
#define ACCEL22_REG_AXIS_MASK   0x43
 
#define ACCEL22_REG_STATUS_COPY   0x44
 
#define ACCEL22_REG_STATUS_2   0x45
 
#define ACCEL22_INTMAP1_LOWER_INT_LOW   0x80
 Accel 22 INTMAP1_LOWER register settings.
 
#define ACCEL22_INTMAP1_LOWER_AWAKE   0x40
 
#define ACCEL22_INTMAP1_LOWER_INACT   0x20
 
#define ACCEL22_INTMAP1_LOWER_ACT   0x10
 
#define ACCEL22_INTMAP1_LOWER_FIFO_OR   0x08
 
#define ACCEL22_INTMAP1_LOWER_FIFO_WM   0x04
 
#define ACCEL22_INTMAP1_LOWER_FIFO_RDY   0x02
 
#define ACCEL22_INTMAP1_LOWER_DATA_RDY   0x01
 
#define ACCEL22_POWER_CTL_EXT_CLK   0x40
 Accel 22 POWER_CTL register settings.
 
#define ACCEL22_POWER_CTL_NOISE_NORMAL   0x00
 
#define ACCEL22_POWER_CTL_NOISE_LOW   0x10
 
#define ACCEL22_POWER_CTL_NOISE_ULTRALOW   0x20
 
#define ACCEL22_POWER_CTL_NOISE_BIT_MASK   0x30
 
#define ACCEL22_POWER_CTL_WAKEUP   0x08
 
#define ACCEL22_POWER_CTL_AUTOSLEEP   0x04
 
#define ACCEL22_POWER_CTL_STANDBY_MODE   0x00
 
#define ACCEL22_POWER_CTL_MEASUREMENT_MODE   0x02
 
#define ACCEL22_SOFT_RESET   0x52
 Accel 22 soft reset value.
 
#define ACCEL22_ENABLE_TEMPERATURE   0x01
 Accel 22 enable temperature and adc measurement values.
 
#define ACCEL22_ENABLE_ADC   0x01
 
#define ACCEL22_ACCEL_2G_RES   0.25
 Accel 22 calculation values.
 
#define ACCEL22_ACCEL_4G_RES   0.5
 
#define ACCEL22_ACCEL_8G_RES   1.0
 
#define ACCEL22_ROOM_TEMPERATURE   25.0
 
#define ACCEL22_TEMPERATURE_BIAS   165
 
#define ACCEL22_TEMPERATURE_RES   54.0
 
#define ACCEL22_TEMPERATURE_CAL_SAMPLE_NUM   100
 
#define ACCEL22_ADC_VREG   1.098
 
#define ACCEL22_ADC_RES   0x3FFF
 
#define ACCEL22_ADC_OFFSET   0x2000
 
#define ACCEL22_ADI_DEVICE_ID   0xAD
 Accel 22 device ID register values.
 
#define ACCEL22_MEMS_DEVICE_ID   0x1D
 
#define ACCEL22_PART_ID   0xF7
 
#define ACCEL22_SPI_WRITE_REG   0x0A
 Accel 22 SPI command values.
 
#define ACCEL22_SPI_READ_REG   0x0B
 
#define ACCEL22_SPI_READ_FIFO   0x0D
 
#define ACCEL22_DEVICE_ADDRESS_0   0x1D
 Accel 22 device address setting.
 
#define ACCEL22_DEVICE_ADDRESS_1   0x53
 
#define ACCEL22_SET_DATA_SAMPLE_EDGE   SET_SPI_DATA_SAMPLE_EDGE
 Data sample selection.
 
#define ACCEL22_SET_DATA_SAMPLE_MIDDLE   SET_SPI_DATA_SAMPLE_MIDDLE
 
#define ACCEL22_MAP_MIKROBUS(cfg, mikrobus)
 MikroBUS pin mapping.
 

Typedefs

typedef err_t(* accel22_master_io_t) (struct accel22_s *, uint8_t, uint8_t *, uint8_t)
 Accel 22 Click driver interface.
 
typedef struct accel22_s accel22_t
 Accel 22 Click context object.
 

Enumerations

enum  accel22_drv_t { ACCEL22_DRV_SEL_SPI , ACCEL22_DRV_SEL_I2C }
 Accel 22 Click driver selector. More...
 
enum  accel22_range_t { ACCEL22_2G = 0x00 , ACCEL22_4G = 0x01 , ACCEL22_8G = 0x02 , ACCEL22_RANGE_BIT_MASK = 0xC0 }
 Accel 22 Click accel range selection. More...
 
enum  accel22_odr_t {
  ACCEL22_12p5HZ = 0x00 , ACCEL22_25HZ , ACCEL22_50HZ , ACCEL22_100HZ ,
  ACCEL22_200HZ , ACCEL22_400HZ , ACCEL22_ODR_BIT_MASK = 0x07
}
 Accel 22 Click output data rate. More...
 
enum  accel22_return_value_t { ACCEL22_OK = 0 , ACCEL22_ERROR = -1 }
 Accel 22 Click return value data. More...
 

Functions

void accel22_cfg_setup (accel22_cfg_t *cfg)
 Accel 22 configuration object setup function.
 
void accel22_drv_interface_selection (accel22_cfg_t *cfg, accel22_drv_t drv_sel)
 Accel 22 driver interface setup function.
 
err_t accel22_init (accel22_t *ctx, accel22_cfg_t *cfg)
 Accel 22 initialization function.
 
err_t accel22_default_cfg (accel22_t *ctx)
 Accel 22 default configuration function.
 
err_t accel22_generic_write (accel22_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
 Accel 22 data writing function.
 
err_t accel22_generic_read (accel22_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
 Accel 22 data reading function.
 
err_t accel22_write_register (accel22_t *ctx, uint8_t reg, uint8_t data_in)
 Accel 22 write register function.
 
err_t accel22_read_register (accel22_t *ctx, uint8_t reg, uint8_t *data_out)
 Accel 22 read register function.
 
err_t accel22_check_communication (accel22_t *ctx)
 Accel 22 check communication function.
 
uint8_t accel22_get_int1_pin (accel22_t *ctx)
 Accel 22 get int1 pin function.
 
uint8_t accel22_get_int2_pin (accel22_t *ctx)
 Accel 22 get int2 pin function.
 
err_t accel22_set_filter_config (accel22_t *ctx, accel22_range_t range, accel22_odr_t odr)
 Accel 22 set filter config function.
 
err_t accel22_get_axes (accel22_t *ctx, accel22_axes_t *axes)
 Accel 22 get axes function.
 
err_t accel22_enable_temperature_measurement (accel22_t *ctx)
 Accel 22 enable temperature measurement function.
 
err_t accel22_enable_adc_measurement (accel22_t *ctx)
 Accel 22 enable ADC measurement function.
 
err_t accel22_calibrate_temperature (accel22_t *ctx, float room_temperature)
 Accel 22 calibrate temperature function.
 
err_t accel22_get_temperature (accel22_t *ctx, float *temperature)
 Accel 22 get temperature function.
 
err_t accel22_get_adc (accel22_t *ctx, float *v_adc)
 Accel 22 get adc function.
 

Detailed Description

This file contains API for Accel 22 Click Driver.

Typedef Documentation

◆ accel22_master_io_t

typedef err_t(* accel22_master_io_t) (struct accel22_s *, uint8_t, uint8_t *, uint8_t)

Accel 22 Click driver interface.

Definition of driver interface of Accel 22 Click driver. Driver serial interface.

◆ accel22_t

typedef struct accel22_s accel22_t

Accel 22 Click context object.

Context object definition of Accel 22 Click driver.

Enumeration Type Documentation

◆ accel22_drv_t

Accel 22 Click driver selector.

Selects target driver interface of Accel 22 Click driver.

Enumerator
ACCEL22_DRV_SEL_SPI 

SPI driver descriptor.

ACCEL22_DRV_SEL_I2C 

I2C driver descriptor.

◆ accel22_odr_t

Accel 22 Click output data rate.

Predefined enum values for driver output data rate.

Enumerator
ACCEL22_12p5HZ 
ACCEL22_25HZ 
ACCEL22_50HZ 
ACCEL22_100HZ 
ACCEL22_200HZ 
ACCEL22_400HZ 
ACCEL22_ODR_BIT_MASK 

◆ accel22_range_t

Accel 22 Click accel range selection.

Predefined enum values for driver accel range selection.

Enumerator
ACCEL22_2G 
ACCEL22_4G 
ACCEL22_8G 
ACCEL22_RANGE_BIT_MASK 

◆ accel22_return_value_t

Accel 22 Click return value data.

Predefined enum values for driver return values.

Enumerator
ACCEL22_OK 
ACCEL22_ERROR