This my big project for PYRN Board

Dependencies:   CAN HTTPClient MODSERIAL MyThings Pyrn3GModem Socket TinyGPS MyUSBHost lwip-sys lwip mbed-rtos mbed-src

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?

UserRevisionLine numberNew 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