APS Lab
/
mbed-os-example-adxl362
adxl362 csv output format
ADXL362.h@0:813b34a76f24, 2019-05-16 (annotated)
- Committer:
- APS_Lab
- Date:
- Thu May 16 07:02:24 2019 +0000
- Revision:
- 0:813b34a76f24
adxl362
Who changed what in which revision?
User | Revision | Line number | New 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_ */ |