/*************************************************************** * File name : SHT20.h * Description : SHT20 Humidity and Temperature Sensors * M C U : STM32L051XX * Compiler : Keil uVision V5.00a * Created by : * Copyright : Copyright(c) 2018 * Created data : 2018.03.16 * Modified data: 2018.03.16 * Vision : V1.0 *****************************************************************/ /*****************Function Declaration*************************/ /*----define to easier to use-----*/ #include #include "bsp.h" typedef enum { SHT20_IDLE, SHT20_INIT, SHT20_READ_TEMPR, SHT20_READ_HUMI, SHT20_READ_DATA }SHT20Status_m; typedef struct { SHT20Status_m Sht20Status; int Sht201mSDelayCnt; float Tempreture; float Humidity; uint8_t Cmd; }SHT20Var_t; #define SHT20_Write_Add 0x80 #define SHT20_Read_Add 0x81 #define SHT20_Measurement_RH_HM 0XE5 #define SHT20_Measurement_T_HM 0XE3 #define SHT20_Measurement_RH_NHM 0XF5 //非主机模式地址 #define SHT20_Measurement_T_NHM 0XF3 //非主机模式地址 #define SHT20_READ_REG 0XE7 #define SHT20_WRITE_REG 0XE6 #define SHT20_SOFT_RESET 0XFE //#define I2C_SOFTWARE #ifdef I2C_SOFTWARE #define SHT20_ADDRESS 0X80 #define SHT20_SDA_IN() I2C_SDA_IN() //设置引脚输入模式 #define SHT20_SDA_OUT() I2C_SDA_OUT() //设置引脚输出模式 #define SHT20_SDA_GET() I2C_SDA_GET() #define SHT20_I2C_SDA_LOW() I2C_SDA_LOW() #define SHT20_I2C_SCL_LOW() I2C_SCL_LOW() #define SHT20_I2C_SDA_HIGH() I2C_SDA_HIGH() #define SHT20_I2C_SCL_HIGH() I2C_SCL_HIGH() #define SHT20_I2C_LOW() {SHT20_I2C_SDA_LOW();SHT20_I2C_SCL_LOW();} /*================================================================ [ Name ]void IO_I2CInit(void) [Function]I2C初始化 空闲状态 [ Notes ] [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ void IO_I2CInit(void); /*================================================================ [ Name ]I2CStart [Function]开始 [ Notes ] [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ void I2CStart(void); /*================================================================ [ Name ]I2CStop [Function]结束 [ Notes ] [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ void I2CStop(void); /*================================================================ [ Name ]I2C_Write_Byte [Function]写一个字节 返回ACK或NACK [ Notes ]从高到低发 [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ uint8_t I2C_Write_Byte(uint8_t Write_Byte); /*================================================================ [ Name ]I2C_Read_Byte [Function]读一个字节,入库参数用于控制应答状态 ACK或NAC [ Notes ]从高到低 [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ uint8_t I2C_Read_Byte(uint8_t AckValue); /*================================================================ [ Name ]SHT20_SoftReset [Function]SHT20软件复位 [ Notes ]从高到低 [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ void SHT20_SoftReset(void); /*================================================================ [ Name ]SET_Resolution [Function]写寄存器 设置分辨率 [ Notes ]从高到低 [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ void SET_Resolution(void); /*================================================================ [ Name ]ReadSht20 [Function]非主机模式,读取温湿度值 [ Notes ]入口控制读取温度或湿度 [ Author ]LZH [ Data ]2016.06.22 ================================================================*/ float ReadSht20(char whatdo); float ReadSht20_Medium (void); #else #define SHT20_ADDRESS 0X40 #define Sht20_Reg_Write(DevAddr, RegData, rLen) I2C_Write(DevAddr, NULL, RegData, rLen) #define Sht20_Read(DevAddr, RegAddr, rData, rLen) I2C_Read(DevAddr, RegAddr, rData, rLen) #define Sht20_Delay(x) void SHT20_reset(void); #endif void SHT20_GetValue(float *Tempreture, float *Humidity); void SHT20Start(void); void SHT20LoopHandler(void); void SHT201mSRoutine(void);