add FIFO functions.
ADXL375_i2c.h@0:46fcf349bdca, 2018-11-14 (annotated)
- Committer:
- Sigma884
- Date:
- Wed Nov 14 09:12:38 2018 +0000
- Revision:
- 0:46fcf349bdca
- Child:
- 2:22b1fed9a95d
3???????ADXL375???????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sigma884 | 0:46fcf349bdca | 1 | #ifndef ADXL375_I2C_H |
Sigma884 | 0:46fcf349bdca | 2 | #define ADXL375_I2C_H |
Sigma884 | 0:46fcf349bdca | 3 | |
Sigma884 | 0:46fcf349bdca | 4 | #include "mbed.h" |
Sigma884 | 0:46fcf349bdca | 5 | |
Sigma884 | 0:46fcf349bdca | 6 | //Registers. |
Sigma884 | 0:46fcf349bdca | 7 | #define ADXL375_DEVID_REG 0x00 |
Sigma884 | 0:46fcf349bdca | 8 | #define ADXL375_THRESH_TAP_REG 0x1D |
Sigma884 | 0:46fcf349bdca | 9 | #define ADXL375_OFSX_REG 0x1E |
Sigma884 | 0:46fcf349bdca | 10 | #define ADXL375_OFSY_REG 0x1F |
Sigma884 | 0:46fcf349bdca | 11 | #define ADXL375_OFSZ_REG 0x20 |
Sigma884 | 0:46fcf349bdca | 12 | #define ADXL375_DUR_REG 0x21 |
Sigma884 | 0:46fcf349bdca | 13 | #define ADXL375_LATENT_REG 0x22 |
Sigma884 | 0:46fcf349bdca | 14 | #define ADXL375_WINDOW_REG 0x23 |
Sigma884 | 0:46fcf349bdca | 15 | #define ADXL375_THRESH_ACT_REG 0x24 |
Sigma884 | 0:46fcf349bdca | 16 | #define ADXL375_THRESH_INACT_REG 0x25 |
Sigma884 | 0:46fcf349bdca | 17 | #define ADXL375_TIME_INACT_REG 0x26 |
Sigma884 | 0:46fcf349bdca | 18 | #define ADXL375_ACT_INACT_CTL_REG 0x27 |
Sigma884 | 0:46fcf349bdca | 19 | #define ADXL375_THRESH_FF_REG 0x28 |
Sigma884 | 0:46fcf349bdca | 20 | #define ADXL375_TIME_FF_REG 0x29 |
Sigma884 | 0:46fcf349bdca | 21 | #define ADXL375_TAP_AXES_REG 0x2A |
Sigma884 | 0:46fcf349bdca | 22 | #define ADXL375_ACT_TAP_STATUS_REG 0x2B |
Sigma884 | 0:46fcf349bdca | 23 | #define ADXL375_BW_RATE_REG 0x2C |
Sigma884 | 0:46fcf349bdca | 24 | #define ADXL375_POWER_CTL_REG 0x2D |
Sigma884 | 0:46fcf349bdca | 25 | #define ADXL375_INT_ENABLE_REG 0x2E |
Sigma884 | 0:46fcf349bdca | 26 | #define ADXL375_INT_MAP_REG 0x2F |
Sigma884 | 0:46fcf349bdca | 27 | #define ADXL375_INT_SOURCE_REG 0x30 |
Sigma884 | 0:46fcf349bdca | 28 | #define ADXL375_DATA_FORMAT_REG 0x31 |
Sigma884 | 0:46fcf349bdca | 29 | #define ADXL375_DATAX0_REG 0x32 |
Sigma884 | 0:46fcf349bdca | 30 | #define ADXL375_DATAX1_REG 0x33 |
Sigma884 | 0:46fcf349bdca | 31 | #define ADXL375_DATAY0_REG 0x34 |
Sigma884 | 0:46fcf349bdca | 32 | #define ADXL375_DATAY1_REG 0x35 |
Sigma884 | 0:46fcf349bdca | 33 | #define ADXL375_DATAZ0_REG 0x36 |
Sigma884 | 0:46fcf349bdca | 34 | #define ADXL375_DATAZ1_REG 0x37 |
Sigma884 | 0:46fcf349bdca | 35 | #define ADXL375_FIFO_CTL 0x38 |
Sigma884 | 0:46fcf349bdca | 36 | #define ADXL375_FIFO_STATUS 0x39 |
Sigma884 | 0:46fcf349bdca | 37 | |
Sigma884 | 0:46fcf349bdca | 38 | //Data rate codes. |
Sigma884 | 0:46fcf349bdca | 39 | #define ADXL375_3200HZ 0x0F |
Sigma884 | 0:46fcf349bdca | 40 | #define ADXL375_1600HZ 0x0E |
Sigma884 | 0:46fcf349bdca | 41 | #define ADXL375_800HZ 0x0D |
Sigma884 | 0:46fcf349bdca | 42 | #define ADXL375_400HZ 0x0C |
Sigma884 | 0:46fcf349bdca | 43 | #define ADXL375_200HZ 0x0B |
Sigma884 | 0:46fcf349bdca | 44 | #define ADXL375_100HZ 0x0A |
Sigma884 | 0:46fcf349bdca | 45 | #define ADXL375_50HZ 0x09 |
Sigma884 | 0:46fcf349bdca | 46 | #define ADXL375_25HZ 0x08 |
Sigma884 | 0:46fcf349bdca | 47 | #define ADXL375_12HZ5 0x07 |
Sigma884 | 0:46fcf349bdca | 48 | #define ADXL375_6HZ25 0x06 |
Sigma884 | 0:46fcf349bdca | 49 | |
Sigma884 | 0:46fcf349bdca | 50 | // when ALT ADDRESS pin is LOW |
Sigma884 | 0:46fcf349bdca | 51 | #define ADXL375_I2C_LOW_READ 0xA7 |
Sigma884 | 0:46fcf349bdca | 52 | #define ADXL375_I2C_LOW_WRITE 0xA6 |
Sigma884 | 0:46fcf349bdca | 53 | #define ADXL375_I2C_LOW_ADDRESS 0x53 |
Sigma884 | 0:46fcf349bdca | 54 | |
Sigma884 | 0:46fcf349bdca | 55 | //when ALT ADDRESS pin is HIGH |
Sigma884 | 0:46fcf349bdca | 56 | #define ADXL375_I2C_HIGH_READ 0x3B |
Sigma884 | 0:46fcf349bdca | 57 | #define ADXL375_I2C_HIGH_WRITE 0x3A |
Sigma884 | 0:46fcf349bdca | 58 | #define ADXL375_I2C_HIGH_ADDRESS 0x1D |
Sigma884 | 0:46fcf349bdca | 59 | |
Sigma884 | 0:46fcf349bdca | 60 | #define ADXL375_X 0x00 |
Sigma884 | 0:46fcf349bdca | 61 | #define ADXL375_Y 0x01 |
Sigma884 | 0:46fcf349bdca | 62 | #define ADXL375_Z 0x02 |
Sigma884 | 0:46fcf349bdca | 63 | |
Sigma884 | 0:46fcf349bdca | 64 | // modes |
Sigma884 | 0:46fcf349bdca | 65 | #define MeasurementMode 0x08 |
Sigma884 | 0:46fcf349bdca | 66 | class ADXL375_i2c |
Sigma884 | 0:46fcf349bdca | 67 | { |
Sigma884 | 0:46fcf349bdca | 68 | |
Sigma884 | 0:46fcf349bdca | 69 | public: |
Sigma884 | 0:46fcf349bdca | 70 | |
Sigma884 | 0:46fcf349bdca | 71 | typedef enum{ |
Sigma884 | 0:46fcf349bdca | 72 | ALT_ADDRESS_LOW, |
Sigma884 | 0:46fcf349bdca | 73 | ALT_ADDRESS_HIGH |
Sigma884 | 0:46fcf349bdca | 74 | }ALT_ADDRESS; |
Sigma884 | 0:46fcf349bdca | 75 | |
Sigma884 | 0:46fcf349bdca | 76 | ADXL375_i2c(I2C &userI2C, ALT_ADDRESS LOW_HIGH); |
Sigma884 | 0:46fcf349bdca | 77 | |
Sigma884 | 0:46fcf349bdca | 78 | void getOutput(float* output); |
Sigma884 | 0:46fcf349bdca | 79 | |
Sigma884 | 0:46fcf349bdca | 80 | int whoAmI(); |
Sigma884 | 0:46fcf349bdca | 81 | |
Sigma884 | 0:46fcf349bdca | 82 | void offset(float x, float y, float z); |
Sigma884 | 0:46fcf349bdca | 83 | |
Sigma884 | 0:46fcf349bdca | 84 | void setDataRate(char rate); |
Sigma884 | 0:46fcf349bdca | 85 | |
Sigma884 | 0:46fcf349bdca | 86 | private: |
Sigma884 | 0:46fcf349bdca | 87 | |
Sigma884 | 0:46fcf349bdca | 88 | I2C *i2c; |
Sigma884 | 0:46fcf349bdca | 89 | char ADXL375_I2C_READ; |
Sigma884 | 0:46fcf349bdca | 90 | char ADXL375_I2C_WRITE; |
Sigma884 | 0:46fcf349bdca | 91 | char ADXL375_I2C_ADDRESS; |
Sigma884 | 0:46fcf349bdca | 92 | |
Sigma884 | 0:46fcf349bdca | 93 | float offset_x, offset_y, offset_z; |
Sigma884 | 0:46fcf349bdca | 94 | |
Sigma884 | 0:46fcf349bdca | 95 | char singleByteRead(char address); |
Sigma884 | 0:46fcf349bdca | 96 | void singleByteWrite(char address, char data); |
Sigma884 | 0:46fcf349bdca | 97 | void multiByteRead(char startAddress, char* ptr_output, int size); |
Sigma884 | 0:46fcf349bdca | 98 | |
Sigma884 | 0:46fcf349bdca | 99 | }; |
Sigma884 | 0:46fcf349bdca | 100 | |
Sigma884 | 0:46fcf349bdca | 101 | #endif |