107 lines
3.3 KiB
C
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
|