adxl362 csv output format

Committer:
APS_Lab
Date:
Thu May 16 07:02:24 2019 +0000
Revision:
0:813b34a76f24
adxl362

Who changed what in which revision?

UserRevisionLine numberNew contents of line
APS_Lab 0:813b34a76f24 1 #ifndef _ADXL362_H_
APS_Lab 0:813b34a76f24 2 #define _ADXL362_H_
APS_Lab 0:813b34a76f24 3 #include "mbed.h"
APS_Lab 0:813b34a76f24 4 #include <SPI.h>
APS_Lab 0:813b34a76f24 5
APS_Lab 0:813b34a76f24 6 // Register Memory Map
APS_Lab 0:813b34a76f24 7 #define DEVID_AD 0x00
APS_Lab 0:813b34a76f24 8 #define DEVID_MST 0x01
APS_Lab 0:813b34a76f24 9 #define PARTID 0x02
APS_Lab 0:813b34a76f24 10 #define REVID 0x03
APS_Lab 0:813b34a76f24 11 /* _ reserved _ */
APS_Lab 0:813b34a76f24 12 #define XDATA 0x08
APS_Lab 0:813b34a76f24 13 #define YDATA 0x09
APS_Lab 0:813b34a76f24 14 #define ZDATA 0x0A
APS_Lab 0:813b34a76f24 15 #define STATUS 0x0B
APS_Lab 0:813b34a76f24 16 #define FIFO_ENTRIES_L 0x0C
APS_Lab 0:813b34a76f24 17 #define FIFO_ENTRIES_H 0x0D
APS_Lab 0:813b34a76f24 18 #define XDATA_L 0x0E
APS_Lab 0:813b34a76f24 19 #define XDATA_H 0x0F
APS_Lab 0:813b34a76f24 20 #define YDATA_L 0x10
APS_Lab 0:813b34a76f24 21 #define YDATA_H 0x11
APS_Lab 0:813b34a76f24 22 #define ZDATA_L 0x12
APS_Lab 0:813b34a76f24 23 #define ZDATA_H 0x13
APS_Lab 0:813b34a76f24 24 #define TEMP_L 0x14
APS_Lab 0:813b34a76f24 25 #define TEMP_H 0x15
APS_Lab 0:813b34a76f24 26 /* _ reserved _ */
APS_Lab 0:813b34a76f24 27 #define SOFT_RESET 0x1F
APS_Lab 0:813b34a76f24 28 #define THRESH_ACT_L 0x20
APS_Lab 0:813b34a76f24 29 #define THRESH_ACT_H 0x21
APS_Lab 0:813b34a76f24 30 #define TIME_ACT 0x22
APS_Lab 0:813b34a76f24 31 #define THRESH_INACT_L 0x23
APS_Lab 0:813b34a76f24 32 #define THRESH_INACT_H 0x24
APS_Lab 0:813b34a76f24 33 #define TIME_INACT_L 0x25
APS_Lab 0:813b34a76f24 34 #define TIME_INACT_H 0x26
APS_Lab 0:813b34a76f24 35 #define ACT_INACT_CTL 0x27
APS_Lab 0:813b34a76f24 36 #define FIFO_CONTROL 0x28
APS_Lab 0:813b34a76f24 37 #define FIFO_SAMPLES 0x29
APS_Lab 0:813b34a76f24 38 #define INTMAP1 0x2A
APS_Lab 0:813b34a76f24 39 #define INTMAP2 0x2B
APS_Lab 0:813b34a76f24 40 #define FILTER_CTL 0x2C
APS_Lab 0:813b34a76f24 41 #define POWER_CTL 0x2D
APS_Lab 0:813b34a76f24 42 #define SELF_TEST 0x2E
APS_Lab 0:813b34a76f24 43
APS_Lab 0:813b34a76f24 44 /* ADXL const parameters */
APS_Lab 0:813b34a76f24 45 #define SOFT_RESET_ADXL362 (0x52)
APS_Lab 0:813b34a76f24 46
APS_Lab 0:813b34a76f24 47 #define POWER_CTL_PARAM_LOWNOISE_NORM (0x00)
APS_Lab 0:813b34a76f24 48 #define POWER_CTL_PARAM_LOWNOISE_LOW (0x10)
APS_Lab 0:813b34a76f24 49 #define POWER_CTL_PARAM_LOWNOISE_ULTRA (0x20)
APS_Lab 0:813b34a76f24 50
APS_Lab 0:813b34a76f24 51 #define POWER_CTL_MODEMASK (0x03)
APS_Lab 0:813b34a76f24 52 #define POWER_CTL_STOP (0x00)
APS_Lab 0:813b34a76f24 53 #define POWER_CTL_STANDBY (0x01)
APS_Lab 0:813b34a76f24 54 #define POWER_CTL_MESURE (0x02)
APS_Lab 0:813b34a76f24 55
APS_Lab 0:813b34a76f24 56 /* ADXL362 configuration */
APS_Lab 0:813b34a76f24 57 #define DEVID_AD_ADXL362 (0xAD)
APS_Lab 0:813b34a76f24 58 #define DEVID_MST_ADXL362 (0x1D)
APS_Lab 0:813b34a76f24 59 #define PARTID_ADXL362 (0xF2)
APS_Lab 0:813b34a76f24 60
APS_Lab 0:813b34a76f24 61 #define GRAVITY_2G (2)
APS_Lab 0:813b34a76f24 62 #define GRAVITY_4G (4)
APS_Lab 0:813b34a76f24 63 #define GRAVITY_8G (8)
APS_Lab 0:813b34a76f24 64
APS_Lab 0:813b34a76f24 65 #define ODR_12 0
APS_Lab 0:813b34a76f24 66 #define ODR_25 1
APS_Lab 0:813b34a76f24 67 #define ODR_50 2
APS_Lab 0:813b34a76f24 68 #define ODR_100 3
APS_Lab 0:813b34a76f24 69 #define ODR_200 4
APS_Lab 0:813b34a76f24 70 #define ODR_400 5
APS_Lab 0:813b34a76f24 71
APS_Lab 0:813b34a76f24 72
APS_Lab 0:813b34a76f24 73 #define PARAM_ADXL362_SCALE_ACCEL (1.0f * 0.001f * 9.80665f) // DATA
APS_Lab 0:813b34a76f24 74 #define PARAM_ADXL362_SCALE_THERMAL (0.0025f) // TEMP
APS_Lab 0:813b34a76f24 75 #define PARAM_ADXL362_THERMAL_OFFSET (25.0f) // TEMP
APS_Lab 0:813b34a76f24 76
APS_Lab 0:813b34a76f24 77
APS_Lab 0:813b34a76f24 78
APS_Lab 0:813b34a76f24 79 /* Output of Accelerometers */
APS_Lab 0:813b34a76f24 80 typedef struct _struct_AccelTemp {
APS_Lab 0:813b34a76f24 81 int ax;
APS_Lab 0:813b34a76f24 82 int ay;
APS_Lab 0:813b34a76f24 83 int az;
APS_Lab 0:813b34a76f24 84 int tm;
APS_Lab 0:813b34a76f24 85 } AccelTemp;
APS_Lab 0:813b34a76f24 86
APS_Lab 0:813b34a76f24 87 /* ADIS16460 class definition */
APS_Lab 0:813b34a76f24 88 class ADXL362 {
APS_Lab 0:813b34a76f24 89
APS_Lab 0:813b34a76f24 90 public:
APS_Lab 0:813b34a76f24 91
APS_Lab 0:813b34a76f24 92 /* ADIS16460 initializer */
APS_Lab 0:813b34a76f24 93 ADXL362(Serial*, SPI*);
APS_Lab 0:813b34a76f24 94 ~ADXL362();
APS_Lab 0:813b34a76f24 95
APS_Lab 0:813b34a76f24 96 /* Control */
APS_Lab 0:813b34a76f24 97 void SoftReset();
APS_Lab 0:813b34a76f24 98 void SetMesureParam(int param);
APS_Lab 0:813b34a76f24 99 void StartMesure();
APS_Lab 0:813b34a76f24 100 int GetStatus();
APS_Lab 0:813b34a76f24 101
APS_Lab 0:813b34a76f24 102 /* Sensing */
APS_Lab 0:813b34a76f24 103 void SensorRead(AccelTemp*);
APS_Lab 0:813b34a76f24 104
APS_Lab 0:813b34a76f24 105 /* GetSubInfo */
APS_Lab 0:813b34a76f24 106 AccelTemp* GetMinInfo(void);
APS_Lab 0:813b34a76f24 107 AccelTemp* GetMaxInfo(void);
APS_Lab 0:813b34a76f24 108
APS_Lab 0:813b34a76f24 109 /* convert real scale */
APS_Lab 0:813b34a76f24 110 float ConvAccel(int ctrlval);
APS_Lab 0:813b34a76f24 111 float ConvThermal(int ctrlval);
APS_Lab 0:813b34a76f24 112
APS_Lab 0:813b34a76f24 113 /* configuration */
APS_Lab 0:813b34a76f24 114 void set_gravity(int g);
APS_Lab 0:813b34a76f24 115 void set_ODR(int o);
APS_Lab 0:813b34a76f24 116 void set_powermode(int m);
APS_Lab 0:813b34a76f24 117 void set_wakeupmode(void);
APS_Lab 0:813b34a76f24 118 void set_scalefactor(void);
APS_Lab 0:813b34a76f24 119 void start(void);
APS_Lab 0:813b34a76f24 120 void stop(void);
APS_Lab 0:813b34a76f24 121
APS_Lab 0:813b34a76f24 122 private:
APS_Lab 0:813b34a76f24 123 /* locked */
APS_Lab 0:813b34a76f24 124 ADXL362();
APS_Lab 0:813b34a76f24 125
APS_Lab 0:813b34a76f24 126 /* information store */
APS_Lab 0:813b34a76f24 127 Serial *uart;
APS_Lab 0:813b34a76f24 128 SPI *_spi;
APS_Lab 0:813b34a76f24 129 DigitalOut *_cs;
APS_Lab 0:813b34a76f24 130 int odr;
APS_Lab 0:813b34a76f24 131 AccelTemp minStore;
APS_Lab 0:813b34a76f24 132 AccelTemp maxStore;
APS_Lab 0:813b34a76f24 133
APS_Lab 0:813b34a76f24 134 /* realvalue */
APS_Lab 0:813b34a76f24 135 float gravity;
APS_Lab 0:813b34a76f24 136 float scaleAccel;
APS_Lab 0:813b34a76f24 137 float scaleThermal;
APS_Lab 0:813b34a76f24 138 float offsetThermal;
APS_Lab 0:813b34a76f24 139
APS_Lab 0:813b34a76f24 140 /* convert value */
APS_Lab 0:813b34a76f24 141 void convertSensorData(AccelTemp*, int *);
APS_Lab 0:813b34a76f24 142 int ext12bitToInt(int l, int h);
APS_Lab 0:813b34a76f24 143
APS_Lab 0:813b34a76f24 144 /* update internal min/max */
APS_Lab 0:813b34a76f24 145 void initMinMax(AccelTemp *min, AccelTemp *max);
APS_Lab 0:813b34a76f24 146 void updateMinMax(AccelTemp *min, AccelTemp *max, AccelTemp *getData);
APS_Lab 0:813b34a76f24 147
APS_Lab 0:813b34a76f24 148
APS_Lab 0:813b34a76f24 149 /* communication via SPI*/
APS_Lab 0:813b34a76f24 150 void chipSelOn(void);
APS_Lab 0:813b34a76f24 151 void chipSelOff(void);
APS_Lab 0:813b34a76f24 152 void chipSelDelay(void);
APS_Lab 0:813b34a76f24 153
APS_Lab 0:813b34a76f24 154 /* R/W primitives */
APS_Lab 0:813b34a76f24 155 int regRD(int);
APS_Lab 0:813b34a76f24 156 void regWR(int, int);
APS_Lab 0:813b34a76f24 157 void regBurstRD(int, int, int*);
APS_Lab 0:813b34a76f24 158 };
APS_Lab 0:813b34a76f24 159
APS_Lab 0:813b34a76f24 160 #endif /* _ADXL362_H_ */