/* * Copyright (c) 2021 Leonard Pollak * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_DRIVERS_SENSOR_SHT4X_SHT4X_H_ #define ZEPHYR_DRIVERS_SENSOR_SHT4X_SHT4X_H_ #include #define SHT4X_CMD_READ_SERIAL 0x89 #define SHT4X_CMD_RESET 0x94 #define SHT4X_RESET_WAIT_MS 1 #define SHT4X_HEATER_POWER_IDX_MAX 3 #define SHT4X_HEATER_DURATION_IDX_MAX 2 /* * CRC parameters were taken from the * "Checksum Calculation" section of the datasheet. */ #define SHT4X_CRC_POLY 0x31 #define SHT4X_CRC_INIT 0xFF struct sht4x_config { struct i2c_dt_spec bus; uint8_t repeatability; }; struct sht4x_data { uint16_t t_sample; uint16_t rh_sample; uint8_t heater_power; uint8_t heater_duration; }; static const uint8_t measure_cmd[3] = { 0xE0, 0xF6, 0xFD }; static const uint16_t measure_wait_us[3] = { 1700, 4500, 8200 }; /* * heater specifics * * power: * High power heater pulse -> ~200 mW @3.3V * Medium power heater pulse -> ~110 mW @3.3V * Low power heater pulse -> ~20 mW @3.3V * * duration: * Long heater pulse -> 1.1s * Short heater pulse -> 0.11s */ static const int8_t heater_cmd[SHT4X_HEATER_POWER_IDX_MAX][SHT4X_HEATER_DURATION_IDX_MAX] = { { 0x39, 0x32 }, { 0x2F, 0x24 }, { 0x1E, 0x15 } }; static const uint32_t heater_wait_ms[SHT4X_HEATER_DURATION_IDX_MAX] = { 1000, 100 }; #endif /* ZEPHYR_DRIVERS_SENSOR_SHT4X_SHT4X_H_ */