Loading...
Searching...
No Matches
kx134_1211.h
1
7
8// ALLOW FORMATTING
9#ifndef _KX134_1211_H
10#define _KX134_1211_H
11
12#include "spi.h"
13#include "gpiopin.h"
14
15#define KX134_1211_SENSITIVITY_32G (1.0f / 1024.0f)
16#define KX134_1211_SENSITIVITY_16G (1.0f / 2048.0f)
17#define KX134_1211_SENSITIVITY(scale) KX134_1211_SENSITIVITY_##scale##G
18#define KX134_1211_CNTL1 0x1B
19#define KX134_1211_CNTL1_PC1 0x80
20#define KX134_1211_CNTL1_DRDYE 0x20
21#define KX134_1211_CNTL1_RES 0x40
22#define KX134_1211_CNTL1_GSEL_32G 0x10
23#define KX134_1211_CNTL1_GSEL_16G 0x08
24#define KX134_1211_CNTL1_GSEL_8G 0x00
25#define KX134_1211_CNTL1_GSEL(scale) KX134_1211_CNTL1_GSEL_##scale##G
26#define KX134_1211_ODCNTL 0x21
27#define KX134_1211_ODCNTL_RESERVED 0x90
28#define KX134_1211_XOUT_L 0x08
29#define KX134_1211_XOUT_H 0x09
30#define KX134_1211_YOUT_L 0x0A
31#define KX134_1211_YOUT_H 0x0B
32#define KX134_1211_ZOUT_L 0x0C
33#define KX134_1211_ZOUT_H 0x0D
34#define KX134_1211_INS2 0x17
35
36#define KX134_1211_INS2_DRDY 0x10
37
38#define KX134_1211_DATA_SIZE 2 // Two bytes per axis
39#define KX134_1211_DATA_COUNT 3 // Three axes - X Y Z
40#define KX134_1211_DATA_TOTAL (KX134_1211_DATA_COUNT * KX134_1211_DATA_SIZE)
41
48
50typedef struct KX134_1211 {
54 void (*update)(struct KX134_1211 *);
55 void (*readAccel)(struct KX134_1211 *, float *);
56 void (*readRawBytes)(struct KX134_1211 *, uint8_t *);
57 void (*processRawBytes)(struct KX134_1211 *, uint8_t *, float *);
58 uint8_t axes[KX134_1211_DATA_COUNT];
59 int8_t sign[KX134_1211_DATA_COUNT];
60 uint8_t rawAccelData[KX134_1211_DATA_TOTAL];
61 float accelData[KX134_1211_DATA_COUNT];
63
64KX134_1211_t KX134_1211_init(KX134_1211_t *, SPI_t *, GPIOpin_t, const uint8_t, const uint8_t *, const int8_t *);
66void KX134_1211_readAccel(KX134_1211_t *, float *);
67void KX134_1211_readRawBytes(KX134_1211_t *, uint8_t *);
68void KX134_1211_processRawBytes(KX134_1211_t *, uint8_t *, float *);
69
70void KX134_1211_readRegisters(KX134_1211_t *, uint8_t, uint8_t, uint8_t *);
71uint8_t KX134_1211_readRegister(KX134_1211_t *, uint8_t);
72void KX134_1211_writeRegister(KX134_1211_t *, uint8_t, uint8_t);
73
75#endif
Struct definition for a GPIO pin.
Definition gpiopin.h:151
void KX134_1211_processRawBytes(KX134_1211_t *, uint8_t *, float *)
Process raw 3-axis data to floating point accelerations.
Definition kx134_1211.c:115
void KX134_1211_readAccel(KX134_1211_t *, float *)
Read 3-axis floating point accelerations.
Definition kx134_1211.c:87
void KX134_1211_update(KX134_1211_t *)
Updates internally stored acceleration readings.
Definition kx134_1211.c:100
void KX134_1211_readRawBytes(KX134_1211_t *, uint8_t *)
Read raw 3-axis data.
Definition kx134_1211.c:130
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
Struct definition for SPI interface. Provides the interface for API consumers to interact with the SP...
Definition spi.h:134
uint8_t axes[KX134_1211_DATA_COUNT]
Array defining axes of mounting.
Definition kx134_1211.h:58
void(* update)(struct KX134_1211 *)
Accel update method.
Definition kx134_1211.h:54
GPIOpin_t cs
Chip select GPIO.
Definition kx134_1211.h:52
void(* processRawBytes)(struct KX134_1211 *, uint8_t *, float *)
Process raw accel method.
Definition kx134_1211.h:57
void(* readRawBytes)(struct KX134_1211 *, uint8_t *)
Raw accel read method.
Definition kx134_1211.h:56
SPI_t * base
Parent SPI interface.
Definition kx134_1211.h:51
float accelData[KX134_1211_DATA_COUNT]
Processed accelerations array.
Definition kx134_1211.h:61
uint8_t rawAccelData[KX134_1211_DATA_TOTAL]
Raw accelerations array.
Definition kx134_1211.h:60
int8_t sign[KX134_1211_DATA_COUNT]
Array defining sign of axes.
Definition kx134_1211.h:59
float sensitivity
Accelerometer sensitivity.
Definition kx134_1211.h:53
void(* readAccel)(struct KX134_1211 *, float *)
Accel read method.
Definition kx134_1211.h:55