157 lines
4.3 KiB
C++
157 lines
4.3 KiB
C++
|
|
/***************************************************************
|
||
|
|
* 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 <stdint.h>
|
||
|
|
#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);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|