SI7021 - Relative Humidity and Temperature SensorBSP > Thunderboard Sense BSP
Detailed Description
Driver for the Silicon Labs Si7021 I2C Humidity and Temperature Sensor.
Functions | |
uint32_t | SI7021_cmdRead (uint8_t *cmd, size_t cmdLen, uint8_t *result, size_t resultLen) |
Sends a command and reads the result byte(s) over the I2C bus. | |
uint32_t | SI7021_cmdWrite (uint8_t *cmd, size_t cmdLen, uint8_t *data, size_t dataLen) |
Sends a command and data to the chip over the I2C bus. | |
void | SI7021_deInit (void) |
De-initializes the Si7021 chip. Disables the sensor power domain, this also disables other sensors. | |
uint32_t | SI7021_getFwRev (uint8_t *fwRev) |
Reads the firmware revision of the Si7021 chip. | |
uint32_t | SI7021_init (void) |
Initializes the Si7021 chip. | |
uint32_t | SI7021_measure (uint32_t *rhData, int32_t *tData) |
Performs relative humidity and temperature measurements. | |
Error Codes | |
#define | SI7021_OK 0 |
#define | SI7021_ERROR_I2C_TRANSFER_NACK 0x0001 |
#define | SI7021_ERROR_I2C_TRANSFER_FAILED 0x0002 |
#define | SI7021_ERROR_INVALID_DEVICE_ID 0x0003 |
#define | SI7021_ERROR_TIMEOUT 0x0004 |
Si7021 Commands | |
#define | SI7021_CMD_MEASURE_RH 0xE5 |
#define | SI7021_CMD_MEASURE_RH_NO_HOLD 0xF5 |
#define | SI7021_CMD_MEASURE_TEMP 0xE3 |
#define | SI7021_CMD_MEASURE_TEMP_NO_HOLD 0xF3 |
#define | SI7021_CMD_READ_TEMP 0xE0 |
#define | SI7021_CMD_RESET 0xFE |
#define | SI7021_CMD_WRITE_USER_REG1 0xE6 |
#define | SI7021_CMD_READ_USER_REG1 0xE7 |
#define | SI7021_CMD_WRITE_HEATER_CTRL 0x51 |
#define | SI7021_CMD_READ_HEATER_CTRL 0x11 |
#define | SI7021_CMD_READ_ID_BYTE1 { 0xFA, 0x0F } |
#define | SI7021_CMD_READ_ID_BYTE2 { 0xFC, 0xC9 } |
#define | SI7021_CMD_READ_FW_REV { 0x84, 0xB8 } |
Macro Definition Documentation
#define SI7021_CMD_MEASURE_RH 0xE5 |
Measure Relative Humidity, Hold Master Mode
Definition at line 47
of file si7021.h
.
#define SI7021_CMD_MEASURE_RH_NO_HOLD 0xF5 |
Measure Relative Humidity, No Hold Master Mode
Definition at line 48
of file si7021.h
.
Referenced by SI7021_measure().
#define SI7021_CMD_MEASURE_TEMP 0xE3 |
Measure Temperature, Hold Master Mode
Definition at line 49
of file si7021.h
.
#define SI7021_CMD_MEASURE_TEMP_NO_HOLD 0xF3 |
Measure Temperature, No Hold Master Mode
Definition at line 50
of file si7021.h
.
#define SI7021_CMD_READ_FW_REV { 0x84, 0xB8 } |
#define SI7021_CMD_READ_HEATER_CTRL 0x11 |
Read Heater Control Register
Definition at line 56
of file si7021.h
.
#define SI7021_CMD_READ_ID_BYTE1 { 0xFA, 0x0F } |
Read Electronic ID 1st Byte
Definition at line 57
of file si7021.h
.
#define SI7021_CMD_READ_ID_BYTE2 { 0xFC, 0xC9 } |
#define SI7021_CMD_READ_TEMP 0xE0 |
Read Temperature Value from Previous RH Measurement
Definition at line 51
of file si7021.h
.
Referenced by SI7021_measure().
#define SI7021_CMD_READ_USER_REG1 0xE7 |
Read RH/T User Register 1
Definition at line 54
of file si7021.h
.
#define SI7021_CMD_RESET 0xFE |
Reset
Definition at line 52
of file si7021.h
.
#define SI7021_CMD_WRITE_HEATER_CTRL 0x51 |
Write Heater Control Register
Definition at line 55
of file si7021.h
.
Referenced by measureSupplyIR().
#define SI7021_CMD_WRITE_USER_REG1 0xE6 |
#define SI7021_ERROR_I2C_TRANSFER_FAILED 0x0002 |
I2C transaction failed
Definition at line 39
of file si7021.h
.
Referenced by SI7021_cmdRead(), and SI7021_cmdWrite().
#define SI7021_ERROR_I2C_TRANSFER_NACK 0x0001 |
No acknowledgement received
Definition at line 38
of file si7021.h
.
Referenced by SI7021_cmdRead(), SI7021_cmdWrite(), and SI7021_measure().
#define SI7021_ERROR_INVALID_DEVICE_ID 0x0003 |
#define SI7021_ERROR_TIMEOUT 0x0004 |
#define SI7021_OK 0 |
No errors
Definition at line 37
of file si7021.h
.
Referenced by SI7021_cmdRead(), SI7021_cmdWrite(), SI7021_init(), and SI7021_measure().
Function Documentation
uint32_t SI7021_cmdRead | ( | uint8_t * | cmd, |
size_t | cmdLen, |
||
uint8_t * | result, |
||
size_t | resultLen |
||
) |
Sends a command and reads the result byte(s) over the I2C bus.
- Parameters
-
[in] cmd
The command to be sent [in] cmdLen
The length of the command in bytes [out] result
The received bytes sent by the chip [in] resultLen
The number of the bytes to read from the chip
- Returns
- Returns zero on OK, non-zero otherwise
Definition at line 178
of file si7021.c
.
References I2C_TransferSeq_TypeDef::addr, BOARD_i2cBusSelect(), I2C_TransferSeq_TypeDef::buf, I2C_TransferSeq_TypeDef::data, I2C_TransferSeq_TypeDef::flags, I2C_FLAG_READ, I2C_FLAG_WRITE_READ, I2CSPM_Transfer(), i2cTransferDone, i2cTransferNack, I2C_TransferSeq_TypeDef::len, SI7021_ERROR_I2C_TRANSFER_FAILED, SI7021_ERROR_I2C_TRANSFER_NACK, and SI7021_OK.
Referenced by SI7021_getFwRev(), SI7021_init(), and SI7021_measure().
uint32_t SI7021_cmdWrite | ( | uint8_t * | cmd, |
size_t | cmdLen, |
||
uint8_t * | data, |
||
size_t | dataLen |
||
) |
Sends a command and data to the chip over the I2C bus.
- Parameters
-
[in] cmd
The command to be sent [in] cmdLen
The length of the command in bytes [out] data
The data byte(s) to be sent to the chip [in] dataLen
The number of the bytes to be sent to the chip
- Returns
- Returns zero on OK, non-zero otherwise
Definition at line 231
of file si7021.c
.
References I2C_TransferSeq_TypeDef::addr, BOARD_i2cBusSelect(), I2C_TransferSeq_TypeDef::buf, I2C_TransferSeq_TypeDef::data, I2C_TransferSeq_TypeDef::flags, I2C_FLAG_WRITE, I2C_FLAG_WRITE_WRITE, I2CSPM_Transfer(), i2cTransferDone, i2cTransferNack, I2C_TransferSeq_TypeDef::len, SI7021_ERROR_I2C_TRANSFER_FAILED, SI7021_ERROR_I2C_TRANSFER_NACK, and SI7021_OK.
Referenced by measureSupplyIR(), and SI7021_measure().
void SI7021_deInit | ( | void |
| ) |
De-initializes the Si7021 chip. Disables the sensor power domain, this also disables other sensors.
- Returns
- None
Definition at line 71
of file si7021.c
.
References BOARD_rhtempEnable().
Referenced by UTIL_supplyProbe().
uint32_t SI7021_getFwRev | ( | uint8_t * | fwRev | ) |
Reads the firmware revision of the Si7021 chip.
- Parameters
-
[out] fwRev
The firmware revision of the chip
- Returns
- Returns zero on OK, non-zero otherwise
Definition at line 149
of file si7021.c
.
References SI7021_CMD_READ_FW_REV, and SI7021_cmdRead().
uint32_t SI7021_init | ( | void |
| ) |
Initializes the Si7021 chip.
- Returns
- Returns zero on OK, non-zero otherwise
Definition at line 40
of file si7021.c
.
References BOARD_rhtempEnable(), SI7021_CMD_READ_ID_BYTE2, SI7021_cmdRead(), SI7021_DEVICE_ID, SI7021_ERROR_INVALID_DEVICE_ID, SI7021_OK, and UTIL_delay().
Referenced by UTIL_supplyProbe().
uint32_t SI7021_measure | ( | uint32_t * | rhData, |
int32_t * | tData |
||
) |
Performs relative humidity and temperature measurements.
- Parameters
-
[out] rhData
The measured relative humidity value in milli-percent units [out] tData
The measured temperature value in milli-degree Celsius
- Returns
- Returns zero on OK, non-zero otherwise
Definition at line 90
of file si7021.c
.
References SI7021_CMD_MEASURE_RH_NO_HOLD, SI7021_CMD_READ_TEMP, SI7021_cmdRead(), SI7021_cmdWrite(), SI7021_ERROR_I2C_TRANSFER_NACK, SI7021_ERROR_TIMEOUT, SI7021_OK, and UTIL_delay().