#ifndef__SPL06_H#define__SPL06_H#include"stm32f10x.h"/**< \brief 寄存器地址 */#defineSP06_PSR_B20x00#defineSP06_PSR_B10x01#defineSP06_PSR_B00x02#defineSP06_TMP_B20x03#defineSP06_TMP_B10x04#defineSP06_TMP_B00x05#defineSP06_PSR_CFG0x06#defineSP06_TMP_CFG0x07#defineSP06_MEAS_CFG0x08#defineSP06_CFG_REG0x09#defineSP06_INT_STS0x0A#defineSP06_FIFO_STS0x0B#defineSP06_RESET0x0C#defineSP06_ID0x0D#defineSP06_COEF0x10#defineSP06_COEF_SRCE0x28/**< \brief 气压测量速率(sample/sec),Background 模式使用 */#definePM_RATE_1(0<<4)/* 1 measurements pr. sec. */#definePM_RATE_2(1<<4)/* 2 measurements pr. sec. */#definePM_RATE_4(2<<4)/* 4 measurements pr. sec. */#definePM_RATE_8(3<<4)/* 8 measurements pr. sec. */#definePM_RATE_16(4<<4)/* 16 measurements pr. sec. */#definePM_RATE_32(5<<4)/* 32 measurements pr. sec. */#definePM_RATE_64(6<<4)/* 64 measurements pr. sec. */#definePM_RATE_128(7<<4)/* 128 measurements pr. sec. *//**< \brief 气压重采样速率(times),Background 模式使用 */#definePM_PRC_10/* Sigle kP=524288, 3.6ms */#definePM_PRC_21/* 2 times kP=1572864, 5.2ms */#definePM_PRC_42/* 4 times kP=3670016, 8.4ms */#definePM_PRC_83/* 8 times kP=7864320, 14.8ms */#definePM_PRC_164/* 16 times kP=253952, 27.6ms */#definePM_PRC_325/* 32 times kP=516096, 53.2ms */#definePM_PRC_646/* 64 times kP=1040384, 104.4ms */#definePM_PRC_1287/* 128 times kP=2088960, 206.8ms *//**< \brief 温度测量速率(sample/sec),Background 模式使用 */#defineTMP_RATE_1(0<<4)/* 1 measurements pr. sec. */#defineTMP_RATE_2(1<<4)/* 2 measurements pr. sec. */#defineTMP_RATE_4(2<<4)/* 4 measurements pr. sec. */#defineTMP_RATE_8(3<<4)/* 8 measurements pr. sec. */#defineTMP_RATE_16(4<<4)/* 16 measurements pr. sec. */#defineTMP_RATE_32(5<<4)/* 32 measurements pr. sec. */#defineTMP_RATE_64(6<<4)/* 64 measurements pr. sec. */#defineTMP_RATE_128(7<<4)/* 128 measurements pr. sec. *//**< \brief 温度重采样速率(times),Background 模式使用 */#defineTMP_PRC_10/* Sigle */#defineTMP_PRC_21/* 2 times */#defineTMP_PRC_42/* 4 times */#defineTMP_PRC_83/* 8 times */#defineTMP_PRC_164/* 16 times */#defineTMP_PRC_325/* 32 times */#defineTMP_PRC_646/* 64 times */#defineTMP_PRC_1287/* 128 times *//**< \brief SPL06_MEAS_CFG */#defineMEAS_COEF_RDY0x80#defineMEAS_SENSOR_RDY0x40/* 传感器初始化完成 */#defineMEAS_TMP_RDY0x20/* 有新的温度数据 */#defineMEAS_PRS_RDY0x10/* 有新的气压数据 */#defineMEAS_CTRL_Standby0x00/* 空闲模式 */#defineMEAS_CTRL_PressMeasure0x01/* 单次气压测量 */#defineMEAS_CTRL_TempMeasure0x02/* 单次温度测量 */#defineMEAS_CTRL_ContinuousPress0x05/* 连续气压测量 */#defineMEAS_CTRL_ContinuousTemp0x06/* 连续温度测量 */#defineMEAS_CTRL_ContinuousPressTemp0x07/* 连续气压温度测量 *//**< \brief FIFO_STS */#defineSPL06_FIFO_FULL0x02#defineSPL06_FIFO_EMPTY0x01/**< \brief INT_STS */#defineSPL06_INT_FIFO_FULL0x04#defineSPL06_INT_TMP0x02#defineSPL06_INT_PRS0x01/**< \brief CFG_REG */#defineSPL06_CFG_T_SHIFT0x08/* oversampling times>8时必须使用 */#defineSPL06_CFG_P_SHIFT0x04/* oversampling times>8时必须使用 */typedefint(*pfn_i2c_read)(uint8_t slave_addr,uint8_t reg_addr,uint32_t nbytes,uint8_t*p_data);typedefint(*pfn_i2c_write)(uint8_t slave_addr,uint8_t reg_addr,uint32_t nbytes,uint8_t*p_data);#defineSPL06_ADDR0x76typedefstruct{int32_t Praw;/* 气压原始值 */int32_t Traw;/* 温度原始值 */float Pcomp;/* 计算后的气压值 */float Tcomp;/* 计算后的温度值 */}spl06_result_t;intspl06_init(pfn_i2c_read read, pfn_i2c_write write);voidspl06_get_raw_data(spl06_result_t*p_res);voidspl06_get_result(spl06_result_t*p_res);#endif