sht30.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /**
  2. * @Author: 李建
  3. * @Date: 2025/4/22 13:48
  4. * Description: 温湿度传感器
  5. * Copyright: Copyright (©) 2025 永续绿建. All rights reserved.
  6. */
  7. #ifndef WIRE_CONTROLLER_SHT30_H
  8. #define WIRE_CONTROLLER_SHT30_H
  9. #define I2C_MASTER_SCL_IO GPIO_NUM_38 /*!< GPIO number used for I2C master clock */
  10. #define I2C_MASTER_SDA_IO GPIO_NUM_39 /*!< GPIO number used for I2C master data */
  11. #define I2C_MASTER_NUM 0 /*!< I2C master i2c port number, the number of i2c peripheral interfaces available will depend on the chip */
  12. #define I2C_MASTER_FREQ_HZ 400000 /*!< I2C master clock frequency */
  13. #define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */
  14. #define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master doesn't need buffer */
  15. #define SHT3X_TICKS_TO_WAIT (100 / portTICK_PERIOD_MS) // I2C读写的超时等待时间
  16. #define SHT3X_I2C_BUS I2C_NUM_1 // SHT30所在的I2C总线
  17. #define SHT3X_SLAVE_ADDRESS 0x44 // SHT30在I2C总线上的从机器件地址
  18. // SHT30命令列表
  19. typedef enum
  20. {
  21. /* 软件复位命令 */
  22. SOFT_RESET_CMD = 0x30A2,
  23. /*
  24. 单次测量模式
  25. 命名格式:Repeatability_CS_CMD
  26. CS:Clock stretching
  27. */
  28. HIGH_ENABLED_CMD = 0x2C06,
  29. MEDIUM_ENABLED_CMD = 0x2C0D,
  30. LOW_ENABLED_CMD = 0x2C10,
  31. HIGH_DISABLED_CMD = 0x2400,
  32. MEDIUM_DISABLED_CMD = 0x240B,
  33. LOW_DISABLED_CMD = 0x2416,
  34. /*
  35. 周期测量模式
  36. 命名格式:Repeatability_MPS_CMD
  37. MPS:measurement per second
  38. */
  39. HIGH_0_5_CMD = 0x2032,
  40. MEDIUM_0_5_CMD = 0x2024,
  41. LOW_0_5_CMD = 0x202F,
  42. HIGH_1_CMD = 0x2130,
  43. MEDIUM_1_CMD = 0x2126,
  44. LOW_1_CMD = 0x212D,
  45. HIGH_2_CMD = 0x2236,
  46. MEDIUM_2_CMD = 0x2220,
  47. LOW_2_CMD = 0x222B,
  48. HIGH_4_CMD = 0x2334,
  49. MEDIUM_4_CMD = 0x2322,
  50. LOW_4_CMD = 0x2329,
  51. HIGH_10_CMD = 0x2737,
  52. MEDIUM_10_CMD = 0x2721,
  53. LOW_10_CMD = 0x272A,
  54. /* 周期测量模式读取数据命令 */
  55. READOUT_FOR_PERIODIC_MODE = 0xE000,
  56. } SHT30_CMD;
  57. /**
  58. * 包含数据的结构体
  59. */
  60. typedef struct {
  61. float temperature;
  62. float humidity;
  63. }sht30_data_t;
  64. extern sht30_data_t sht30Data;
  65. void sht30_init();
  66. #endif //WIRE_CONTROLLER_SHT30_H