inital commit working
This commit is contained in:
68
BMP280.h
Normal file
68
BMP280.h
Normal file
@ -0,0 +1,68 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
|
||||
#include "softspim.h"
|
||||
|
||||
#define PRECOMP_COMPENSATION
|
||||
|
||||
class BMP280
|
||||
{
|
||||
private:
|
||||
|
||||
static constexpr uint8_t TEMP_REG_LOW = 0xFB;
|
||||
static constexpr uint8_t TEMP_REG_HIGH = 0xFA;
|
||||
static constexpr uint8_t PRESS_REG_LOW = 0xF8;
|
||||
static constexpr uint8_t PRESS_REG_HIGH = 0xF7;
|
||||
static constexpr uint8_t CONFIG_REG = 0xF5;
|
||||
static constexpr uint8_t CTRL_REG = 0xF4;
|
||||
static constexpr uint8_t ID_REG = 0xD0;
|
||||
|
||||
static constexpr uint8_t DIG_T1 = 0x88;
|
||||
static constexpr uint8_t DIG_T2 = 0x8A;
|
||||
static constexpr uint8_t DIG_T3 = 0x8C;
|
||||
static constexpr uint8_t DIG_P1 = 0x8E;
|
||||
static constexpr uint8_t DIG_P2 = 0x90;
|
||||
static constexpr uint8_t DIG_P3 = 0x92;
|
||||
static constexpr uint8_t DIG_P4 = 0x94;
|
||||
static constexpr uint8_t DIG_P5 = 0x96;
|
||||
static constexpr uint8_t DIG_P6 = 0x98;
|
||||
static constexpr uint8_t DIG_P7 = 0x9A;
|
||||
static constexpr uint8_t DIG_P8 = 0x9C;
|
||||
static constexpr uint8_t DIG_P9 = 0x9E;
|
||||
|
||||
static constexpr int32_t t_fine = 102400;
|
||||
|
||||
#ifdef PRECOMP_COMPENSATION
|
||||
static constexpr uint16_t digP1value = 42;
|
||||
static constexpr int16_t digP2value = 48;
|
||||
static constexpr int16_t digP3value = 49;
|
||||
static constexpr int16_t digP4value = 30;
|
||||
static constexpr int16_t digP5value = -32;
|
||||
static constexpr int16_t digP6value = 58;
|
||||
static constexpr int16_t digP7value = 7;
|
||||
static constexpr int16_t digP8value = 3;
|
||||
static constexpr int16_t digP9value = 58;
|
||||
static constexpr int32_t var1StepA = ((((int32_t)t_fine)>>1) - (int32_t)64000);
|
||||
static constexpr int32_t var1StepB = ((((32768+((((digP3value *
|
||||
(((var1StepA>>2) * (var1StepA>>2)) >> 13 )) >> 3) + ((((int32_t)digP2value) * var1StepA)>>1))>>18)))*
|
||||
((int32_t)digP1value))>>15);
|
||||
static constexpr int32_t var2StepA = ((((var1StepA>>2) * (var1StepA>>2)) >> 11 ) * ((int32_t)digP6value)) + ((var1StepA*((int32_t)digP5value))<<1);
|
||||
static constexpr int16_t var2StepB = ((var2StepA>>2)+(((int32_t)digP4value)<<16))>>12;
|
||||
static constexpr int32_t var3 = 52;
|
||||
#endif
|
||||
|
||||
volatile uint8_t *_port;
|
||||
const uint8_t _pin;
|
||||
|
||||
SpiMaster *_spi;
|
||||
|
||||
void write(const uint8_t address, const uint8_t data);
|
||||
uint16_t read16b(const uint8_t address);
|
||||
uint8_t read8b(const uint8_t address);
|
||||
uint32_t compensatePressure(const int32_t adc_P);
|
||||
|
||||
public:
|
||||
|
||||
BMP280(SpiMaster* spi, volatile uint8_t *port, const uint8_t pin);
|
||||
uint16_t getPressure();
|
||||
};
|
Reference in New Issue
Block a user