SHT2X.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef __SHT2x_H__
  2. #define __SHT2x_H__
  3. #include "gd32f30x.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. ////////////////////////////IO模拟IIC/////////////////////////////////
  8. //IO方向设置
  9. #define GPIOB_IIC ((GPIO_TypeDef *) GPIOB_BASE)
  10. #define sda_IN() {gpio_init(GPIOB,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ, GPIO_PIN_11);}
  11. #define sda_OUT() {gpio_init(GPIOB,GPIO_MODE_OUT_PP,GPIO_OSPEED_50MHZ, GPIO_PIN_11);}
  12. //IO操作函数
  13. #define iiC_SCL_1 gpio_bit_set(GPIOB,GPIO_PIN_10) //SCL
  14. #define iiC_SCL_0 gpio_bit_reset(GPIOB,GPIO_PIN_10)
  15. #define iiC_SDA_1 gpio_bit_set(GPIOB,GPIO_PIN_11)
  16. #define iiC_SDA_0 gpio_bit_reset(GPIOB,GPIO_PIN_11)//SDA
  17. #define READ_SDA gpio_input_bit_get(GPIOB, GPIO_PIN_11) //输入SDA
  18. void Z_I2C_Init(void);
  19. //IIC所有操作函数
  20. void I2C_init(void); //初始化IIC的IO口
  21. void iic_Start(void); //发送IIC开始信号
  22. void iic_Stop(void); //发送IIC停止信号
  23. void IIC_Send_Byte(u8 txd); //IIC发送一个字节
  24. u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节
  25. u8 IIC_Wait_Ack(void); //IIC等待ACK信号
  26. void iic_Ack(void); //IIC发送ACK信号
  27. void IIC_NAck(void); //IIC不发送ACK信号
  28. void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
  29. u8 IIC_Read_One_Byte(u8 daddr,u8 addr);
  30. ////////////////////////////IO模拟IIC/////////////////////////////////
  31. #define I2C_ADR_W 0x80 //SHT2X IIC 读地址
  32. #define I2C_ADR_R 0x81 //SHT2X IIC 写地址
  33. //#define I2C_ADR_W 0x70 //AHT2X IIC 读地址
  34. //#define I2C_ADR_R 0x71 //AHT2X IIC 写地址
  35. typedef enum {
  36. TRIG_TEMP_MEASUREMENT_HM = 0xE3, // 触发 温度 测量 ,保持主机 命令
  37. TRIG_HUMI_MEASUREMENT_HM = 0xE5, // 触发 湿度 测量 ,保持主机 命令
  38. TRIG_TEMP_MEASUREMENT_POLL = 0xF3, // 触发 温度 测量 ,非保持主机 命令
  39. TRIG_HUMI_MEASUREMENT_POLL = 0xF5, // 触发 湿度 测量 ,非保持主机 命令
  40. USER_REG_W = 0xE6, // 写寄存器命令
  41. USER_REG_R = 0xE7, // 读寄存器命令
  42. SOFT_RESET = 0xFE // 软件复位命令
  43. } SHT2xCommand;
  44. typedef enum {
  45. SHT2x_RES_12_14BIT = 0x00, //RH=12bit, T=14bit 这是默认的值 我们不用修改
  46. SHT2x_RES_8_12BIT = 0x01, //RH= 8bit, T=12bit
  47. SHT2x_RES_10_13BIT = 0x80, //RH=10bit, T=13bit
  48. SHT2x_RES_11_11BIT = 0x81, //RH=11bit, T=11bit
  49. SHT2x_RES_MASK = 0x81 //Mask for res. bits (7,0) in user reg.
  50. } SHT2xResolution;
  51. typedef enum {
  52. SHT2x_HEATER_ON = 0x04, //heater on
  53. SHT2x_HEATER_OFF = 0x00, //heater off
  54. SHT2x_HEATER_MASK = 0x04 //Mask for Heater bit(2) in user reg.
  55. } SHT2xHeater;
  56. typedef struct{
  57. float TEMP_POLL;
  58. float HUMI_POLL;
  59. } SHT2x_data;
  60. extern SHT2x_data SHT20;
  61. u8 SHT2x_Init(void);
  62. u8 SHT2x_SoftReset(void); //SHT20软件复位
  63. float SHT2x_GetTempPoll(void);//获取SHT20 温度
  64. float SHT2x_GetHumiPoll(void);//获取SHT20 湿度
  65. float SHT2x_GetTempInit(void);
  66. #ifdef __cplusplus
  67. }
  68. #endif
  69. #endif