i2c_sht3x.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. #ifndef __I2C_SHT3X_H__
  2. #define __I2C_SHT3X_H__
  3. #include "driver/i2c.h"
  4. #include "esp_log.h"
  5. #define SHT3X_TICKS_TO_WAIT (100 / portTICK_RATE_MS) // I2C读写的超时等待时间
  6. #define SHT3X_I2C_BUS I2C_NUM_0 // SHT30所在的I2C总线
  7. #define SHT3X_SLAVE_ADDRESS 0x44 // SHT30在I2C总线上的从机器件地址
  8. // SHT30命令列表
  9. typedef enum
  10. {
  11. /* 软件复位命令 */
  12. SOFT_RESET_CMD = 0x30A2,
  13. /*
  14. 单次测量模式
  15. 命名格式:Repeatability_CS_CMD
  16. CS:Clock stretching
  17. */
  18. HIGH_ENABLED_CMD = 0x2C06,
  19. MEDIUM_ENABLED_CMD = 0x2C0D,
  20. LOW_ENABLED_CMD = 0x2C10,
  21. HIGH_DISABLED_CMD = 0x2400,
  22. MEDIUM_DISABLED_CMD = 0x240B,
  23. LOW_DISABLED_CMD = 0x2416,
  24. /*
  25. 周期测量模式
  26. 命名格式:Repeatability_MPS_CMD
  27. MPS:measurement per second
  28. */
  29. HIGH_0_5_CMD = 0x2032,
  30. MEDIUM_0_5_CMD = 0x2024,
  31. LOW_0_5_CMD = 0x202F,
  32. HIGH_1_CMD = 0x2130,
  33. MEDIUM_1_CMD = 0x2126,
  34. LOW_1_CMD = 0x212D,
  35. HIGH_2_CMD = 0x2236,
  36. MEDIUM_2_CMD = 0x2220,
  37. LOW_2_CMD = 0x222B,
  38. HIGH_4_CMD = 0x2334,
  39. MEDIUM_4_CMD = 0x2322,
  40. LOW_4_CMD = 0x2329,
  41. HIGH_10_CMD = 0x2737,
  42. MEDIUM_10_CMD = 0x2721,
  43. LOW_10_CMD = 0x272A,
  44. /* 周期测量模式读取数据命令 */
  45. READOUT_FOR_PERIODIC_MODE = 0xE000,
  46. } SHT30_CMD;
  47. /**
  48. * @brief 复位SHT3X
  49. *
  50. * @param none
  51. *
  52. * @retval none
  53. */
  54. void sht3x_reset(void);
  55. /**
  56. * @brief 初始化SHT3X
  57. *
  58. * @param none
  59. *
  60. * @retval 成功返回HAL_OK(ESP_OK)
  61. *
  62. * @note 周期测量模式
  63. */
  64. esp_err_t sht3x_init(void);
  65. /**
  66. * @brief 从SHT3X读取一次数据
  67. *
  68. * @param dat —— 存储读取数据的地址(6个字节数组)
  69. *
  70. * @retval 成功 —— 返回HAL_OK(ESP_OK)
  71. */
  72. uint8_t sht3x_read_dat(uint8_t* dat);
  73. /**
  74. * @brief 将SHT3X接收的6个字节数据进行CRC校验,并转换为温度值和湿度值
  75. *
  76. * @param dat —— 存储接收数据的地址(6个字节数组)
  77. *
  78. * @retval 校验成功 —— 返回0
  79. * 校验失败 —— 返回1,并设置温度值和湿度值为0
  80. */
  81. uint8_t sht3x_dat2float(uint8_t* const dat, float* temperature, float* humidity);
  82. esp_err_t sht3x_read_th_raw_dat(uint8_t* dat);
  83. #endif