accel6 2.0.0.0
accel6.h File Reference

This file contains API for Accel 6 Click driver. More...

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

Go to the source code of this file.

Data Structures

struct  accel6_s
 Click ctx object definition. More...
 
struct  accel6_cfg_t
 Click configuration structure definition. More...
 

Macros

#define ACCEL6_MAP_MIKROBUS(cfg, mikrobus)
 
#define ACCEL6_MASTER_I2C   0
 
#define ACCEL6_MASTER_SPI   1
 
#define ACCEL6_RETVAL   uint8_t
 
#define ACCEL6_OK   0x00
 
#define ACCEL6_INIT_ERROR   0xFF
 
#define ACCEL6_CHIP_ID   0xFB
 
#define ACCEL6_SOFT_RESET   0xB6
 
#define ACCEL6_AXIS_X   0x02
 
#define ACCEL6_AXIS_Y   0x04
 
#define ACCEL6_AXIS_Z   0x06
 
#define ACCEL6_REG_CHIP_ID   0x00
 
#define ACCEL6_REG_AXIS_X_LSB   0x02
 
#define ACCEL6_REG_AXIS_X_MSB   0x03
 
#define ACCEL6_REG_AXIS_Y_LSB   0x04
 
#define ACCEL6_REG_AXIS_Y_MSB   0x05
 
#define ACCEL6_REG_AXIS_Z_LSB   0x06
 
#define ACCEL6_REG_AXIS_Z_MSB   0x07
 
#define ACCEL6_REG_TEMPERATURE   0x08
 
#define ACCEL6_REG_INT_STATUS_0   0x09
 
#define ACCEL6_REG_INT_STATUS_1   0x0A
 
#define ACCEL6_REG_INT_STATUS_2   0x0B
 
#define ACCEL6_REG_INT_STATUS_3   0x0C
 
#define ACCEL6_REG_FIFO_STATUS   0x0E
 
#define ACCEL6_REG_PMU_RANGE   0x0F
 
#define ACCEL6_REG_PMU_BW   0x10
 
#define ACCEL6_REG_PMU_LPW   0x11
 
#define ACCEL6_REG_PMU_LOW_POWER   0x12
 
#define ACCEL6_REG_ACCD_HBW   0x13
 
#define ACCEL6_REG_BGW_SOFTRESET   0x14
 
#define ACCEL6_REG_INT_EN_0   0x16
 
#define ACCEL6_REG_INT_EN_1   0x17
 
#define ACCEL6_REG_INT_EN_2   0x18
 
#define ACCEL6_REG_INT_MAP_0   0x19
 
#define ACCEL6_REG_INT_MAP_1   0x1A
 
#define ACCEL6_REG_INT_MAP_2   0x1B
 
#define ACCEL6_REG_INT_SRC   0x1E
 
#define ACCEL6_REG_INT_OUT_CTRL   0x20
 
#define ACCEL6_REG_INT_RST_LATCH   0x21
 
#define ACCEL6_REG_INT1   0x23
 
#define ACCEL6_REG_INT2   0x24
 
#define ACCEL6_REG_INT3   0x25
 
#define ACCEL6_REG_INT4   0x26
 
#define ACCEL6_REG_INT5   0x27
 
#define ACCEL6_REG_INT6   0x28
 
#define ACCEL6_REG_INT7   0x29
 
#define ACCEL6_REG_INT8   0x2A
 
#define ACCEL6_REG_INT9   0x2B
 
#define ACCEL6_REG_INT_A   0x2C
 
#define ACCEL6_REG_INT_B   0x2D
 
#define ACCEL6_REG_INT_C   0x2E
 
#define ACCEL6_REG_INT_D   0x2F
 
#define ACCEL6_REG_FIFO_CONFIG_0   0x30
 
#define ACCEL6_REG_PMU_SELF_TEST   0x32
 
#define ACCEL6_REG_TRIM_NVM_CTRL   0x33
 
#define ACCEL6_REG_BGW_SPI3_WDT   0x34
 
#define ACCEL6_REG_OFC_CTRL   0x36
 
#define ACCEL6_REG_OFC_SETTINGS   0x37
 
#define ACCEL6_REG_OFC_OFFSET_X   0x38
 
#define ACCEL6_REG_OFC_OFFSET_Y   0x39
 
#define ACCEL6_REG_OFC_OFFSET_Z   0x3A
 
#define ACCEL6_REG_TRIM_GP_0   0x3B
 
#define ACCEL6_REG_TRIM_GP_1   0x3C
 
#define ACCEL6_REG_FIFO_CONFIG_1   0x3E
 
#define ACCEL6_REG_FIFO_DATA   0x3F
 
#define ACCEL6_STATUS_0_FLAT_INT   0x80
 
#define ACCEL6_STATUS_0_ORIENT_INT   0x40
 
#define ACCEL6_STATUS_0_SINGLE_TAP_INT   0x20
 
#define ACCEL6_STATUS_0_DOUBLE_TAP_INT   0x10
 
#define ACCEL6_STATUS_0_MOTION_INT   0x08
 
#define ACCEL6_STATUS_0_SLOPE_INT   0x04
 
#define ACCEL6_STATUS_0_HIGH_INT   0x02
 
#define ACCEL6_STATUS_0_LOW_INT   0x01
 
#define ACCEL6_STATUS_1_DATA_INT   0x80
 
#define ACCEL6_STATUS_1_FIFO_WM_INT   0x40
 
#define ACCEL6_STATUS_1_FIFO_FULL_INT   0x20
 
#define ACCEL6_STATUS_2_TAP_SING   0x80
 
#define ACCEL6_STATUS_2_TAP_FIRST_Z   0x40
 
#define ACCEL6_STATUS_2_TAP_FIRST_Y   0x20
 
#define ACCEL6_STATUS_2_TAP_FIRST_X   0x10
 
#define ACCEL6_STATUS_2_SLOPE_SING   0x08
 
#define ACCEL6_STATUS_2_SLOPE_FIRST_Z   0x04
 
#define ACCEL6_STATUS_2_SLOPE_FIRST_Y   0x02
 
#define ACCEL6_STATUS_2_SLOPE_FIRST_X   0x01
 
#define ACCEL6_STATUS_3_FLAT_POSITION   0x80
 
#define ACCEL6_STATUS_3_ORIENT_Z_UPWARD   0x00
 
#define ACCEL6_STATUS_3_ORIENT_Z_DOWNWARD   0x40
 
#define ACCEL6_STATUS_3_ORIENT_XY_UPRIGHT   0x00
 
#define ACCEL6_STATUS_3_ORIENT_XY_UPSIDE   0x10
 
#define ACCEL6_STATUS_3_ORIENT_XY_LANDSCAPE_LEFT   0x20
 
#define ACCEL6_STATUS_3_ORIENT_XY_LANDSCAPE_RIGHT   0x30
 
#define ACCEL6_STATUS_3_HIGH_SING_POSITIVE   0x00
 
#define ACCEL6_STATUS_3_HIGH_SING_NEGATIVE   0x08
 
#define ACCEL6_STATUS_3_HIGH_FIRST_Z   0x04
 
#define ACCEL6_STATUS_3_HIGH_FIRST_Y   0x02
 
#define ACCEL6_STATUS_3_HIGH_FIRST_X   0x01
 
#define ACCEL6_PMU_RANGE_2g   0x03
 
#define ACCEL6_PMU_RANGE_4g   0x05
 
#define ACCEL6_PMU_RANGE_8g   0x08
 
#define ACCEL6_PMU_RANGE_16g   0x0C
 
#define ACCEL6_PMU_BW_7_81Hz   0x08
 
#define ACCEL6_PMU_BW_15_63Hz   0x09
 
#define ACCEL6_PMU_BW_31_25Hz   0x0A
 
#define ACCEL6_PMU_BW_62_5Hz   0x0B
 
#define ACCEL6_PMU_BW_125Hz   0x0C
 
#define ACCEL6_PMU_BW_250Hz   0x0D
 
#define ACCEL6_PMU_BW_500Hz   0x0E
 
#define ACCEL6_PMU_LPW_NORMAL_MODE   0x00
 
#define ACCEL6_PMU_LPW_DEEP_SUSPEND_MODE   0x20
 
#define ACCEL6_PMU_LPW_LOW_POWER_MODE   0x40
 
#define ACCEL6_PMU_LPW_SUSPEND_MODE   0x80
 
#define ACCEL6_PMU_LPW_SLEEP_0_5ms   0x05
 
#define ACCEL6_PMU_LPW_SLEEP_1ms   0x06
 
#define ACCEL6_PMU_LPW_SLEEP_2ms   0x07
 
#define ACCEL6_PMU_LPW_SLEEP_4ms   0x08
 
#define ACCEL6_PMU_LPW_SLEEP_6ms   0x09
 
#define ACCEL6_PMU_LPW_SLEEP_10ms   0x0A
 
#define ACCEL6_PMU_LPW_SLEEP_25ms   0x0B
 
#define ACCEL6_PMU_LPW_SLEEP_50ms   0x0C
 
#define ACCEL6_PMU_LPW_SLEEP_100ms   0x0D
 
#define ACCEL6_PMU_LPW_SLEEP_500ms   0x0E
 
#define ACCEL6_INT_EN_0_FLAT_ENABLE   0x80
 
#define ACCEL6_INT_EN_0_ORIENT_ENABLE   0x40
 
#define ACCEL6_INT_EN_0_SINGLE_TAP_ENABLE   0x20
 
#define ACCEL6_INT_EN_0_DOUBLE_TAP_ENABLE   0x10
 
#define ACCEL6_INT_EN_0_SLOPE_Z_ENABLE   0x04
 
#define ACCEL6_INT_EN_0_SLOPE_Y_ENABLE   0x02
 
#define ACCEL6_INT_EN_0_SLOPE_X_ENABLE   0x01
 
#define ACCEL6_INT_EN_1_FIFO_WM_ENABLE   0x40
 
#define ACCEL6_INT_EN_1_FIFO_FULL_ENABLE   0x20
 
#define ACCEL6_INT_EN_1_DATA_ENABLE   0x10
 
#define ACCEL6_INT_EN_1_LOW_ENABLE   0x08
 
#define ACCEL6_INT_EN_1_HIGH_Z_ENABLE   0x04
 
#define ACCEL6_INT_EN_1_HIGH_Y_ENABLE   0x02
 
#define ACCEL6_INT_EN_1_HIGH_X_ENABLE   0x01
 
#define ACCEL6_INT_EN_2_MOTION_ENABLE   0x08
 
#define ACCEL6_INT_EN_2_MOTION_Z_ENABLE   0x04
 
#define ACCEL6_INT_EN_2_MOTION_Y_ENABLE   0x02
 
#define ACCEL6_INT_EN_2_MOTION_X_ENABLE   0x01
 
#define ACCEL6_INT1_MAP_FLAT_ENABLE   0x80
 
#define ACCEL6_INT1_MAP_ORIENT_ENABLE   0x40
 
#define ACCEL6_INT1_MAP_SINGLE_TAP_ENABLE   0x20
 
#define ACCEL6_INT1_MAP_DOUBLE_TAP_ENABLE   0x10
 
#define ACCEL6_INT1_MAP_MOTION_ENABLE   0x08
 
#define ACCEL6_INT1_MAP_SLOPE_ENABLE   0x04
 
#define ACCEL6_INT1_MAP_HIGH_ENABLE   0x02
 
#define ACCEL6_INT1_MAP_LOW_ENABLE   0x01
 
#define ACCEL6_INT2_MAP_DATA_ENABLE   0x80
 
#define ACCEL6_INT2_MAP_FIFO_WM_ENABLE   0x40
 
#define ACCEL6_INT2_MAP_FIFO_FULL_ENABLE   0x20
 
#define ACCEL6_INT1_MAP_DATA_ENABLE   0x01
 
#define ACCEL6_INT1_MAP_FIFO_WM_ENABLE   0x02
 
#define ACCEL6_INT1_MAP_FIFO_FULL_ENABLE   0x04
 
#define ACCEL6_INT2_MAP_FLAT_ENABLE   0x80
 
#define ACCEL6_INT2_MAP_ORIENT_ENABLE   0x40
 
#define ACCEL6_INT2_MAP_SINGLE_TAP_ENABLE   0x20
 
#define ACCEL6_INT2_MAP_DOUBLE_TAP_ENABLE   0x10
 
#define ACCEL6_INT2_MAP_MOTION_ENABLE   0x08
 
#define ACCEL6_INT2_MAP_SLOPE_ENABLE   0x04
 
#define ACCEL6_INT2_MAP_HIGH_ENABLE   0x02
 
#define ACCEL6_INT2_MAP_LOW_ENABLE   0x01
 
#define ACCEL6_INT_SRC_DATA   0x20
 
#define ACCEL6_INT_SRC_TAP   0x10
 
#define ACCEL6_INT_SRC_MOTION   0x08
 
#define ACCEL6_INT_SRC_SLOPE   0x04
 
#define ACCEL6_INT_SRC_HIGH   0x02
 
#define ACCEL6_INT_SRC_LOW   0x01
 
#define ACCEL6_INT2_CTRL_OPEN_DRAIN   0x08
 
#define ACCEL6_INT1_CTRL_OPEN_DRAIN   0x02
 
#define ACCEL6_INT2_CTRL_ACTIVE_HIGH_LEVEL   0x04
 
#define ACCEL6_INT1_CTRL_ACTIVE_HIGH_LEVEL   0x01
 
#define ACCEL6_LATCH_RESET_INT   0x80
 
#define ACCEL6_LATCH_INT_250ms   0x01
 
#define ACCEL6_LATCH_INT_500ms   0x02
 
#define ACCEL6_LATCH_INT_1sec   0x03
 
#define ACCEL6_LATCH_INT_2sec   0x04
 
#define ACCEL6_LATCH_INT_4sec   0x05
 
#define ACCEL6_LATCH_INT_8sec   0x06
 
#define ACCEL6_LATCH_INT_250us   0x09
 
#define ACCEL6_LATCH_INT_500us   0x0A
 
#define ACCEL6_LATCH_INT_1ms   0x0B
 
#define ACCEL6_LATCH_INT_12_5ms   0x0C
 
#define ACCEL6_LATCH_INT_25ms   0x0D
 
#define ACCEL6_LATCH_INT_50ms   0x0E
 
#define ACCEL6_TAP_QUIET_30ms   0x00
 
#define ACCEL6_TAP_QUIET_20ms   0x80
 
#define ACCEL6_TAP_SHOCK_50ms   0x00
 
#define ACCEL6_TAP_SHOCK_75ms   0x40
 
#define ACCEL6_TAP_DUR_50ms   0x00
 
#define ACCEL6_TAP_DUR_100ms   0x01
 
#define ACCEL6_TAP_DUR_150ms   0x02
 
#define ACCEL6_TAP_DUR_200ms   0x03
 
#define ACCEL6_TAP_DUR_250ms   0x04
 
#define ACCEL6_TAP_DUR_375ms   0x05
 
#define ACCEL6_TAP_DUR_500ms   0x06
 
#define ACCEL6_TAP_DUR_700ms   0x07
 
#define ACCEL6_TAP_2_SAMPLES   0x00
 
#define ACCEL6_TAP_4_SAMPLES   0x40
 
#define ACCEL6_TAP_8_SAMPLES   0x80
 
#define ACCEL6_TAP_16_SAMPLES   0xC0
 
#define ACCEL6_SELF_TEST_SING_POSITIVE   0x40
 
#define ACCEL6_SELF_TEST_SING_NEGATIVE   0x00
 
#define ACCEL6_SELF_TEST_DISABLE   0x00
 
#define ACCEL6_SELF_TEST_X_AXIS   0x01
 
#define ACCEL6_SELF_TEST_Y_AXIS   0x02
 
#define ACCEL6_SELF_TEST_Z_AXIS   0x03
 
#define ACCEL6_I2C_ENABLE   0x04
 
#define ACCEL6_I2C_DISABLE   0x00
 
#define ACCEL6_I2C_WTD_1ms   0x00
 
#define ACCEL6_I2C_WTD_50ms   0x02
 
#define ACCEL6_SPI_4_WIRE   0x00
 
#define ACCEL6_SPI_3_WIRE   0x01
 
#define ACCEL6_OFFSET_RESET   0x80
 
#define ACCEL6_OFFSET_TRIGGER_X_AXIS   0x20
 
#define ACCEL6_OFFSET_TRIGGER_Y_AXIS   0x40
 
#define ACCEL6_OFFSET_TRIGGER_Z_AXIS   0x60
 
#define ACCEL6_OFFSET_NOT_TRIGGER   0x00
 
#define ACCEL6_OFC_HP_X_ENABLE   0x04
 
#define ACCEL6_OFC_HP_Y_ENABLE   0x02
 
#define ACCEL6_OFC_HP_Z_ENABLE   0x01
 
#define ACCEL6_OFFSET_TARGET_Z_0g   0x00
 
#define ACCEL6_OFFSET_TARGET_Z_PLUS_1g   0x20
 
#define ACCEL6_OFFSET_TARGET_Z_MINUS_1g   0x40
 
#define ACCEL6_OFFSET_TARGET_Y_PLUS_1g   0x08
 
#define ACCEL6_OFFSET_TARGET_Y_MINUS_1g   0x10
 
#define ACCEL6_OFFSET_TARGET_X_PLUS_1g   0x02
 
#define ACCEL6_OFFSET_TARGET_X_MINUS_1g   0x04
 
#define ACCEL6_OFFSET_CUT_OFF_1Hz   0x00
 
#define ACCEL6_OFFSET_CUT_OFF_10Hz   0x01
 
#define ACCEL6_FIFO_MODE_BYPASS   0x00
 
#define ACCEL6_FIFO_MODE_FIFO   0x40
 
#define ACCEL6_FIFO_MODE_STREAM   0x80
 
#define ACCEL6_FIFO_SELECT_XYZ_AXIS   0x00
 
#define ACCEL6_FIFO_SELECT_X_AXIS   0x01
 
#define ACCEL6_FIFO_SELECT_Y_AXIS   0x02
 
#define ACCEL6_FIFO_SELECT_Z_AXIS   0x03
 
#define DEVICE_ERROR   0x04
 
#define DEVICE_OK   0x00
 
#define TAP_X_NEGATIVE   0x01
 
#define TAP_Y_NEGATIVE   0x02
 
#define TAP_Z_NEGATIVE   0x03
 
#define TAP_X_POSITIVE   0x04
 
#define TAP_Y_POSITIVE   0x05
 
#define TAP_Z_POSITIVE   0x06
 
#define NON_TAP   0x00
 
#define SLOPE_X_NEGATIVE   0x01
 
#define SLOPE_Y_NEGATIVE   0x02
 
#define SLOPE_Z_NEGATIVE   0x03
 
#define SLOPE_X_POSITIVE   0x04
 
#define SLOPE_Y_POSITIVE   0x05
 
#define SLOPE_Z_POSITIVE   0x06
 
#define NON_SLOPE   0x00
 
#define Z_ORIENT_UPWARD_LOOKING   0x01
 
#define Z_ORIENT_DOWNWARD_LOOKING   0x02
 
#define XY_ORIENT_UPSIDE_DOWN   0x01
 
#define XY_ORIENT_LANDSCAPE_LEFT   0x02
 
#define XY_ORIENT_LANDSCAPE_RIGHT   0x03
 
#define XY_ORIENT_UPRIGHT   0x04
 

Typedefs

typedef uint8_t accel6_select_t
 Communication type.
 
typedef void(* accel6_master_io_t) (struct accel6_s *, uint8_t, uint8_t *, uint8_t)
 Master Input/Output type.
 
typedef struct accel6_s accel6_t
 Click ctx object definition.
 

Functions

void accel6_cfg_setup (accel6_cfg_t *cfg)
 Config Object Initialization function.
 
ACCEL6_RETVAL accel6_init (accel6_t *ctx, accel6_cfg_t *cfg)
 Initialization function.
 
void accel6_generic_write (accel6_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
 Generic write function.
 
void accel6_generic_read (accel6_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
 Generic read function.
 
void accel6_soft_reset (accel6_t *ctx)
 Functions for software reset.
 
void accel6_default_cfg (accel6_t *ctx, uint8_t range_data, uint8_t bw_data, uint8_t lpw_data)
 Click Default Configuration function.
 
void accel6_data_offset (accel6_t *ctx, uint8_t set_offset, float *offset_data)
 Functions for set offset.
 
uint8_t accel6_get_tap_status (accel6_t *ctx)
 Functions for detect tap on the x/y/z axis.
 
uint8_t accel6_get_slope_status (accel6_t *ctx)
 Functions for detect slope on the x/y/z axis.
 
void accel6_get_orient (accel6_t *ctx, uint8_t *z_orient, uint8_t *xy_orient)
 Functions for read orient.
 
float accel6_get_axis (accel6_t *ctx, uint8_t axis)
 Functions for read axis data.
 
float accel6_get_temperature (accel6_t *ctx)
 Functions for read temperature.
 

Detailed Description

This file contains API for Accel 6 Click driver.