1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #ifndef __SHT2x_H__
- #define __SHT2x_H__
- #include "gd32f30x.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- ////////////////////////////IO模拟IIC/////////////////////////////////
- //IO方向设置
- #define GPIOB_IIC ((GPIO_TypeDef *) GPIOB_BASE)
- #define sda_IN() {gpio_init(GPIOB,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ, GPIO_PIN_11);}
- #define sda_OUT() {gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ, GPIO_PIN_11);}
- //IO操作函数
- #define iiC_SCL_1 gpio_bit_set(GPIOB,GPIO_PIN_10) //SCL
- #define iiC_SCL_0 gpio_bit_reset(GPIOB,GPIO_PIN_10)
- #define iiC_SDA_1 gpio_bit_set(GPIOB,GPIO_PIN_11)
- #define iiC_SDA_0 gpio_bit_reset(GPIOB,GPIO_PIN_11)//SDA
- #define READ_SDA gpio_input_bit_get(GPIOB, GPIO_PIN_11) //输入SDA
- void Z_I2C_Init(void);
- //IIC所有操作函数
- void I2C_init(void); //初始化IIC的IO口
- void iic_Start(void); //发送IIC开始信号
- void iic_Stop(void); //发送IIC停止信号
- void IIC_Send_Byte(u8 txd); //IIC发送一个字节
- u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节
- u8 IIC_Wait_Ack(void); //IIC等待ACK信号
- void iic_Ack(void); //IIC发送ACK信号
- void IIC_NAck(void); //IIC不发送ACK信号
- void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
- u8 IIC_Read_One_Byte(u8 daddr,u8 addr);
- ////////////////////////////IO模拟IIC/////////////////////////////////
- #define I2C_ADR_W 0x80 //SHT2X IIC 读地址
- #define I2C_ADR_R 0x81 //SHT2X IIC 写地址
-
- //#define I2C_ADR_W 0x70 //AHT2X IIC 读地址
- //#define I2C_ADR_R 0x71 //AHT2X IIC 写地址
- typedef enum {
- TRIG_TEMP_MEASUREMENT_HM = 0xE3, // 触发 温度 测量 ,保持主机 命令
- TRIG_HUMI_MEASUREMENT_HM = 0xE5, // 触发 湿度 测量 ,保持主机 命令
- TRIG_TEMP_MEASUREMENT_POLL = 0xF3, // 触发 温度 测量 ,非保持主机 命令
- TRIG_HUMI_MEASUREMENT_POLL = 0xF5, // 触发 湿度 测量 ,非保持主机 命令
- USER_REG_W = 0xE6, // 写寄存器命令
- USER_REG_R = 0xE7, // 读寄存器命令
- SOFT_RESET = 0xFE // 软件复位命令
- } SHT2xCommand;
- typedef enum {
- SHT2x_RES_12_14BIT = 0x00, //RH=12bit, T=14bit 这是默认的值 我们不用修改
- SHT2x_RES_8_12BIT = 0x01, //RH= 8bit, T=12bit
- SHT2x_RES_10_13BIT = 0x80, //RH=10bit, T=13bit
- SHT2x_RES_11_11BIT = 0x81, //RH=11bit, T=11bit
- SHT2x_RES_MASK = 0x81 //Mask for res. bits (7,0) in user reg.
- } SHT2xResolution;
- typedef enum {
- SHT2x_HEATER_ON = 0x04, //heater on
- SHT2x_HEATER_OFF = 0x00, //heater off
- SHT2x_HEATER_MASK = 0x04 //Mask for Heater bit(2) in user reg.
- } SHT2xHeater;
- typedef struct{
- float TEMP_POLL;
- float HUMI_POLL;
- } SHT2x_data;
- extern SHT2x_data SHT20;
- u8 SHT2x_Init(void);
- u8 SHT2x_SoftReset(void); //SHT20软件复位
- float SHT2x_GetTempPoll(void);//获取SHT20 温度
- float SHT2x_GetHumiPoll(void);//获取SHT20 湿度
- float SHT2x_GetTempInit(void);
- #ifdef __cplusplus
- }
- #endif
- #endif
|