WLE5CC_NODE_STS/STS/RC/sht3x.h

102 lines
2.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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__