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

Implementation of ADXRS290 Driver. More...

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

Classes

struct  adxrs290_init_param
 Device driver initialization structure. More...
 
struct  adxrs290_dev
 Device driver handler. More...
 

Macros

#define ADXRS290_ADI_ID   0xAD
 
#define ADXRS290_MEMS_ID   0x1D
 
#define ADXRS290_DEV_ID   0x92
 
#define ADXRS290_REG_ADI_ID   0x00
 
#define ADXRS290_REG_MEMS_ID   0x01
 
#define ADXRS290_REG_DEV_ID   0x02
 
#define ADXRS290_REG_REV_ID   0x03
 
#define ADXRS290_REG_SN0   0x04
 
#define ADXRS290_REG_SN1   0x05
 
#define ADXRS290_REG_SN2   0x06
 
#define ADXRS290_REG_SN3   0x07
 
#define ADXRS290_REG_DATAX0   0x08
 
#define ADXRS290_REG_DATAX1   0x09
 
#define ADXRS290_REG_DATAY0   0x0A
 
#define ADXRS290_REG_DATAY1   0x0B
 
#define ADXRS290_REG_TEMP0   0x0C
 
#define ADXRS290_REG_TEMP1   0x0D
 
#define ADXRS290_REG_POWER_CTL   0x10
 
#define ADXRS290_REG_FILTER   0x11
 
#define ADXRS290_REG_DATA_READY   0x12
 
#define ADXRS290_READ   NO_OS_BIT(7)
 
#define ADXRS290_TSM   NO_OS_BIT(0)
 
#define ADXRS290_MEASUREMENT   NO_OS_BIT(1)
 
#define ADXRS290_DATA_RDY_OUT   NO_OS_BIT(0)
 
#define ADXRS290_SYNC_MASK   0x03
 
#define ADXRS290_SYNC(x)
 
#define ADXRS290_LPF_MASK   0x07
 
#define ADXRS290_LPF(x)
 
#define ADXRS290_HPF_MASK   0xF0
 
#define ADXRS290_HPF(x)
 
#define ADXRS290_READ_REG(reg)
 
#define ADXRS290_MAX_TRANSITION_TIME_MS   100
 
#define ADXRS290_CHANNEL_COUNT   3
 
#define ADXRS290_CHANNEL_MASK   0x07
 

Enumerations

enum  adxrs290_mode {
  ADXRS290_MODE_STANDBY ,
  ADXRS290_MODE_MEASUREMENT
}
 Mode of the adxrs290. More...
 
enum  adxrs290_channel {
  ADXRS290_CHANNEL_X ,
  ADXRS290_CHANNEL_Y ,
  ADXRS290_CHANNEL_TEMP
}
 Channel of teh adxrs290 data rate. More...
 
enum  adxrs290_lpf {
  ADXRS290_LPF_480HZ ,
  ADXRS290_LPF_320HZ ,
  ADXRS290_LPF_160HZ ,
  ADXRS290_LPF_80HZ ,
  ADXRS290_LPF_56HZ6 ,
  ADXRS290_LPF_40HZ ,
  ADXRS290_LPF_28HZ3 ,
  ADXRS290_LPF_20HZ
}
 Low-Pass filter pole location. More...
 
enum  adxrs290_hpf {
  ADXRS290_HPF_ALL_PASS ,
  ADXRS290_HPF_0HZ011 ,
  ADXRS290_HPF_0HZ022 ,
  ADXRS290_HPF_0HZ044 ,
  ADXRS290_HPF_0HZ087 ,
  ADXRS290_HPF_0HZ175 ,
  ADXRS290_HPF_0HZ350 ,
  ADXRS290_HPF_0HZ700 ,
  ADXRS290_HPF_1HZ400 ,
  ADXRS290_HPF_2HZ800 ,
  ADXRS290_HPF_11HZ30
}
 High-Pass filter pole location. More...
 

Functions

int32_t adxrs290_reg_read (struct adxrs290_dev *dev, uint8_t address, uint8_t *data)
 Read device register.
 
int32_t adxrs290_reg_write (struct adxrs290_dev *dev, uint8_t address, uint8_t data)
 Write device register.
 
int32_t adxrs290_set_op_mode (struct adxrs290_dev *dev, enum adxrs290_mode mode)
 Set device operation mode.
 
int32_t adxrs290_get_lpf (struct adxrs290_dev *dev, enum adxrs290_lpf *lpf)
 Get the low-pass filter pole location.
 
int32_t adxrs290_set_lpf (struct adxrs290_dev *dev, enum adxrs290_lpf lpf)
 Set the low-pass filter pole location.
 
int32_t adxrs290_get_hpf (struct adxrs290_dev *dev, enum adxrs290_hpf *hpf)
 Get the high-pass filter pole location.
 
int32_t adxrs290_set_hpf (struct adxrs290_dev *dev, enum adxrs290_hpf hpf)
 Set the low-pass filter pole location.
 
int32_t adxrs290_get_rate_data (struct adxrs290_dev *dev, enum adxrs290_channel ch, int16_t *rate)
 Get the Gyro data channels.
 
int32_t adxrs290_get_temp_data (struct adxrs290_dev *dev, int16_t *temp)
 Get the temperature data.
 
int32_t adxrs290_get_burst_data (struct adxrs290_dev *dev, int16_t *burst_data, uint8_t *ch_cnt)
 Get the burst data.
 
int32_t adxrs290_set_active_channels (struct adxrs290_dev *dev, uint32_t mask)
 Set the ADXRS290 active channels.
 
int32_t adxrs290_get_data_ready (struct adxrs290_dev *dev, bool *rdy)
 Get the state of data ready.
 
int32_t adxrs290_init (struct adxrs290_dev **device, const struct adxrs290_init_param *init_param)
 
int32_t adxrs290_remove (struct adxrs290_dev *dev)
 Free memory allocated by adxrs290_setup().
 

Detailed Description

Implementation of ADXRS290 Driver.

Author
Kister Genesis Jimenez (kiste.nosp@m.r.ji.nosp@m.menez.nosp@m.@ana.nosp@m.log.c.nosp@m.om)

Copyright 2020(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Macro Definition Documentation

◆ ADXRS290_ADI_ID

#define ADXRS290_ADI_ID   0xAD

◆ ADXRS290_CHANNEL_COUNT

#define ADXRS290_CHANNEL_COUNT   3

◆ ADXRS290_CHANNEL_MASK

#define ADXRS290_CHANNEL_MASK   0x07

◆ ADXRS290_DATA_RDY_OUT

#define ADXRS290_DATA_RDY_OUT   NO_OS_BIT(0)

◆ ADXRS290_DEV_ID

#define ADXRS290_DEV_ID   0x92

◆ ADXRS290_HPF

#define ADXRS290_HPF ( x)
Value:
((x) & ADXRS290_HPF_MASK ) >> 4
#define ADXRS290_HPF_MASK
Definition adxrs290.h:53

◆ ADXRS290_HPF_MASK

#define ADXRS290_HPF_MASK   0xF0

◆ ADXRS290_LPF

#define ADXRS290_LPF ( x)
Value:
#define ADXRS290_LPF_MASK
Definition adxrs290.h:51

◆ ADXRS290_LPF_MASK

#define ADXRS290_LPF_MASK   0x07

◆ ADXRS290_MAX_TRANSITION_TIME_MS

#define ADXRS290_MAX_TRANSITION_TIME_MS   100

◆ ADXRS290_MEASUREMENT

#define ADXRS290_MEASUREMENT   NO_OS_BIT(1)

◆ ADXRS290_MEMS_ID

#define ADXRS290_MEMS_ID   0x1D

◆ ADXRS290_READ

#define ADXRS290_READ   NO_OS_BIT(7)

◆ ADXRS290_READ_REG

#define ADXRS290_READ_REG ( reg)
Value:
(ADXRS290_READ | (reg))
#define ADXRS290_READ
Definition adxrs290.h:45

◆ ADXRS290_REG_ADI_ID

#define ADXRS290_REG_ADI_ID   0x00

◆ ADXRS290_REG_DATA_READY

#define ADXRS290_REG_DATA_READY   0x12

◆ ADXRS290_REG_DATAX0

#define ADXRS290_REG_DATAX0   0x08

◆ ADXRS290_REG_DATAX1

#define ADXRS290_REG_DATAX1   0x09

◆ ADXRS290_REG_DATAY0

#define ADXRS290_REG_DATAY0   0x0A

◆ ADXRS290_REG_DATAY1

#define ADXRS290_REG_DATAY1   0x0B

◆ ADXRS290_REG_DEV_ID

#define ADXRS290_REG_DEV_ID   0x02

◆ ADXRS290_REG_FILTER

#define ADXRS290_REG_FILTER   0x11

◆ ADXRS290_REG_MEMS_ID

#define ADXRS290_REG_MEMS_ID   0x01

◆ ADXRS290_REG_POWER_CTL

#define ADXRS290_REG_POWER_CTL   0x10

◆ ADXRS290_REG_REV_ID

#define ADXRS290_REG_REV_ID   0x03

◆ ADXRS290_REG_SN0

#define ADXRS290_REG_SN0   0x04

◆ ADXRS290_REG_SN1

#define ADXRS290_REG_SN1   0x05

◆ ADXRS290_REG_SN2

#define ADXRS290_REG_SN2   0x06

◆ ADXRS290_REG_SN3

#define ADXRS290_REG_SN3   0x07

◆ ADXRS290_REG_TEMP0

#define ADXRS290_REG_TEMP0   0x0C

◆ ADXRS290_REG_TEMP1

#define ADXRS290_REG_TEMP1   0x0D

◆ ADXRS290_SYNC

#define ADXRS290_SYNC ( x)
Value:
#define ADXRS290_SYNC_MASK
Definition adxrs290.h:49

◆ ADXRS290_SYNC_MASK

#define ADXRS290_SYNC_MASK   0x03

◆ ADXRS290_TSM

#define ADXRS290_TSM   NO_OS_BIT(0)

Enumeration Type Documentation

◆ adxrs290_channel

Channel of teh adxrs290 data rate.

Enumerator
ADXRS290_CHANNEL_X 

X-Axis

ADXRS290_CHANNEL_Y 

Y-Axis

ADXRS290_CHANNEL_TEMP 

Temp

◆ adxrs290_hpf

High-Pass filter pole location.

Enumerator
ADXRS290_HPF_ALL_PASS 
ADXRS290_HPF_0HZ011 
ADXRS290_HPF_0HZ022 
ADXRS290_HPF_0HZ044 
ADXRS290_HPF_0HZ087 
ADXRS290_HPF_0HZ175 
ADXRS290_HPF_0HZ350 
ADXRS290_HPF_0HZ700 
ADXRS290_HPF_1HZ400 
ADXRS290_HPF_2HZ800 
ADXRS290_HPF_11HZ30 

◆ adxrs290_lpf

Low-Pass filter pole location.

Enumerator
ADXRS290_LPF_480HZ 
ADXRS290_LPF_320HZ 
ADXRS290_LPF_160HZ 
ADXRS290_LPF_80HZ 
ADXRS290_LPF_56HZ6 
ADXRS290_LPF_40HZ 
ADXRS290_LPF_28HZ3 
ADXRS290_LPF_20HZ 

◆ adxrs290_mode

Mode of the adxrs290.

Enumerator
ADXRS290_MODE_STANDBY 

Standby mode

ADXRS290_MODE_MEASUREMENT 

Measurement mode

Function Documentation

◆ adxrs290_get_burst_data()

int32_t adxrs290_get_burst_data ( struct adxrs290_dev * dev,
int16_t * burst_data,
uint8_t * ch_cnt )

Get the burst data.

Parameters
dev- Device handler.
burst_data- Pointer to data value.
ch_cnt- Number of active channels.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_get_data_ready()

int32_t adxrs290_get_data_ready ( struct adxrs290_dev * dev,
bool * rdy )

Get the state of data ready.

Parameters
dev- Device handler.
rdy- Pointer to state of data.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_get_hpf()

int32_t adxrs290_get_hpf ( struct adxrs290_dev * dev,
enum adxrs290_hpf * hpf )

Get the high-pass filter pole location.

Parameters
dev- Device handler.
hpf- Pointer to high-pass pole location container.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_get_lpf()

int32_t adxrs290_get_lpf ( struct adxrs290_dev * dev,
enum adxrs290_lpf * lpf )

Get the low-pass filter pole location.

Parameters
dev- Device handler.
lpf- Pointer to Low-pass pole location container.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_get_rate_data()

int32_t adxrs290_get_rate_data ( struct adxrs290_dev * dev,
enum adxrs290_channel ch,
int16_t * rate )

Get the Gyro data channels.

Parameters
dev- Device handler.
ch- Channel to read.
rate- Pointer to rate value.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_get_temp_data()

int32_t adxrs290_get_temp_data ( struct adxrs290_dev * dev,
int16_t * temp )

Get the temperature data.

Parameters
dev- Device handler.
temp- Pointer to temperature value.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_init()

int32_t adxrs290_init ( struct adxrs290_dev ** device,
const struct adxrs290_init_param * init_param )

Initialize the device.

Parameters
device- The device structure.
init_param- The structure that contains the device initial parameters.
Returns
0 in case of success, negative error code otherwise.

◆ adxrs290_reg_read()

int32_t adxrs290_reg_read ( struct adxrs290_dev * dev,
uint8_t address,
uint8_t * data )

Read device register.

Parameters
dev- Device handler.
address- Register address.
data- Pointer to the register value container.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_reg_write()

int32_t adxrs290_reg_write ( struct adxrs290_dev * dev,
uint8_t address,
uint8_t data )

Write device register.

Parameters
dev- Device handler.
address- Register address.
data- New register value.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_remove()

int32_t adxrs290_remove ( struct adxrs290_dev * dev)

Free memory allocated by adxrs290_setup().

Parameters
dev- Device handler.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_set_active_channels()

int32_t adxrs290_set_active_channels ( struct adxrs290_dev * dev,
uint32_t mask )

Set the ADXRS290 active channels.

Parameters
dev- Device handler.
mask- Mask for active channels.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_set_hpf()

int32_t adxrs290_set_hpf ( struct adxrs290_dev * dev,
enum adxrs290_hpf hpf )

Set the low-pass filter pole location.

Parameters
dev- Device handler.
hpf- High-pass pole location.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_set_lpf()

int32_t adxrs290_set_lpf ( struct adxrs290_dev * dev,
enum adxrs290_lpf lpf )

Set the low-pass filter pole location.

Parameters
dev- Device handler.
lpf- Low-pass pole location.
Returns
0 in case of success, -1 otherwise.

◆ adxrs290_set_op_mode()

int32_t adxrs290_set_op_mode ( struct adxrs290_dev * dev,
enum adxrs290_mode mode )

Set device operation mode.

Parameters
dev- Device handler.
mode- mode of operation.
Returns
0 in case of success, -1 otherwise.