Loading...
Searching...
No Matches
kx134_1211.h
Go to the documentation of this file.
1
7
8// ALLOW FORMATTING
9#ifndef _KX134_1211_H
10#define _KX134_1211_H
11
12#include "accelerometer.h"
13
14#include "gpiopin.h"
15#include "spi.h"
16
17#define KX134_1211_SENSITIVITY_32G (1.0f / 1024.0f)
18#define KX134_1211_SENSITIVITY_16G (1.0f / 2048.0f)
19#define KX134_1211_SENSITIVITY(scale) KX134_1211_SENSITIVITY_##scale##G
20#define KX134_1211_CNTL1 0x1B
21#define KX134_1211_CNTL1_PC1 0x80
22#define KX134_1211_CNTL1_DRDYE 0x20
23#define KX134_1211_CNTL1_RES 0x40
24#define KX134_1211_CNTL1_GSEL_32G 0x10
25#define KX134_1211_CNTL1_GSEL_16G 0x08
26#define KX134_1211_CNTL1_GSEL_8G 0x00
27#define KX134_1211_CNTL1_GSEL(scale) KX134_1211_CNTL1_GSEL_##scale##G
28#define KX134_1211_ODCNTL 0x21
29#define KX134_1211_ODCNTL_RESERVED 0x90
30#define KX134_1211_XOUT_L 0x08
31#define KX134_1211_XOUT_H 0x09
32#define KX134_1211_YOUT_L 0x0A
33#define KX134_1211_YOUT_H 0x0B
34#define KX134_1211_ZOUT_L 0x0C
35#define KX134_1211_ZOUT_H 0x0D
36#define KX134_1211_INS2 0x17
37
38#define KX134_1211_INS2_DRDY 0x10
39
40#define KX134_1211_DATA_SIZE 2 // Two bytes per axis
41#define KX134_1211_DATA_COUNT 3 // Three axes - X Y Z
42#define KX134_1211_DATA_TOTAL (KX134_1211_DATA_COUNT * KX134_1211_DATA_SIZE)
43
44typedef struct KX134_1211 {
49 uint8_t axes[KX134_1211_DATA_COUNT];
50 int8_t sign[KX134_1211_DATA_COUNT];
51 uint8_t rawAccelData[KX134_1211_DATA_TOTAL];
52 float accelData[KX134_1211_DATA_COUNT];
54
55KX134_1211_t KX134_1211_init(KX134_1211_t *, SPI_t *, GPIOpin_t, const uint8_t, const uint8_t *, const int8_t *);
57void KX134_1211_readAccel(Accel_t *, float *);
58void KX134_1211_readRawBytes(Accel_t *, uint8_t *);
59void KX134_1211_processRawBytes(Accel_t *, uint8_t *, float *);
60
61void KX134_1211_readRegisters(KX134_1211_t *, uint8_t, uint8_t, uint8_t *);
62uint8_t KX134_1211_readRegister(KX134_1211_t *, uint8_t);
63void KX134_1211_writeRegister(KX134_1211_t *, uint8_t, uint8_t);
64
65#endif
Defines the API for the Accelerometer sensor.
uint8_t axes[KX134_1211_DATA_COUNT]
Array defining axes of mounting.
Definition kx134_1211.h:49
GPIOpin_t cs
Chip select GPIO.
Definition kx134_1211.h:47
float accelData[KX134_1211_DATA_COUNT]
Processed accelerations array.
Definition kx134_1211.h:52
Accel_t base
Base accelerometer API.
Definition kx134_1211.h:45
uint8_t rawAccelData[KX134_1211_DATA_TOTAL]
Raw accelerations array.
Definition kx134_1211.h:51
int8_t sign[KX134_1211_DATA_COUNT]
Array defining sign of axes.
Definition kx134_1211.h:50
float sensitivity
Accelerometer sensitivity.
Definition kx134_1211.h:48
SPI_t * spi
Parent SPI interface.
Definition kx134_1211.h:46
void KX134_1211_processRawBytes(Accel_t *, uint8_t *, float *)
Process raw 3-axis data to floating point accelerations.
Definition kx134_1211.c:120
void KX134_1211_update(Accel_t *)
Update internally stored acceleration readings.
Definition kx134_1211.c:105
void KX134_1211_readAccel(Accel_t *, float *)
Read 3-axis floating point accelerations.
Definition kx134_1211.c:92
KX134_1211_t KX134_1211_init(KX134_1211_t *, SPI_t *, GPIOpin_t, const uint8_t, const uint8_t *, const int8_t *)
Initialiser for a KX134-1211 accelerometer.
Definition kx134_1211.c:27
void KX134_1211_readRawBytes(Accel_t *, uint8_t *)
Read raw 3-axis data.
Definition kx134_1211.c:136
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