Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: BM1383AGLV.h
- Revision:
- 1:49d8e4da0b7c
- Parent:
- 0:b7e485d0c51d
- Child:
- 2:4aa16ca14915
--- a/BM1383AGLV.h Wed Oct 02 11:34:56 2019 +0000 +++ b/BM1383AGLV.h Wed Oct 02 11:39:53 2019 +0000 @@ -0,0 +1,263 @@ +/** + * @brief BM1383AGLV.h + * @details Pressure Sensor IC. + * Header file. + * + * + * @return N/A + * + * @author Manuel Caballero + * @date 02/October/2019 + * @version 02/October/2019 The ORIGIN + * @pre N/A. + * @warning N/A + * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). All rights reserved. + */ +#ifndef BM1383AGLV_H +#define BM1383AGLV_H + +#include "mbed.h" + + +/** + Example: +@code + +@endcode +*/ + + +/*! + Library for the BM1383AGLV Pressure Sensor IC. +*/ +class BM1383AGLV +{ +public: + /** + * @brief DEFAULT ADDRESS + */ + typedef enum { + BM1383AGLV_ADDRESS = 0b1011101 /*!< I2C slave address byte */ + } BM1383AGLV_address_t; + + + + /** + * @brief REGISTERS + */ + typedef enum { + BM1383AGLV_ID1 = 0x0F, /*!< Device ID1 */ + BM1383AGLV_ID2 = 0x10, /*!< Device ID2 */ + BM1383AGLV_POWER_DOWN = 0x12, /*!< Power down register */ + BM1383AGLV_RESET = 0x13, /*!< Reset register */ + BM1383AGLV_MODE_CONTROL = 0x14, /*!< Mode control register */ + BM1383AGLV_STATUS = 0x19, /*!< Status register */ + BM1383AGLV_PRESSURE_MSB = 0x1A, /*!< Pressure data (MSB) */ + BM1383AGLV_PRESSURE_LSB = 0x1B, /*!< Pressure data (LSB) */ + BM1383AGLV_PRESSURE_XLSB = 0x1C, /*!< Pressure data (XLSB) */ + BM1383AGLV_TEMPERATURE_MSB = 0x1D, /*!< Temperature data (MSB) */ + BM1383AGLV_TEMPERATURE_LSB = 0x1E /*!< Temperature data (LSB) */ + } BM1383AGLV_registers_t; + + + + /** + * @brief ID REGISTERS + */ + typedef enum { + ID_ID1 = 0xE0, /*!< ID1 value */ + ID_ID2 = 0x32 /*!< ID2 value */ + } BM1383AGLV_id_t; + + + + /** + * @brief POWER_DOWN REGISTER + */ + /* PWR_DOWN <0> + * NOTE: Power down or active mode. + */ + typedef enum { + POWER_DOWN_PWR_DOWN_MASK = ( 1U << 0U ), /*!< POWER_DOWN mask */ + POWER_DOWN_PWR_DOWN_POWER_DOWN = ( 0U << 0U ), /*!< Power down [ Default ] */ + POWER_DOWN_PWR_DOWN_ACTIVE = ( 1U << 0U ) /*!< Active */ + } BM1383AGLV_power_down_pwr_down_t; + + + /** + * @brief RESET REGISTER + */ + /* RSTB <0> + * NOTE: N/A. + */ + typedef enum { + RESET_RSTB_MASK = ( 1U << 0U ), /*!< RSTB mask */ + RESET_RSTB_RESET = ( 0U << 0U ), /*!< Measurement control block is reset [ Default ] */ + RESET_RSTB_ACTIVE = ( 1U << 0U ) /*!< Measurement control block is active */ + } BM1383AGLV_reset_rstb_t; + + + + /** + * @brief MODE_CONTROL REGISTER + */ + /* AVE_NUM <7:5> + * NOTE: Set the average number of measurement data. + */ + typedef enum { + MODE_CONTROL_AVE_NUM_MASK = ( 0b111 << 5U ), /*!< AVE_NUM mask */ + MODE_CONTROL_AVE_NUM_SINGLE = ( 0b000 << 5U ), /*!< AVE_NUM: Single */ + MODE_CONTROL_AVE_NUM_AVERAGE_2 = ( 0b001 << 5U ), /*!< AVE_NUM: Average of 2 times [ Default ] */ + MODE_CONTROL_AVE_NUM_AVERAGE_4 = ( 0b010 << 5U ), /*!< AVE_NUM: Average of 4 times */ + MODE_CONTROL_AVE_NUM_AVERAGE_8 = ( 0b011 << 5U ), /*!< AVE_NUM: Average of 8 times */ + MODE_CONTROL_AVE_NUM_AVERAGE_16 = ( 0b100 << 5U ), /*!< AVE_NUM: Average of 16 times */ + MODE_CONTROL_AVE_NUM_AVERAGE_32 = ( 0b101 << 5U ), /*!< AVE_NUM: Average of 32 times */ + MODE_CONTROL_AVE_NUM_AVERAGE_64 = ( 0b110 << 5U ) /*!< AVE_NUM: Average of 64 times */ + } BM1383AGLV_mode_control_ave_num_t; + + + /* DREN <4> + * NOTE: DRDY pin Enable. + */ + typedef enum { + MODE_CONTROL_DREN_MASK = ( 1U << 4U ), /*!< DREN mask */ + MODE_CONTROL_DREN_DRDY_DISABLE = ( 0U << 4U ), /*!< DRDY pin Disable [ Default ] */ + MODE_CONTROL_DREN_DRDY_ENABLE = ( 1U << 4U ) /*!< DRDY pin Enable */ + } BM1383AGLV_mode_control_dren_t; + + + /* MODE <1:0> + * NOTE: Set measurement mode. + */ + typedef enum { + MODE_CONTROL_MODE_MASK = ( 0b11 << 0U ), /*!< MODE mask */ + MODE_CONTROL_MODE_STAND_BY = ( 0b00 << 0U ), /*!< Stand by [ Default ] */ + MODE_CONTROL_MODE_ONE_SHOT = ( 0b01 << 0U ), /*!< One shot */ + MODE_CONTROL_MODE_CONTINUOUS = ( 0b10 << 0U ) /*!< Continuous */ + } BM1383AGLV_mode_control_mode_t; + + + /** + * @brief STATUS REGISTER + */ + /* RD_DRDY <0> + * NOTE: Pressure and temperature measurement data ready bit. + */ + typedef enum { + STATUS_RD_DRDY_MASK = ( 1U << 0U ), /*!< RD_DRDY mask */ + STATUS_RD_DRDY_DATA_MEASURING = ( 0U << 0U ), /*!< Measurement data output is not yet available (measuring) [ Default ] */ + STATUS_RD_DRDY_DATA_AVAILABLE = ( 1U << 0U ) /*!< Measurement data output is available */ + } BM1383AGLV_reset_rd_drdy_t; + + + + + +#ifndef BM1383AGLV_VECTOR_STRUCT_H +#define BM1383AGLV_VECTOR_STRUCT_H + typedef struct { + /* Output registers */ + int32_t rawPressure; /*!< Raw pressure */ + int16_t rawTemperature; /*!< Raw temperature */ + + float pressure; /*!< Pressure value */ + float temperature; /*!< Temperature value */ + + /* Mode control */ + BM1383AGLV_mode_control_ave_num_t ave_num; /*!< Average number of measurement */ + BM1383AGLV_mode_control_dren_t dren; /*!< DRDY pin Enable */ + BM1383AGLV_mode_control_mode_t mode; /*!< Set measurement mode */ + + /* Device status */ + BM1383AGLV_power_down_pwr_down_t pwr_down; /*!< Power mode */ + BM1383AGLV_reset_rstb_t rstb; /*!< Reset */ + BM1383AGLV_reset_rd_drdy_t rd_drdy; /*!< Status flag */ + + /* Device identification */ + uint8_t id1; /*!< Device ID1 */ + uint8_t id2; /*!< Device ID2 */ + } BM1383AGLV_data_t; +#endif + + + /** + * @brief INTERNAL CONSTANTS + */ + typedef enum { + BM1383AGLV_SUCCESS = 0U, /*!< I2C communication success */ + BM1383AGLV_FAILURE = 1U, /*!< I2C communication failure */ + I2C_SUCCESS = 0U /*!< I2C communication was fine */ + } BM1383AGLV_status_t; + + + + + /** Create an BM1383AGLV object connected to the specified I2C pins. + * + * @param sda I2C data pin + * @param scl I2C clock pin + * @param addr I2C slave address + * @param freq I2C frequency + */ + BM1383AGLV ( PinName sda, PinName scl, uint32_t addr, uint32_t freq ); + + /** Delete BM1383AGLV object. + */ + ~BM1383AGLV(); + + /** It gets the device identifications. + */ + BM1383AGLV_status_t BM1383AGLV_GetDeviceID ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myDeviceID ); + + /** It sets the power-down mode. + */ + BM1383AGLV_status_t BM1383AGLV_SetPowerDown ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t myPwrDown ); + + /** It gets the power-down mode. + */ + BM1383AGLV_status_t BM1383AGLV_GetPowerDown ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myPwrDown ); + + /** It sets the soft-reset. + */ + BM1383AGLV_status_t BM1383AGLV_SetSoftReset ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t myRSTB ); + + /** It gets the reset flag. + */ + BM1383AGLV_status_t BM1383AGLV_GetSoftResetFlag ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myRSTB ); + + /** It sets the mode control. + */ + BM1383AGLV_status_t BM1383AGLV_SetModeControl ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t myModeCont ); + + /** It gets the mode control. + */ + BM1383AGLV_status_t BM1383AGLV_GetModeControl ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myModeCont ); + + /** It gets the status flag. + */ + BM1383AGLV_status_t BM1383AGLV_GetStatus ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myRD_DRDY ); + + /** It gets the raw pressure. + */ + BM1383AGLV_status_t BM1383AGLV_GetRawPressure ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myRawP ); + + /** It gets the raw temperature. + */ + BM1383AGLV_status_t BM1383AGLV_GetRawTemperature ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myRawT ); + + /** It gets the pressure. + */ + BM1383AGLV_status_t BM1383AGLV_GetPressure ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myP ); + + /** It gets the temperature. + */ + BM1383AGLV_status_t BM1383AGLV_GetTemperature ( I2C_parameters_t myI2Cparameters, BM1383AGLV_data_t* myT ); + + + +private: + I2C _i2c; + uint32_t _BM1383AGLV_Addr; +}; + +#endif