102 lines
2.4 KiB
C
102 lines
2.4 KiB
C
#ifndef __SHT3X_H__
|
||
#define __SHT3X_H__
|
||
|
||
#ifdef __cplusplus
|
||
extern "C"{
|
||
#endif
|
||
#include "main.h"
|
||
|
||
#define SHT3X_USING_HARDWARE_I2C 1 //使用硬件i2c
|
||
|
||
#if SHT3X_USING_HARDWARE_I2C
|
||
#include "i2c.h"
|
||
//#define I2Cx hi2c2
|
||
#endif
|
||
|
||
#define SHT3X_ADDRESS (0x44 << 1) //ADDR-->GND(0x44<<1)/ADDR-->VCC(0x45<<1)
|
||
//读取的温湿度数据
|
||
typedef struct SHT3x_TemperatureHumidity
|
||
{
|
||
float SHT3x_Temperature;
|
||
float SHT3x_Humidity;
|
||
} SHT3x_ReadData;
|
||
extern SHT3x_ReadData SHT3x_Data;
|
||
|
||
//SHT3x相关指令
|
||
typedef enum
|
||
{
|
||
/**
|
||
* 软件复位命令
|
||
**/
|
||
SOFT_RESET = 0x30A2,
|
||
/**
|
||
* 单发模式下的测量命令
|
||
* 重复性高、中、低(Repeatability)
|
||
* 时钟拉伸使能/失能(Clock stretching)(注:开启时钟拉伸后,SCL总线将一直为低电平,需重新上电)
|
||
**/
|
||
SINGLE_HIGH_ENABLE = 0x2C06,
|
||
SINGLE_MEDIUM_ENABLE = 0x2C0D,
|
||
SINGLE_LOW_ENABLE = 0x2C10,
|
||
SINGLE_HIGH_DISABLE = 0x2400,
|
||
SINGLE_MEDIUM_DISABLE = 0x240B,
|
||
SINGLE_LOW_DISABLE = 0x2416,
|
||
/**
|
||
* 周期数据采集模式的测量命令
|
||
* 重复性高、中、低(Repeatability)
|
||
* 数据采集频率0.5/1/2/4/10(measurements per second)
|
||
**/
|
||
PERIODIC_HIGH_0_5 = 0x2032,
|
||
PERIODIC_MEDIUM_0_5 = 0x2024,
|
||
PERIODIC_LOW_0_5 = 0x202F,
|
||
PERIODIC_HIGH_1 = 0x2130,
|
||
PERIODIC_MEDIUM_1 = 0x2126,
|
||
PERIODIC_LOW_1 = 0x212D,
|
||
PERIODIC_HIGH_2 = 0x2236,
|
||
PERIODIC_MEDIUM_2 = 0x2220,
|
||
PERIODIC_LOW_2 = 0x222B,
|
||
PERIODIC_HIGH_4 = 0x2334,
|
||
PERIODIC_MEDIUM_4 = 0x2322,
|
||
PERIODIC_LOW_4 = 0x2329,
|
||
PERIODIC_HIGH_10 = 0x2737,
|
||
PERIODIC_MEDIUM_10 = 0x2721,
|
||
PERIODIC_LOW_10 = 0x272A,
|
||
/**
|
||
* 周期模式测量结果的读出
|
||
**/
|
||
FETCH_DATA_PERIODIC = 0xE000,
|
||
/**
|
||
* 中断命令/停止周期数据采集模式
|
||
**/
|
||
BREAK_ACQUISITION_DATA = 0x3093,
|
||
/**
|
||
* 打开和关闭加热器
|
||
**/
|
||
HEATER_ENABLE = 0x306D,
|
||
HEATER_DISABLE = 0x3066,
|
||
/**
|
||
* 读取状态寄存器
|
||
**/
|
||
READ_STATUS_REGISTER = 0xF32D,
|
||
/**
|
||
* 清除状态寄存器
|
||
**/
|
||
CLEAR_STATUS_REGISTER = 0x3041,
|
||
/**
|
||
* ART加速响应时间命令
|
||
**/
|
||
ACCELERATED_RESPONSE_TIME = 0x2B32
|
||
} SHT3x_CMD;
|
||
|
||
#define SHT3x_Delay_ms(__xms) HAL_Delay(__xms)
|
||
|
||
uint8_t SHT3x_Soft_Reset(void);
|
||
uint8_t SHT3x_Init_Measurement_Mode(SHT3x_CMD Mode);
|
||
uint8_t SHT3x_Get_TemperatureHumidity(float *temperature, float *humidity);
|
||
uint8_t CRC8_Calculation(uint8_t *const message, uint8_t initial_value);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
|
||
#endif //__SHT3X_H__
|