105 lines
3.5 KiB
C
105 lines
3.5 KiB
C
/*
|
|
***************************************************************************************************************
|
|
***************************************************************************************************************
|
|
***************************************************************************************************************
|
|
|
|
File: BME280_STM32.h
|
|
Author: ControllersTech.com
|
|
Updated: Dec 14, 2021
|
|
|
|
***************************************************************************************************************
|
|
Copyright (C) 2017 ControllersTech.com
|
|
|
|
This is a free software under the GNU license, you can redistribute it and/or modify it under the terms
|
|
of the GNU General Public License version 3 as published by the Free Software Foundation.
|
|
This software library is shared with public for educational purposes, without WARRANTY and Author is not liable for any damages caused directly
|
|
or indirectly by this software, read more about this on the GNU General Public License.
|
|
|
|
***************************************************************************************************************
|
|
*/
|
|
|
|
|
|
#ifndef INC_BME280_STM32_H_
|
|
#define INC_BME280_STM32_H_
|
|
|
|
#include "stm32g0xx_hal.h"
|
|
|
|
/* Configuration for the BME280
|
|
|
|
* @osrs is the oversampling to improve the accuracy
|
|
* if osrs is set to OSRS_OFF, the respective measurement will be skipped
|
|
* It can be set to OSRS_1, OSRS_2, OSRS_4, etc. Check the header file
|
|
*
|
|
* @mode can be used to set the mode for the device
|
|
* MODE_SLEEP will put the device in sleep
|
|
* MODE_FORCED device goes back to sleep after one measurement. You need to use the BME280_WakeUP() function before every measurement
|
|
* MODE_NORMAL device performs measurement in the normal mode. Check datasheet page no 16
|
|
*
|
|
* @t_sb is the standby time. The time sensor waits before performing another measurement
|
|
* It is used along with the normal mode. Check datasheet page no 16 and page no 30
|
|
*
|
|
* @filter is the IIR filter coefficients
|
|
* IIR is used to avoid the short term fluctuations
|
|
* Check datasheet page no 18 and page no 30
|
|
*/
|
|
|
|
int BME280_Config (uint8_t osrs_t, uint8_t osrs_p, uint8_t osrs_h, uint8_t mode, uint8_t t_sb, uint8_t filter);
|
|
|
|
|
|
// Read the Trimming parameters saved in the NVM ROM of the device
|
|
void TrimRead(void);
|
|
|
|
/* To be used when doing the force measurement
|
|
* the Device need to be put in forced mode every time the measurement is needed
|
|
*/
|
|
void BME280_WakeUP(void);
|
|
|
|
/* measure the temp, pressure and humidity
|
|
* the values will be stored in the parameters passed to the function
|
|
*/
|
|
void BME280_Measure (void);
|
|
|
|
|
|
// Oversampling definitions
|
|
#define OSRS_OFF 0x00
|
|
#define OSRS_1 0x01
|
|
#define OSRS_2 0x02
|
|
#define OSRS_4 0x03
|
|
#define OSRS_8 0x04
|
|
#define OSRS_16 0x05
|
|
|
|
// MODE Definitions
|
|
#define MODE_SLEEP 0x00
|
|
#define MODE_FORCED 0x01
|
|
#define MODE_NORMAL 0x03
|
|
|
|
// Standby Time
|
|
#define T_SB_0p5 0x00
|
|
#define T_SB_62p5 0x01
|
|
#define T_SB_125 0x02
|
|
#define T_SB_250 0x03
|
|
#define T_SB_500 0x04
|
|
#define T_SB_1000 0x05
|
|
#define T_SB_10 0x06
|
|
#define T_SB_20 0x07
|
|
|
|
// IIR Filter Coefficients
|
|
#define IIR_OFF 0x00
|
|
#define IIR_2 0x01
|
|
#define IIR_4 0x02
|
|
#define IIR_8 0x03
|
|
#define IIR_16 0x04
|
|
|
|
|
|
// REGISTERS DEFINITIONS
|
|
#define ID_REG 0xD0
|
|
#define RESET_REG 0xE0
|
|
#define CTRL_HUM_REG 0xF2
|
|
#define STATUS_REG 0xF3
|
|
#define CTRL_MEAS_REG 0xF4
|
|
#define CONFIG_REG 0xF5
|
|
#define PRESS_MSB_REG 0xF7
|
|
|
|
|
|
#endif /* INC_BME280_STM32_H_ */
|