ADXL375をspiで使えるようにしたライブラリ

Dependents:   Stability_seed2019_v2

Committer:
Sigma884
Date:
Tue Mar 17 12:30:36 2020 +0000
Revision:
0:6bf9c1ce7bdc
commit for publish stability_seed2019_v1

Who changed what in which revision?

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