Loading...
Searching...
No Matches
ais3624dq.h
Go to the documentation of this file.
1
7
8// ALLOW FORMATTING
9#ifndef AIS3624DQ_H
10#define AIS3624DQ_H
11
12#include "accelerometer.h"
13
14#include "spi.h"
15#include "gpiopin.h"
16
17#define AIS3624DQ_SENSITIVITY_24G (0.0117f / 16.0f)
18#define AIS3624DQ_SENSITIVITY_12G (0.0059f / 16.0f)
19#define AIS3624DQ_SENSITIVITY_6G (0.0029f / 16.0f)
20#define AIS3624DQ_SENSITIVITY(scale) AIS3624DQ_SENSITIVITY_##scale##G
21
22#define AIS3624DQ_CTRL_REG1 0x20
23#define AIS3624DQ_CTRL_REG2 0x21
24#define AIS3624DQ_CTRL_REG3 0x22
25#define AIS3624DQ_CTRL_REG4 0x23
26#define AIS3624DQ_CTRL_REG5 0x24
27
28#define AIS3624DQ_XOUT_L 0x28
29#define AIS3624DQ_XOUT_H 0x29
30#define AIS3624DQ_YOUT_L 0x2A
31#define AIS3624DQ_YOUT_H 0x2B
32#define AIS3624DQ_ZOUT_L 0x2C
33#define AIS3624DQ_ZOUT_H 0x2D
34
35#define AIS3624DQ_CTRL_REG1_PM_OFF 0x00
36#define AIS3624DQ_CTRL_REG1_PM_NORMAL 0x20
37#define AIS3624DQ_CTRL_REG1_DR_50 0x00
38#define AIS3624DQ_CTRL_REG1_DR_100 0x08
39#define AIS3624DQ_CTRL_REG1_DR_400 0x10
40#define AIS3624DQ_CTRL_REG1_DR_1000 0x18
41#define AIS3624DQ_CTRL_REG1_XEN 0x01
42#define AIS3624DQ_CTRL_REG1_YEN 0x02
43#define AIS3624DQ_CTRL_REG1_ZEN 0x04
44
45#define AIS3624DQ_CTRL_REG4_BDU 0x80
46#define AIS3624DQ_CTRL_REG4_FS_24G 0x30
47#define AIS3624DQ_CTRL_REG4_FS_12G 0x10
48#define AIS3624DQ_CTRL_REG4_FS_6G 0x00
49#define AIS3624DQ_CTRL_REG4_FS(scale) AIS3624DQ_CTRL_REG4_FS_##scale##G
50
51#define AIS3624DQ_DATA_SIZE 2 // Two bytes per axis
52#define AIS3624DQ_DATA_COUNT 3 // Three axes - X Y Z
53#define AIS3624DQ_DATA_TOTAL (AIS3624DQ_DATA_COUNT * AIS3624DQ_DATA_SIZE)
54
61
63typedef struct AIS3624DQ {
68 uint8_t axes[AIS3624DQ_DATA_COUNT];
69 int8_t sign[AIS3624DQ_DATA_COUNT];
70 uint8_t rawAccelData[AIS3624DQ_DATA_TOTAL];
71 float accelData[AIS3624DQ_DATA_COUNT];
73
74AIS3624DQ_t AIS3624DQ_init(AIS3624DQ_t *, SPI_t *, GPIOpin_t, const uint8_t, const uint8_t *, const int8_t *);
76void AIS3624DQ_readAccel(Accel_t *, float *);
77void AIS3624DQ_readRawBytes(Accel_t *, uint8_t *);
78void AIS3624DQ_processRawBytes(Accel_t *, uint8_t *, float *);
79
81#endif
Defines the API for the Accelerometer sensor.
AIS3624DQ_t AIS3624DQ_init(AIS3624DQ_t *, SPI_t *, GPIOpin_t, const uint8_t, const uint8_t *, const int8_t *)
Initialiser for a AIS3624DQ accelerometer.
Definition ais3624dq.c:29
void AIS3624DQ_readRawBytes(Accel_t *, uint8_t *)
Read raw 3-axis data.
Definition ais3624dq.c:137
void AIS3624DQ_processRawBytes(Accel_t *, uint8_t *, float *)
Process raw 3-axis data to floating point accelerations.
Definition ais3624dq.c:121
void AIS3624DQ_update(Accel_t *)
Updates internally stored acceleration readings.
Definition ais3624dq.c:106
void AIS3624DQ_readAccel(Accel_t *, float *)
Read 3-axis floating point accelerations.
Definition ais3624dq.c:93
Struct definition for a GPIO pin.
Definition gpiopin.h:151
Struct definition for SPI interface. Provides the interface for API consumers to interact with the SP...
Definition spi.h:134
uint8_t rawAccelData[AIS3624DQ_DATA_TOTAL]
Raw accelerations array.
Definition ais3624dq.h:70
uint8_t axes[AIS3624DQ_DATA_COUNT]
Array defining axes of mounting.
Definition ais3624dq.h:68
GPIOpin_t cs
Chip select GPIO.
Definition ais3624dq.h:66
float accelData[AIS3624DQ_DATA_COUNT]
Processed accelerations array.
Definition ais3624dq.h:71
Accel_t base
Base accelerometer API.
Definition ais3624dq.h:64
float sensitivity
Accelerometer sensitivity.
Definition ais3624dq.h:67
int8_t sign[AIS3624DQ_DATA_COUNT]
Array defining sign of axes.
Definition ais3624dq.h:69
SPI_t * spi
Parent SPI interface.
Definition ais3624dq.h:65