This my big project for PYRN Board
Dependencies: CAN HTTPClient MODSERIAL MyThings Pyrn3GModem Socket TinyGPS MyUSBHost lwip-sys lwip mbed-rtos mbed-src
LSM303DLH.h@0:efe6085327fd, 2015-04-14 (annotated)
- Committer:
- clemounet
- Date:
- Tue Apr 14 13:30:02 2015 +0000
- Revision:
- 0:efe6085327fd
All the projet PYRN 3G-CAN-ACC...
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
clemounet | 0:efe6085327fd | 1 | #ifndef __LSM303DLH_H |
clemounet | 0:efe6085327fd | 2 | #define __LSM303DLH_H |
clemounet | 0:efe6085327fd | 3 | |
clemounet | 0:efe6085327fd | 4 | #include "mbed.h" |
clemounet | 0:efe6085327fd | 5 | |
clemounet | 0:efe6085327fd | 6 | // CONSTS |
clemounet | 0:efe6085327fd | 7 | |
clemounet | 0:efe6085327fd | 8 | #define WRITE_BUFF_MAX 16 |
clemounet | 0:efe6085327fd | 9 | #define LSM303DH_ID 0x49 |
clemounet | 0:efe6085327fd | 10 | |
clemounet | 0:efe6085327fd | 11 | // I2C Addresses (SAO -> 1) |
clemounet | 0:efe6085327fd | 12 | |
clemounet | 0:efe6085327fd | 13 | #define LSM303D_ADDR_R 0x3B |
clemounet | 0:efe6085327fd | 14 | #define LSM303D_ADDR_W 0x3A |
clemounet | 0:efe6085327fd | 15 | |
clemounet | 0:efe6085327fd | 16 | // REGISTERS |
clemounet | 0:efe6085327fd | 17 | |
clemounet | 0:efe6085327fd | 18 | #define CTRL0 0x1F |
clemounet | 0:efe6085327fd | 19 | #define CTRL1 0x20 |
clemounet | 0:efe6085327fd | 20 | #define CTRL2 0x21 |
clemounet | 0:efe6085327fd | 21 | #define CTRL3 0x22 |
clemounet | 0:efe6085327fd | 22 | #define CTRL4 0x23 |
clemounet | 0:efe6085327fd | 23 | #define CTRL5 0x24 |
clemounet | 0:efe6085327fd | 24 | #define CTRL6 0x25 |
clemounet | 0:efe6085327fd | 25 | #define CTRL7 0x26 |
clemounet | 0:efe6085327fd | 26 | |
clemounet | 0:efe6085327fd | 27 | #define WHO_AM_I 0x0F |
clemounet | 0:efe6085327fd | 28 | |
clemounet | 0:efe6085327fd | 29 | #define TEMP_OUT_L 0x05 |
clemounet | 0:efe6085327fd | 30 | #define TEMP_OUT_H 0x06 |
clemounet | 0:efe6085327fd | 31 | |
clemounet | 0:efe6085327fd | 32 | #define STATUS_M 0x07 |
clemounet | 0:efe6085327fd | 33 | #define OUT_X_L_M 0x08 |
clemounet | 0:efe6085327fd | 34 | #define OUT_X_H_M 0x09 |
clemounet | 0:efe6085327fd | 35 | #define OUT_Y_L_M 0x0A |
clemounet | 0:efe6085327fd | 36 | #define OUT_Y_H_M 0x0B |
clemounet | 0:efe6085327fd | 37 | #define OUT_Z_L_M 0x0C |
clemounet | 0:efe6085327fd | 38 | #define OUT_Z_H_M 0x0D |
clemounet | 0:efe6085327fd | 39 | |
clemounet | 0:efe6085327fd | 40 | #define STATUS_A 0x27 |
clemounet | 0:efe6085327fd | 41 | #define OUT_X_L_A 0x28 |
clemounet | 0:efe6085327fd | 42 | #define OUT_X_H_A 0x29 |
clemounet | 0:efe6085327fd | 43 | #define OUT_Y_L_A 0x2A |
clemounet | 0:efe6085327fd | 44 | #define OUT_Y_H_A 0x2B |
clemounet | 0:efe6085327fd | 45 | #define OUT_Z_L_A 0x2C |
clemounet | 0:efe6085327fd | 46 | #define OUT_Z_H_A 0x2D |
clemounet | 0:efe6085327fd | 47 | |
clemounet | 0:efe6085327fd | 48 | class LSM303DLH { |
clemounet | 0:efe6085327fd | 49 | private: |
clemounet | 0:efe6085327fd | 50 | float accLSB; |
clemounet | 0:efe6085327fd | 51 | float magLSB; |
clemounet | 0:efe6085327fd | 52 | |
clemounet | 0:efe6085327fd | 53 | I2C dev; |
clemounet | 0:efe6085327fd | 54 | uint8_t dataBuff[WRITE_BUFF_MAX]; // Who read more than WRITE_BUFF_MAX(16)? |
clemounet | 0:efe6085327fd | 55 | |
clemounet | 0:efe6085327fd | 56 | uint8_t devRead(const uint8_t reg, uint8_t *data, uint8_t size); |
clemounet | 0:efe6085327fd | 57 | uint8_t devReadSingle(const uint8_t reg, uint8_t byte); |
clemounet | 0:efe6085327fd | 58 | uint8_t devWrite(const uint8_t reg, uint8_t *data, uint8_t size); |
clemounet | 0:efe6085327fd | 59 | uint8_t devWriteSingle(const uint8_t reg, uint8_t byte); |
clemounet | 0:efe6085327fd | 60 | public: |
clemounet | 0:efe6085327fd | 61 | LSM303DLH(PinName sda = p28, PinName scl = p27); |
clemounet | 0:efe6085327fd | 62 | void basicConfig(void); |
clemounet | 0:efe6085327fd | 63 | void readRawAcc(int16_t *x, int16_t *y, int16_t *z); |
clemounet | 0:efe6085327fd | 64 | void readRawMag(int16_t *x, int16_t *y, int16_t *z); |
clemounet | 0:efe6085327fd | 65 | void readAcc(float *x, float *y, float *z); |
clemounet | 0:efe6085327fd | 66 | void readMag(float *x, float *y, float *z); |
clemounet | 0:efe6085327fd | 67 | }; |
clemounet | 0:efe6085327fd | 68 | |
clemounet | 0:efe6085327fd | 69 | #endif |