MPL3115A2 driver

Dependents:   lmic_NAmote_GPS_tjm lmic_NAmote_GPS_tjm Senet NAMote scpi_sx127x ... more

Committer:
dudmuck
Date:
Wed Mar 18 01:00:53 2015 +0000
Revision:
0:6bba2efea51e
Child:
1:3cd1f21925e8
MPL3115A2 driver

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dudmuck 0:6bba2efea51e 1 #include "mbed.h"
dudmuck 0:6bba2efea51e 2
dudmuck 0:6bba2efea51e 3 /*
dudmuck 0:6bba2efea51e 4 * MPL3115A2 Registers
dudmuck 0:6bba2efea51e 5 */
dudmuck 0:6bba2efea51e 6 #define STATUS_REG 0x00 // STATUS Register
dudmuck 0:6bba2efea51e 7
dudmuck 0:6bba2efea51e 8 #define OUT_P_MSB_REG 0x01 // Bits 12-19 of 20-bit real-time Pressure sample
dudmuck 0:6bba2efea51e 9 #define OUT_P_CSB_REG 0x02 // Bits 4-11 of 20-bit real-time Pressure sample
dudmuck 0:6bba2efea51e 10 #define OUT_P_LSB_REG 0x03 // Bits 0-3 of 20-bit real-time Pressure sample
dudmuck 0:6bba2efea51e 11 #define OUT_T_MSB_REG 0x04 // Bits 4-11 of 12-bit real-time Temperature sample
dudmuck 0:6bba2efea51e 12 #define OUT_T_LSB_REG 0x05 // Bits 0-3 of 12-bit real-time Temperature sample
dudmuck 0:6bba2efea51e 13
dudmuck 0:6bba2efea51e 14 #define DR_STATUS 0x06 // Data Ready status information
dudmuck 0:6bba2efea51e 15
dudmuck 0:6bba2efea51e 16 #define OUT_P_DELTA_MSB_REG 0x07 // Bits 12-19 of 20-bit Pressure change data
dudmuck 0:6bba2efea51e 17 #define OUT_P_DELTA_CSB_REG 0x08 // Bits 4-11 of 20-bit Pressure change data
dudmuck 0:6bba2efea51e 18 #define OUT_P_DELTA_LSB_REG 0x09 // Bits 0-3 of 20-bit Pressure change data
dudmuck 0:6bba2efea51e 19 #define OUT_T_DELTA_MSB_REG 0x0A // Bits 4-11 of 12-bit Temperature change data
dudmuck 0:6bba2efea51e 20 #define OUT_T_DELTA_LSB_REG 0x0B // Bits 0-3 of 12-bit Temperature change data
dudmuck 0:6bba2efea51e 21
dudmuck 0:6bba2efea51e 22 #define MPL3115_ID 0x0C // Fixed Device ID Number = 0xC4
dudmuck 0:6bba2efea51e 23
dudmuck 0:6bba2efea51e 24 #define F_STATUS_REG 0x0D // FIFO Status
dudmuck 0:6bba2efea51e 25 #define F_DATA_REG 0x0E // FIFO 8-bit data access
dudmuck 0:6bba2efea51e 26 #define F_SETUP_REG 0x0F // FIFO setup
dudmuck 0:6bba2efea51e 27 #define TIME_DLY_REG 0x10 // Time since FIFO overflow
dudmuck 0:6bba2efea51e 28
dudmuck 0:6bba2efea51e 29 #define SYSMOD_REG 0x11 // Current system mode
dudmuck 0:6bba2efea51e 30 #define INT_SOURCE_REG 0x12 // Interrupt status
dudmuck 0:6bba2efea51e 31 #define PT_DATA_CFG_REG 0x13 // Data event flag configuration
dudmuck 0:6bba2efea51e 32
dudmuck 0:6bba2efea51e 33 #define BAR_IN_MSB_REG 0x14 // Barometric input for Altitude calculation bits 8-15
dudmuck 0:6bba2efea51e 34 #define BAR_IN_LSB_REG 0x15 // Barometric input for Altitude calculation bits 0-7
dudmuck 0:6bba2efea51e 35
dudmuck 0:6bba2efea51e 36 #define P_TGT_MSB_REG 0x16 // Pressure/Altitude target value bits 8-15
dudmuck 0:6bba2efea51e 37 #define P_TGT_LSB_REG 0x17 // Pressure/Altitude target value bits 0-7
dudmuck 0:6bba2efea51e 38 #define T_TGT_REG 0x18 // Temperature target value
dudmuck 0:6bba2efea51e 39
dudmuck 0:6bba2efea51e 40 #define P_WND_MSB_REG 0x19 // Pressure/Altitude window value bits 8-15
dudmuck 0:6bba2efea51e 41 #define P_WND_LSB_REG 0x1A // Pressure/Altitude window value bits 0-7
dudmuck 0:6bba2efea51e 42 #define T_WND_REG 0x1B // Temperature window value
dudmuck 0:6bba2efea51e 43
dudmuck 0:6bba2efea51e 44 #define P_MIN_MSB_REG 0x1C // Minimum Pressure/Altitude bits 12-19
dudmuck 0:6bba2efea51e 45 #define P_MIN_CSB_REG 0x1D // Minimum Pressure/Altitude bits 4-11
dudmuck 0:6bba2efea51e 46 #define P_MIN_LSB_REG 0x1E // Minimum Pressure/Altitude bits 0-3
dudmuck 0:6bba2efea51e 47 #define T_MIN_MSB_REG 0x1F // Minimum Temperature bits 8-15
dudmuck 0:6bba2efea51e 48 #define T_MIN_LSB_REG 0x20 // Minimum Temperature bits 0-7
dudmuck 0:6bba2efea51e 49
dudmuck 0:6bba2efea51e 50 #define P_MAX_MSB_REG 0x21 // Maximum Pressure/Altitude bits 12-19
dudmuck 0:6bba2efea51e 51 #define P_MAX_CSB_REG 0x22 // Maximum Pressure/Altitude bits 4-11
dudmuck 0:6bba2efea51e 52 #define P_MAX_LSB_REG 0x23 // Maximum Pressure/Altitude bits 0-3
dudmuck 0:6bba2efea51e 53 #define T_MAX_MSB_REG 0x24 // Maximum Pressure/Altitude bits 8-15
dudmuck 0:6bba2efea51e 54 #define T_MAX_LSB_REG 0x25 // Maximum Pressure/Altitude bits 0-7
dudmuck 0:6bba2efea51e 55
dudmuck 0:6bba2efea51e 56 #define CTRL_REG1 0x26 // CTRL_REG1 System Control 1 Register
dudmuck 0:6bba2efea51e 57 #define CTRL_REG2 0x27 // CTRL_REG2 System Control 2 Register
dudmuck 0:6bba2efea51e 58 #define CTRL_REG3 0x28 // CTRL_REG3 Interrupt Configuration Register
dudmuck 0:6bba2efea51e 59 #define CTRL_REG4 0x29 // CTRL_REG4 Interrupt Enable Register
dudmuck 0:6bba2efea51e 60 #define CTRL_REG5 0x2A // CTRL_REG5 Interrupt Output Pin Assignment Register
dudmuck 0:6bba2efea51e 61
dudmuck 0:6bba2efea51e 62 #define OFF_P_REG 0x2B // Pressure data offset
dudmuck 0:6bba2efea51e 63 #define OFF_T_REG 0x2C // Temperature data offset
dudmuck 0:6bba2efea51e 64 #define OFF_H_REG 0x2D // Altitude data offset
dudmuck 0:6bba2efea51e 65
dudmuck 0:6bba2efea51e 66 class MPL3115A2 {
dudmuck 0:6bba2efea51e 67 public:
dudmuck 0:6bba2efea51e 68 MPL3115A2(I2C& r);
dudmuck 0:6bba2efea51e 69 ~MPL3115A2();
dudmuck 0:6bba2efea51e 70 //void try_read(void);
dudmuck 0:6bba2efea51e 71 void write(uint8_t reg_addr, uint8_t reg_value);
dudmuck 0:6bba2efea51e 72 void init(void);
dudmuck 0:6bba2efea51e 73 uint8_t read(uint8_t a);
dudmuck 0:6bba2efea51e 74 void SetModeActive(void);
dudmuck 0:6bba2efea51e 75 void SetModeStandby(void);
dudmuck 0:6bba2efea51e 76 float ReadAltitude( void );
dudmuck 0:6bba2efea51e 77 float ReadTemperature( void );
dudmuck 0:6bba2efea51e 78 void SetModeAltimeter(void);
dudmuck 0:6bba2efea51e 79 void ToggleOneShot( void );
dudmuck 0:6bba2efea51e 80 float Altitude;
dudmuck 0:6bba2efea51e 81 float Temperature;
dudmuck 0:6bba2efea51e 82
dudmuck 0:6bba2efea51e 83 private:
dudmuck 0:6bba2efea51e 84 I2C& m_i2c;
dudmuck 0:6bba2efea51e 85 };
dudmuck 0:6bba2efea51e 86
dudmuck 0:6bba2efea51e 87