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
diff -r b7e485d0c51d -r 49d8e4da0b7c BM1383AGLV.h
--- 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