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
        
         62
        
        of file
        
         si7021.h
        
        .
       
| #define SI7021_CMD_MEASURE_RH_NO_HOLD 0xF5 | 
Measure Relative Humidity, No Hold Master Mode
        Definition at line
        
         63
        
        of file
        
         si7021.h
        
        .
       
Referenced by SI7021_measure() .
| #define SI7021_CMD_MEASURE_TEMP 0xE3 | 
Measure Temperature, Hold Master Mode
        Definition at line
        
         64
        
        of file
        
         si7021.h
        
        .
       
| #define SI7021_CMD_MEASURE_TEMP_NO_HOLD 0xF3 | 
Measure Temperature, No Hold Master Mode
        Definition at line
        
         65
        
        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
        
         71
        
        of file
        
         si7021.h
        
        .
       
| #define SI7021_CMD_READ_ID_BYTE1 { 0xFA, 0x0F } | 
Read Electronic ID 1st Byte
        Definition at line
        
         72
        
        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
        
         66
        
        of file
        
         si7021.h
        
        .
       
Referenced by SI7021_measure() .
| #define SI7021_CMD_READ_USER_REG1 0xE7 | 
Read RH/T User Register 1
        Definition at line
        
         69
        
        of file
        
         si7021.h
        
        .
       
| #define SI7021_CMD_RESET 0xFE | 
Reset
        Definition at line
        
         67
        
        of file
        
         si7021.h
        
        .
       
| #define SI7021_CMD_WRITE_HEATER_CTRL 0x51 | 
Write Heater Control Register
        Definition at line
        
         70
        
        of file
        
         si7021.h
        
        .
       
Referenced by measureSupplyIR() .
| #define SI7021_CMD_WRITE_USER_REG1 0xE6 | 
Write RH/T User Register 1
        Definition at line
        
         68
        
        of file
        
         si7021.h
        
        .
       
Referenced by measureSupplyIR() .
| #define SI7021_ERROR_I2C_TRANSFER_FAILED 0x0002 | 
I2C transaction failed
        Definition at line
        
         54
        
        of file
        
         si7021.h
        
        .
       
Referenced by SI7021_cmdRead() , and SI7021_cmdWrite() .
| #define SI7021_ERROR_I2C_TRANSFER_NACK 0x0001 | 
No acknowledgement received
        Definition at line
        
         53
        
        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
        
         52
        
        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] cmdThe command to be sent [in] cmdLenThe length of the command in bytes [out] resultThe received bytes sent by the chip [in] resultLenThe number of the bytes to read from the chip 
- Returns
- Returns zero on OK, non-zero otherwise
        Definition at line
        
         193
        
        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] cmdThe command to be sent [in] cmdLenThe length of the command in bytes [out] dataThe data byte(s) to be sent to the chip [in] dataLenThe number of the bytes to be sent to the chip 
- Returns
- Returns zero on OK, non-zero otherwise
        Definition at line
        
         246
        
        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
        
         86
        
        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] fwRevThe firmware revision of the chip 
- Returns
- Returns zero on OK, non-zero otherwise
        Definition at line
        
         164
        
        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
        
         55
        
        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] rhDataThe measured relative humidity value in milli-percent units [out] tDataThe measured temperature value in milli-degree Celsius 
- Returns
- Returns zero on OK, non-zero otherwise
        Definition at line
        
         105
        
        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() .