1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * 4094332d3Sopenharmony_ci * HDF is dual licensed: you can use it either under the terms of 5094332d3Sopenharmony_ci * the GPL, or the BSD license, at your option. 6094332d3Sopenharmony_ci * See the LICENSE file in the root of this repository for complete details. 7094332d3Sopenharmony_ci */ 8094332d3Sopenharmony_ci 9094332d3Sopenharmony_ci#ifndef BAROMETER_BMP180_H 10094332d3Sopenharmony_ci#define BAROMETER_BMP180_H 11094332d3Sopenharmony_ci 12094332d3Sopenharmony_ci#include "sensor_barometer_driver.h" 13094332d3Sopenharmony_ci#include "sensor_config_parser.h" 14094332d3Sopenharmony_ci 15094332d3Sopenharmony_ci#define BMP180_REG_CHIP_ID 0xD0 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_ci// i2c address 18094332d3Sopenharmony_ci 19094332d3Sopenharmony_ci#define BMP180_ADDR 0x77 20094332d3Sopenharmony_ci 21094332d3Sopenharmony_ci// Define calibration register address 22094332d3Sopenharmony_ci 23094332d3Sopenharmony_ci#define BMP180_AC1_MSB_ADDR 0xAA 24094332d3Sopenharmony_ci#define BMP180_AC1_LSB_ADDR 0xAB 25094332d3Sopenharmony_ci#define BMP180_AC2_MSB_ADDR 0xAC 26094332d3Sopenharmony_ci#define BMP180_AC2_LSB_ADDR 0xAD 27094332d3Sopenharmony_ci#define BMP180_AC3_MSB_ADDR 0xAE 28094332d3Sopenharmony_ci#define BMP180_AC3_LSB_ADDR 0xAF 29094332d3Sopenharmony_ci#define BMP180_AC4_MSB_ADDR 0xB0 30094332d3Sopenharmony_ci#define BMP180_AC4_LSB_ADDR 0xB1 31094332d3Sopenharmony_ci#define BMP180_AC5_MSB_ADDR 0xB2 32094332d3Sopenharmony_ci#define BMP180_AC5_LSB_ADDR 0xB3 33094332d3Sopenharmony_ci#define BMP180_AC6_MSB_ADDR 0xB4 34094332d3Sopenharmony_ci#define BMP180_AC6_LSB_ADDR 0xB5 35094332d3Sopenharmony_ci#define BMP180_B1_MSB_ADDR 0xB6 36094332d3Sopenharmony_ci#define BMP180_B1_LSB_ADDR 0xB7 37094332d3Sopenharmony_ci#define BMP180_B2_MSB_ADDR 0xB8 38094332d3Sopenharmony_ci#define BMP180_B2_LSB_ADDR 0xB9 39094332d3Sopenharmony_ci#define BMP180_MB_MSB_ADDR 0xBA 40094332d3Sopenharmony_ci#define BMP180_MB_LSB_ADDR 0xBB 41094332d3Sopenharmony_ci#define BMP180_MC_MSB_ADDR 0xBC 42094332d3Sopenharmony_ci#define BMP180_MC_LSB_ADDR 0xBD 43094332d3Sopenharmony_ci#define BMP180_MD_MSB_ADDR 0xBE 44094332d3Sopenharmony_ci#define BMP180_MD_LSB_ADDR 0xBf 45094332d3Sopenharmony_ci 46094332d3Sopenharmony_ci// Control register 47094332d3Sopenharmony_ci 48094332d3Sopenharmony_ci#define BMP180_CONTROL_REG_ADDR 0xF4 49094332d3Sopenharmony_ci#define BMP180_COVERT_TEMP 0x2E 50094332d3Sopenharmony_ci#define BMP180_COVERT_PRES_0 0x34 51094332d3Sopenharmony_ci#define BMP180_COVERT_PRES_1 0x74 52094332d3Sopenharmony_ci#define BMP180_COVERT_PRES_2 0xB4 53094332d3Sopenharmony_ci#define BMP180_COVERT_PRES_3 0xF4 54094332d3Sopenharmony_ci 55094332d3Sopenharmony_ci#define BMP180_OUT_MSB_ADDR 0xF6 56094332d3Sopenharmony_ci#define BMP180_OUT_LSB_ADDR 0xF7 57094332d3Sopenharmony_ci#define BMP180_OUT_XLSB_ADDR 0xF8 58094332d3Sopenharmony_ci 59094332d3Sopenharmony_ci#define BMP180_STATUS_ADDR 0X20 60094332d3Sopenharmony_ci#define BMP180_STATUS_JUDGE 0X00 61094332d3Sopenharmony_ci 62094332d3Sopenharmony_ci#define SENSOR_DATA_WIDTH_16_BIT 16 63094332d3Sopenharmony_ci 64094332d3Sopenharmony_ci#define OSSETTING 1 65094332d3Sopenharmony_ci#define DELAY_0 5 66094332d3Sopenharmony_ci#define DELAY_1 8 67094332d3Sopenharmony_ci#define OSS_TIME_MS 26 68094332d3Sopenharmony_ci 69094332d3Sopenharmony_ci#define BMP180_CONSTANT_0 (-7357) 70094332d3Sopenharmony_ci#define BMP180_CONSTANT_1 1 71094332d3Sopenharmony_ci#define BMP180_CONSTANT_2 2 72094332d3Sopenharmony_ci#define BMP180_CONSTANT_3 4 73094332d3Sopenharmony_ci#define BMP180_CONSTANT_4 8 74094332d3Sopenharmony_ci#define BMP180_CONSTANT_5 11 75094332d3Sopenharmony_ci#define BMP180_CONSTANT_6 12 76094332d3Sopenharmony_ci#define BMP180_CONSTANT_7 13 77094332d3Sopenharmony_ci#define BMP180_CONSTANT_8 15 78094332d3Sopenharmony_ci#define BMP180_CONSTANT_9 16 79094332d3Sopenharmony_ci#define BMP180_CONSTANT_10 3038 80094332d3Sopenharmony_ci#define BMP180_CONSTANT_11 3791 81094332d3Sopenharmony_ci#define BMP180_CONSTANT_12 4000 82094332d3Sopenharmony_ci#define BMP180_CONSTANT_13 32768 83094332d3Sopenharmony_ci#define BMP180_CONSTANT_14 50000 84094332d3Sopenharmony_ci#define BMP180_CONSTANT_15 0x80000000 85094332d3Sopenharmony_ci 86094332d3Sopenharmony_ci 87094332d3Sopenharmony_ciint32_t DetectBarometerBmp180Chip(struct SensorCfgData *data); 88094332d3Sopenharmony_ci 89094332d3Sopenharmony_cistruct Bmp180DrvData { 90094332d3Sopenharmony_ci struct IDeviceIoService ioService; 91094332d3Sopenharmony_ci struct HdfDeviceObject *device; 92094332d3Sopenharmony_ci struct SensorCfgData *sensorCfg; 93094332d3Sopenharmony_ci}; 94094332d3Sopenharmony_ci 95094332d3Sopenharmony_ci#endif /* BAROMETER_BMP180_H */