MMA8452Q, 3-axis, 12-bit/8-bit digital accelerometer library. Developed by aconno dev team. For example program with the library, contact us.
Dependents: acd52832_BLE_VF_GeoBeacon
Diff: mma8452.h
- Revision:
- 0:65b19bf1382a
- Child:
- 1:bda670d7a481
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mma8452.h Sun Jul 02 16:04:27 2017 +0000 @@ -0,0 +1,81 @@ +/* + * Library for mma8452 3-Axis, 12-bit/8-bit, Digital Accelerometer + * Made by Jurica Resetar + * jurica_resetar@yahoo.com + * + * All rights reserved + */ + +#include "mbed.h" + +#define SA0 1 +#if SA0 + #define MMA8452_ADDRESS 0x1D // SA0 is high, 0x1C if low - +#else + #define MMA8452_ADDRESS 0x1C +#endif + +#define STATUS 0x00 // Type 'read' : Real time status, should return 0x00 +#define OUT_X_MSB 0x01 // Type 'read' : x axis - 8 most significatn bit of a 12 bit sample +#define OUT_X_LSB 0x02 // Type 'read' : x axis - 4 least significatn bit of a 12 bit sample +#define OUT_Y_MSB 0x03 // Type 'read' : y axis - 8 most significatn bit of a 12 bit sample +#define OUT_Y_LSB 0x04 // Type 'read' : y axis - 4 least significatn bit of a 12 bit sample +#define OUT_Z_MSB 0x05 // Type 'read' : z axis - 8 most significatn bit of a 12 bit sample +#define OUT_Z_LSB 0x06 // Type 'read' : z axis - 4 least significatn bit of a 12 bit sample + +#define SYSMOD 0x0B // Type 'read' : This tells you if device is active, sleep or standy 0x00=STANDBY 0x01=WAKE 0x02=SLEEP +#define WHO_AM_I 0x0D // Type 'read' : This should return the device id of 0x2A + +#define PL_STATUS 0x10 // Type 'read' : This shows portrait landscape mode orientation +#define PL_CFG 0x11 // Type 'read/write' : This allows portrait landscape configuration +#define PL_COUNT 0x12 // Type 'read' : This is the portraint landscape debounce counter +#define PL_BF_ZCOMP 0x13 // Type 'read' : +#define PL_THS_REG 0x14 // Type 'read' : + +#define FF_MT_CFG 0X15 // Type 'read/write' : Freefaul motion functional block configuration +#define FF_MT_SRC 0X16 // Type 'read' : Freefaul motion event source register +#define FF_MT_THS 0X17 // Type 'read' : Freefaul motion threshold register +#define FF_COUNT 0X18 // Type 'read' : Freefaul motion debouce counter + +#define ASLP_COUNT 0x29 // Type 'read/write' : Counter settings for auto sleep +#define CTRL_REG_1 0x2A // Type 'read/write' : +#define CTRL_REG_2 0x2B // Type 'read/write' : +#define CTRL_REG_3 0x2C // Type 'read/write' : +#define CTRL_REG_4 0x2D // Type 'read/write' : +#define CTRL_REG_5 0x2E // Type 'read/write' : + +// Defined in table 13 of the Freescale PDF +#define STANDBY 0x00 // State value returned after a SYSMOD request, it can be in state STANDBY, WAKE or SLEEP +#define WAKE 0x01 // State value returned after a SYSMOD request, it can be in state STANDBY, WAKE or SLEEP +#define SLEEP 0x02 // State value returned after a SYSMOD request, it can be in state STANDBY, WAKE or SLEEP +#define ACTIVE 0x01 // Stage value returned and set in Control Register 1, it can be STANDBY=00, or ACTIVE=01 + + + +#define TILT_STATUS 0x03 // Tilt Status (Read only) +#define SRST_STATUS 0x04 // Sample Rate Status Register (Read only) +#define SPCNT_STATUS 0x05 // Sleep Count Register (Read/Write) +#define INTSU_STATUS 0x06 // Interrupt Setup Register +#define MODE_STATUS 0x07 // Mode Register (Read/Write) +#define SR_STATUS 0x08 // Auto-Wake and Active Mode Portrait/Landscape Samples per Seconds Register (Read/Write) +#define PDET_STATUS 0x09 // Tap/Pulse Detection Register (Read/Write) +#define PD_STATUS 0xA // Tap/Pulse Debounce Count Register (Read/Write) + + +class Acc_MMA8452{ + public: + Acc_MMA8452(PinName sda, PinName scl, char address); + ~Acc_MMA8452(); + //uint8_tinit(); + uint8_t set_register(char reg, char data); + uint8_t get_register(char reg, char *data); + uint8_t get_x_acc(char *data); + uint8_t get_y_acc(char *data); + uint8_t get_z_acc(char *data); + + char acc_address; + + private: + I2C i2c; +}; + \ No newline at end of file