no-OS
Classes | Macros | Enumerations | Functions
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:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

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)   (x) & ADXRS290_SYNC_MASK
 
#define ADXRS290_LPF_MASK   0x07
 
#define ADXRS290_LPF(x)   (x) & ADXRS290_LPF_MASK
 
#define ADXRS290_HPF_MASK   0xF0
 
#define ADXRS290_HPF(x)   ((x) & ADXRS290_HPF_MASK ) >> 4
 
#define ADXRS290_READ_REG(reg)   (ADXRS290_READ | (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. More...
 
int32_t adxrs290_reg_write (struct adxrs290_dev *dev, uint8_t address, uint8_t data)
 Write device register. More...
 
int32_t adxrs290_set_op_mode (struct adxrs290_dev *dev, enum adxrs290_mode mode)
 Set device operation mode. More...
 
int32_t adxrs290_get_lpf (struct adxrs290_dev *dev, enum adxrs290_lpf *lpf)
 Get the low-pass filter pole location. More...
 
int32_t adxrs290_set_lpf (struct adxrs290_dev *dev, enum adxrs290_lpf lpf)
 Set the low-pass filter pole location. More...
 
int32_t adxrs290_get_hpf (struct adxrs290_dev *dev, enum adxrs290_hpf *hpf)
 Get the high-pass filter pole location. More...
 
int32_t adxrs290_set_hpf (struct adxrs290_dev *dev, enum adxrs290_hpf hpf)
 Set the low-pass filter pole location. More...
 
int32_t adxrs290_get_rate_data (struct adxrs290_dev *dev, enum adxrs290_channel ch, int16_t *rate)
 Get the Gyro data channels. More...
 
int32_t adxrs290_get_temp_data (struct adxrs290_dev *dev, int16_t *temp)
 Get the temperature data. More...
 
int32_t adxrs290_get_burst_data (struct adxrs290_dev *dev, int16_t *burst_data, uint8_t *ch_cnt)
 Get the burst data. More...
 
int32_t adxrs290_set_active_channels (struct adxrs290_dev *dev, uint32_t mask)
 Set the ADXRS290 active channels. More...
 
int32_t adxrs290_get_data_ready (struct adxrs290_dev *dev, bool *rdy)
 Get the state of data ready. More...
 
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(). More...
 

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.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. Neither the name of Analog Devices, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

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)    ((x) & ADXRS290_HPF_MASK ) >> 4

◆ ADXRS290_HPF_MASK

#define ADXRS290_HPF_MASK   0xF0

◆ ADXRS290_LPF

#define ADXRS290_LPF (   x)    (x) & ADXRS290_LPF_MASK

◆ 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)    (ADXRS290_READ | (reg))

◆ 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)    (x) & ADXRS290_SYNC_MASK

◆ 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.
Here is the caller graph for this function:

◆ 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.
Here is the caller graph for this function:

◆ 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.
Here is the caller graph for this function:

◆ 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.
Here is the caller graph for this function:

◆ 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.
Here is the caller graph for this function:

◆ 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.