A basic library for the FXOS8700Q combination accelerometer / magnetometer

Dependencies:   MotionSensor

Dependents:   K64F_eCompass_LCD Hello_FXOS8700Q rtos_compass K64F_eCompass ... more

This library supports the 6 axis combination Accelerometer / Magnetometer. Functions are provided to retrieve data in raw 16 bit signed integers or unit converted G's and micro-teslas

Committer:
JimCarver
Date:
Mon Apr 07 00:58:50 2014 +0000
Revision:
0:2562215f5bc0
Child:
1:8b53edef272f
Rev 0.1 Simple operation of just X, Y, Z values in floating point G's and micro-teslas

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JimCarver 0:2562215f5bc0 1 #ifndef FXOS8700Q_H
JimCarver 0:2562215f5bc0 2 #define FXOS8700Q_H
JimCarver 0:2562215f5bc0 3
JimCarver 0:2562215f5bc0 4 #include "mbed.h"
JimCarver 0:2562215f5bc0 5 // FXOS8700CQ I2C address
JimCarver 0:2562215f5bc0 6 #define FXOS8700CQ_SLAVE_ADDR 0x3C // with pins SA0=0, SA1=0
JimCarver 0:2562215f5bc0 7
JimCarver 0:2562215f5bc0 8 // FXOS8700CQ internal register addresses
JimCarver 0:2562215f5bc0 9 #define FXOS8700CQ_STATUS 0x00
JimCarver 0:2562215f5bc0 10 #define FXOS8700CQ_WHOAMI 0x0D
JimCarver 0:2562215f5bc0 11 #define FXOS8700CQ_XYZ_DATA_CFG 0x0E
JimCarver 0:2562215f5bc0 12 #define FXOS8700CQ_CTRL_REG1 0x2A
JimCarver 0:2562215f5bc0 13 #define FXOS8700CQ_M_CTRL_REG1 0x5B
JimCarver 0:2562215f5bc0 14 #define FXOS8700CQ_M_CTRL_REG2 0x5C
JimCarver 0:2562215f5bc0 15 #define FXOS8700CQ_WHOAMI_VAL 0xC7
JimCarver 0:2562215f5bc0 16
JimCarver 0:2562215f5bc0 17 class FXOS8700Q
JimCarver 0:2562215f5bc0 18 {
JimCarver 0:2562215f5bc0 19 public:
JimCarver 0:2562215f5bc0 20 /**
JimCarver 0:2562215f5bc0 21 * MPL3115A2 constructor
JimCarver 0:2562215f5bc0 22 *
JimCarver 0:2562215f5bc0 23 * @param sda SDA pin
JimCarver 0:2562215f5bc0 24 * @param sdl SCL pin
JimCarver 0:2562215f5bc0 25 * @param addr addr of the I2C peripheral
JimCarver 0:2562215f5bc0 26 */
JimCarver 0:2562215f5bc0 27 FXOS8700Q(PinName sda, PinName scl);
JimCarver 0:2562215f5bc0 28
JimCarver 0:2562215f5bc0 29 /**
JimCarver 0:2562215f5bc0 30 * Get the value of the WHO_AM_I register
JimCarver 0:2562215f5bc0 31 *
JimCarver 0:2562215f5bc0 32 * @returns DEVICE_ID value == ??
JimCarver 0:2562215f5bc0 33 */
JimCarver 0:2562215f5bc0 34 //uint8_t getDeviceID();
JimCarver 0:2562215f5bc0 35
JimCarver 0:2562215f5bc0 36 /**
JimCarver 0:2562215f5bc0 37 * Return the STATUS register value
JimCarver 0:2562215f5bc0 38 *
JimCarver 0:2562215f5bc0 39 * @returns STATUS register value
JimCarver 0:2562215f5bc0 40 */
JimCarver 0:2562215f5bc0 41 //unsigned char getStatus( void);
JimCarver 0:2562215f5bc0 42
JimCarver 0:2562215f5bc0 43 /**
JimCarver 0:2562215f5bc0 44 * Get the Accelerometer & Magnetometer values
JimCarver 0:2562215f5bc0 45 * Accelerometer data is in G's
JimCarver 0:2562215f5bc0 46 * MAgnetometer Data is in microteslas
JimCarver 0:2562215f5bc0 47 *
JimCarver 0:2562215f5bc0 48 * @returns altimeter value as float
JimCarver 0:2562215f5bc0 49 */
JimCarver 0:2562215f5bc0 50 void ReadXYZ(float * a, float * m);
JimCarver 0:2562215f5bc0 51
JimCarver 0:2562215f5bc0 52
JimCarver 0:2562215f5bc0 53 private:
JimCarver 0:2562215f5bc0 54
JimCarver 0:2562215f5bc0 55 I2C _i2c;
JimCarver 0:2562215f5bc0 56 /** Set the device in active mode
JimCarver 0:2562215f5bc0 57 */
JimCarver 0:2562215f5bc0 58 void begin( void);
JimCarver 0:2562215f5bc0 59
JimCarver 0:2562215f5bc0 60 void RegRead( char reg, char * d, int len);
JimCarver 0:2562215f5bc0 61
JimCarver 0:2562215f5bc0 62
JimCarver 0:2562215f5bc0 63 };
JimCarver 0:2562215f5bc0 64
JimCarver 0:2562215f5bc0 65 #endif