Update
Embed:
(wiki syntax)
Show/hide line numbers
ADXL362.h
00001 #ifndef _ADXL362_H_ 00002 #define _ADXL362_H_ 00003 #include "mbed.h" 00004 #include <SPI.h> 00005 00006 // Register Memory Map 00007 #define DEVID_AD 0x00 00008 #define DEVID_MST 0x01 00009 #define PARTID 0x02 00010 #define REVID 0x03 00011 /* _ reserved _ */ 00012 #define XDATA 0x08 00013 #define YDATA 0x09 00014 #define ZDATA 0x0A 00015 #define STATUS 0x0B 00016 #define FIFO_ENTRIES_L 0x0C 00017 #define FIFO_ENTRIES_H 0x0D 00018 #define XDATA_L 0x0E 00019 #define XDATA_H 0x0F 00020 #define YDATA_L 0x10 00021 #define YDATA_H 0x11 00022 #define ZDATA_L 0x12 00023 #define ZDATA_H 0x13 00024 #define TEMP_L 0x14 00025 #define TEMP_H 0x15 00026 /* _ reserved _ */ 00027 #define SOFT_RESET 0x1F 00028 #define THRESH_ACT_L 0x20 00029 #define THRESH_ACT_H 0x21 00030 #define TIME_ACT 0x22 00031 #define THRESH_INACT_L 0x23 00032 #define THRESH_INACT_H 0x24 00033 #define TIME_INACT_L 0x25 00034 #define TIME_INACT_H 0x26 00035 #define ACT_INACT_CTL 0x27 00036 #define FIFO_CONTROL 0x28 00037 #define FIFO_SAMPLES 0x29 00038 #define INTMAP1 0x2A 00039 #define INTMAP2 0x2B 00040 #define FILTER_CTL 0x2C 00041 #define POWER_CTL 0x2D 00042 #define SELF_TEST 0x2E 00043 00044 /* ADXL const parameters */ 00045 #define SOFT_RESET_ADXL362 (0x52) 00046 00047 #define POWER_CTL_PARAM_LOWNOISE_NORM (0x00) 00048 #define POWER_CTL_PARAM_LOWNOISE_LOW (0x10) 00049 #define POWER_CTL_PARAM_LOWNOISE_ULTRA (0x20) 00050 00051 #define POWER_CTL_MODEMASK (0x03) 00052 #define POWER_CTL_STOP (0x00) 00053 #define POWER_CTL_STANDBY (0x01) 00054 #define POWER_CTL_MESURE (0x02) 00055 00056 /* ADXL362 configuration */ 00057 #define DEVID_AD_ADXL362 (0xAD) 00058 #define DEVID_MST_ADXL362 (0x1D) 00059 #define PARTID_ADXL362 (0xF2) 00060 00061 #define GRAVITY_2G (2.0) 00062 #define GRAVITY_4G (4.0) 00063 #define GRAVITY_8G (8.0) 00064 00065 #define ODR_12 0 00066 #define ODR_25 1 00067 #define ODR_50 2 00068 #define ODR_100 3 00069 #define ODR_200 4 00070 #define ODR_400 5 00071 00072 00073 #define PARAM_ADXL362_SCALE_ACCEL (1.0f * 0.001f * 9.80665f) // DATA 00074 #define PARAM_ADXL362_SCALE_THERMAL (0.0025f) // TEMP 00075 #define PARAM_ADXL362_THERMAL_OFFSET (25.0f) // TEMP 00076 00077 00078 00079 /* Output of Accelerometers */ 00080 typedef struct _struct_AccelTemp { 00081 int ax; 00082 int ay; 00083 int az; 00084 int tm; 00085 } AccelTemp; 00086 00087 /* ADIS16460 class definition */ 00088 class ADXL362 { 00089 00090 public: 00091 00092 /* ADIS16460 initializer */ 00093 ADXL362(Serial*, SPI*); 00094 ~ADXL362(); 00095 00096 /* Control */ 00097 void SoftReset(); 00098 void SetMesureParam(int param); 00099 void StartMesure(); 00100 int GetStatus(); 00101 00102 /* Sensing */ 00103 void SensorRead(AccelTemp*); 00104 00105 /* GetSubInfo */ 00106 AccelTemp* GetMinInfo(void); 00107 AccelTemp* GetMaxInfo(void); 00108 00109 /* convert real scale */ 00110 float ConvAccel(int ctrlval); 00111 float ConvThermal(int ctrlval); 00112 00113 /* configuration */ 00114 void set_gravity(int g); 00115 void set_ODR(int o); 00116 void set_powermode(int m); 00117 void set_wakeupmode(void); 00118 void set_scalefactor(void); 00119 void start(void); 00120 void stop(void); 00121 00122 private: 00123 /* locked */ 00124 ADXL362(); 00125 00126 /* information store */ 00127 Serial *uart; 00128 SPI *_spi; 00129 DigitalOut *_cs; 00130 int odr; 00131 AccelTemp minStore; 00132 AccelTemp maxStore; 00133 00134 /* realvalue */ 00135 float gravity; 00136 float scaleAccel; 00137 float scaleThermal; 00138 float offsetThermal; 00139 00140 /* convert value */ 00141 void convertSensorData(AccelTemp*, int *); 00142 int ext12bitToInt(int l, int h); 00143 00144 /* update internal min/max */ 00145 void initMinMax(AccelTemp *min, AccelTemp *max); 00146 void updateMinMax(AccelTemp *min, AccelTemp *max, AccelTemp *getData); 00147 00148 00149 /* communication via SPI*/ 00150 void chipSelOn(void); 00151 void chipSelOff(void); 00152 void chipSelDelay(void); 00153 00154 /* R/W primitives */ 00155 int regRD(int); 00156 void regWR(int, int); 00157 void regBurstRD(int, int, int*); 00158 }; 00159 00160 #endif /* _ADXL362_H_ */
Generated on Sun Jul 17 2022 16:50:02 by 1.7.2