OV-Watch/Software/OV_Watch_V2.3.1/BSP/SPL06_001/SPL06_001.h

107 lines
3.3 KiB
C

#ifndef _SPL06_001_H_
#define _SPL06_001_H_
#include "iic_hal.h"
//your own settings
//see the table in the datasheet
#define KT 524288.0
#define KP 1572864.0
#define SPL_CHIP_ID 0X10
#define SPL_CHIP_ADDRESS 0x76
//register map
//pressure data
#define SPL_PRS_B2 0x00
#define SPL_PRS_B1 0x01
#define SPL_PRS_B0 0x02
//temperature data
#define SPL_TMP_B2 0x03
#define SPL_TMP_B1 0x04
#define SPL_TMP_B0 0x05
//Config
#define SPL_PRS_CFG 0x06
#define SPL_TMP_CFG 0x07
#define SPL_MEAS_CFG 0x08
#define SPL_CFG_REG 0x09
#define SPL_INT_STS 0x0A
#define SPL_FIFO_STS 0x0B
#define SPL_RESET_REG 0x0C
//ID
#define SPL_ID_REG 0x0D
//Calibration Coefficients
#define COEF_C0 0x10
#define COEF_C0_C1 0x11
#define COEF_C1 0x12
#define COEF_C00_H 0x13
#define COEF_C00_L 0x14
#define COEF_C00_C10 0x15
#define COEF_C10_M 0x16
#define COEF_C10_L 0x17
#define COEF_C01_H 0x18
#define COEF_C01_L 0x19
#define COEF_C11_H 0x1A
#define COEF_C11_L 0x1B
#define COEF_C20_H 0x1C
#define COEF_C20_L 0x1D
#define COEF_C21_H 0x1E
#define COEF_C21_L 0x1F
#define COEF_C30_H 0x20
#define COEF_C30_L 0x21
//pressure config(6:4)
#define PM_RATE1 0x00 //1 measurements pr sec
#define PM_RATE2 0x01 //2 measurements pr sec
#define PM_RATE3 0x02 //4 measurements pr sec
#define PM_RATE4 0x03 //8 measurements pr sec
#define PM_RATE5 0x04 //16 measurements pr sec
#define PM_RATE6 0x05 //32 measurements pr sec
#define PM_RATE7 0x06 //64 measurements pr sec
#define PM_RATE8 0x07 //128 measurements pr sec
//pressure config(3:0)
//oversampling rate
#define PM_PRC1 0x00 //single
#define PM_PRC2 0x01 //2 times (low power)
#define PM_PRC3 0x02 //4 times
#define PM_PRC4 0x03 //8 times (standard)
#define PM_PRC5 0x04 //16 times (need a bit shift in CFG_CFG)
#define PM_PRC6 0x05 //32 times (need a bit shift in CFG_CFG)
#define PM_PRC7 0x06 //64 times (high precision)(need a bit shift in CFG_CFG)
#define PM_PRC8 0x07 //128 times (need a bit shift in CFG_CFG)
//temperature config
//extrenal or internal(7)
#define TMP_EXT 0x01
#define TMP_INT 0x00
//Temperature measurement rate(6:4)
#define TMP_RATE1 0x00 //1 measurements pr sec
#define TMP_RATE2 0x01 //2 measurements pr sec
#define TMP_RATE3 0x02 //4 measurements pr sec
#define TMP_RATE4 0x03 //8 measurements pr sec
#define TMP_RATE5 0x04 //16 measurements pr sec
#define TMP_RATE6 0x05 //32 measurements pr sec
#define TMP_RATE7 0x06 //64 measurements pr sec
#define TMP_RATE8 0x07 //128 measurements pr sec
//Temperature oversampling(3:0)
#define TMP_PRC1 0x00 //single
#define TMP_PRC2 0x01 //2 times
#define TMP_PRC3 0x02 //4 times
#define TMP_PRC4 0x03 //8 times
#define TMP_PRC5 0x04 //16 times
#define TMP_PRC6 0x05 //32 times
#define TMP_PRC7 0x06 //64 times
#define TMP_PRC8 0x07 //128 times
uint8_t SPL_ReadOneReg(uint8_t addr);
void SPL_WriteOneReg(uint8_t addr, uint8_t dat);
uint8_t SPL_init(void);
void SPL_Sleep(void);
void SPL_Wakeup(void);
uint8_t SPL_GetID(void);
float Altitude_Calculate(void);
float Pressure_Calculate(void);
float Temperature_Calculate(void);
#endif