/*
 * SHT40 温湿度传感器驱动
 * 功能：通过I2C1读取SHT40传感器的温湿度数据
 * 依赖：STM32 HAL库
 * 跨平台：仅适用于STM32F4系列，使用HAL库的I2C接口
 */

#ifndef __SHT40_H__
#define __SHT40_H__

#include <stdint.h>
#include "stm32f4xx_hal.h"

/* SHT40 I2C地址 */
#define SHT40_I2C_ADDR 0x44

/* SHT40命令 */
#define SHT40_CMD_MEASURE_HIGH_PRECISION 0xFD  // 高精度测量（高重复性）
#define SHT40_CMD_MEASURE_MED_PRECISION  0xF6  // 中精度测量（中重复性）
#define SHT40_CMD_MEASURE_LOW_PRECISION  0xE0  // 低精度测量（低重复性）
#define SHT40_CMD_RESET                  0x89  // 软复位
#define SHT40_CMD_READ_SERIAL            0x00  // 读取序列号
#define SHT40_CMD_HEATER_HIGH            0x94  // 加热器开启（高功率，200mW）
#define SHT40_CMD_HEATER_MED             0x91  // 加热器开启（中功率，110mW）
#define SHT40_CMD_HEATER_LOW             0x8D  // 加热器开启（低功率，20mW）

/* 函数声明 */
int sht40_init(void);
int sht40_read_temperature_humidity(float *temperature, float *humidity);
int sht40_read_temperature_humidity_with_precision(float *temperature, float *humidity, uint8_t precision);
int sht40_reset(void);
int sht40_read_serial(uint32_t *serial);
int sht40_heater_enable(uint8_t power_level);

#endif