CCS811 - Gas Sensor
Description
Driver for the Cambridge CMOS Sensors CCS811 gas and indoor air quality sensor.
CCS811 usage example code
Basic example for initializing measuring equivalent Co2 and TVOC level.
#include "sl_i2cspm_instances.h" #include "sl_ccs811.h" int main( void ) { ... // Initialize sensor and set measure mode sl_ccs811_init(sl_i2cspm_sensor_gas); sl_ccs811_set_measure_mode(sl_i2cspm_sensor_gas, CCS811_MEASURE_MODE_DRIVE_MODE_1SEC); uint16_t eco2; uint16_t tvoc; while (true) { if ( sl_ccs811_is_data_available(sl_i2cspm_sensor_gas) ) { sl_ccs811_get_measurement(sl_i2cspm_sensor_gas, &eco2, &tvoc); } ... } }
Modules | |
CCS881 - Gas Sensor Details | |
CCS881 register interface. | |
Functions | |
sl_status_t | sl_ccs811_init (sl_i2cspm_t *i2cspm) |
Initialize the chip. | |
sl_status_t | sl_ccs811_deinit (sl_i2cspm_t *i2cspm) |
De-initialize the chip. | |
sl_status_t | sl_ccs811_get_hardware_id (sl_i2cspm_t *i2cspm, uint8_t *hwID) |
Reads Hardware ID from the CCS811 sensor. | |
sl_status_t | sl_ccs811_set_measure_mode (sl_i2cspm_t *i2cspm, uint8_t measMode) |
Set the measurement mode of the CCS811 sensor. | |
sl_status_t | sl_ccs811_update_firmware (sl_i2cspm_t *i2cspm, const uint8_t *firmware, uint32_t length) |
Perform a firmware update of the CCS811 sensor. | |
sl_status_t | sl_ccs811_read_firmware_version (sl_i2cspm_t *i2cspm, uint16_t *fw_version) |
Read out current firmware of the CCS811 sensor. | |
sl_status_t | sl_ccs811_get_status (sl_i2cspm_t *i2cspm, uint8_t *status) |
Read the status of the CCS811 sensor. | |
sl_status_t | sl_ccs811_read_mailbox (sl_i2cspm_t *i2cspm, uint8_t id, uint8_t length, uint8_t *data) |
Read data from a specific Mailbox address. | |
sl_status_t | sl_ccs811_start_application (sl_i2cspm_t *i2cspm) |
Switch the CCS811 chip from boot to application mode. | |
sl_status_t | sl_ccs811_software_reset (sl_i2cspm_t *i2cspm) |
Perform software reset on the CCS811. | |
bool | sl_ccs811_is_data_available (sl_i2cspm_t *i2cspm) |
Check whether new measurement data is available. | |
sl_status_t | sl_ccs811_get_measurement (sl_i2cspm_t *i2cspm, uint16_t *eco2, uint16_t *tvoc) |
Read measurement data (eCO2 and TVOC) from the CCS811 sensor. | |
sl_status_t | sl_ccs811_get_raw_data (sl_i2cspm_t *i2cspm, uint16_t *current, uint16_t *rawData) |
Get the latest readings from the sense resistor of the CCS811 sensor. | |
sl_status_t | sl_ccs811_set_env_data (sl_i2cspm_t *i2cspm, int32_t tempData, uint32_t rhData) |
Write temperature and humidity values to the environmental data regs. | |
Function Documentation
◆ sl_ccs811_init()
sl_status_t sl_ccs811_init | ( | sl_i2cspm_t * | i2cspm | ) |
Initialize the chip.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use.
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_INITIALIZATION
Initialization was unsuccessful
◆ sl_ccs811_deinit()
sl_status_t sl_ccs811_deinit | ( | sl_i2cspm_t * | i2cspm | ) |
De-initialize the chip.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use.
- Returns
- Return values
-
SL_STATUS_OK
Success
◆ sl_ccs811_get_hardware_id()
sl_status_t sl_ccs811_get_hardware_id | ( | sl_i2cspm_t * | i2cspm, |
uint8_t * | hwID |
||
) |
Reads Hardware ID from the CCS811 sensor.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use. [out] hwID
The Hardware ID of the chip (should be 0x81)
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_set_measure_mode()
sl_status_t sl_ccs811_set_measure_mode | ( | sl_i2cspm_t * | i2cspm, |
uint8_t | measMode |
||
) |
Set the measurement mode of the CCS811 sensor.
This function must be called before reading measurements from the sensor.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use. [in] measMode
The desired measurement mode
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_update_firmware()
sl_status_t sl_ccs811_update_firmware | ( | sl_i2cspm_t * | i2cspm, |
const uint8_t * | firmware, |
||
uint32_t | length |
||
) |
Perform a firmware update of the CCS811 sensor.
This function overwrites the existing firmware, irrespective of the version number.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use. [in] firmware
A buffer containing the contents of the firmware update [in] length
The length of the firmware update array
- Returns
- Return values
-
SL_STATUS_OK
Firmware upgrade successful SL_STATUS_FAIL
Firmware upgrade failed
◆ sl_ccs811_read_firmware_version()
sl_status_t sl_ccs811_read_firmware_version | ( | sl_i2cspm_t * | i2cspm, |
uint16_t * | fw_version |
||
) |
Read out current firmware of the CCS811 sensor.
- Parameters
-
[in] i2cspm
The i2cspm instance to use [out] fw_version
The current application firmware. The top 4 bits contain the major firmware version, the next 4 bits contain the minor and the last 8 bits contain the patch version.
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_get_status()
sl_status_t sl_ccs811_get_status | ( | sl_i2cspm_t * | i2cspm, |
uint8_t * | status |
||
) |
Read the status of the CCS811 sensor.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use. [out] status
The content of the CCS811 Status Register
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_read_mailbox()
sl_status_t sl_ccs811_read_mailbox | ( | sl_i2cspm_t * | i2cspm, |
uint8_t | id, |
||
uint8_t | length, |
||
uint8_t * | data |
||
) |
Read data from a specific Mailbox address.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use. [in] id
The address of the Mailbox register [in] length
The number of bytes to read [out] data
The data read from the sensor
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_start_application()
sl_status_t sl_ccs811_start_application | ( | sl_i2cspm_t * | i2cspm | ) |
Switch the CCS811 chip from boot to application mode.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission failure SL_STATUS_NOT_AVAILABLE
Application firmware is not present in the CCS811 device SL_STATUS_INVALID_STATE
Chip firmware did not switch to application mode
◆ sl_ccs811_software_reset()
sl_status_t sl_ccs811_software_reset | ( | sl_i2cspm_t * | i2cspm | ) |
Perform software reset on the CCS811.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_is_data_available()
bool sl_ccs811_is_data_available | ( | sl_i2cspm_t * | i2cspm | ) |
Check whether new measurement data is available.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use
- Returns
- True if new data available, otherwise false
◆ sl_ccs811_get_measurement()
sl_status_t sl_ccs811_get_measurement | ( | sl_i2cspm_t * | i2cspm, |
uint16_t * | eco2, |
||
uint16_t * | tvoc |
||
) |
Read measurement data (eCO2 and TVOC) from the CCS811 sensor.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use [out] eco2
The equivalent CO2 level (in ppm) read from the sensor [out] tvoc
The TVOC level (in ppb) read from the sensor
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_get_raw_data()
sl_status_t sl_ccs811_get_raw_data | ( | sl_i2cspm_t * | i2cspm, |
uint16_t * | current, |
||
uint16_t * | rawData |
||
) |
Get the latest readings from the sense resistor of the CCS811 sensor.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use [out] current
The value of current through the sensor [out] rawData
The raw ADC reading of the voltage across the sensor with the selected current
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error
◆ sl_ccs811_set_env_data()
sl_status_t sl_ccs811_set_env_data | ( | sl_i2cspm_t * | i2cspm, |
int32_t | tempData, |
||
uint32_t | rhData |
||
) |
Write temperature and humidity values to the environmental data regs.
- Parameters
-
[in] i2cspm
The I2CSPM instance to use. [in] tempData
The environmental temperature in milliCelsius [in] rhData
The relative humidity in millipercent
- Returns
- Return values
-
SL_STATUS_OK
Success SL_STATUS_TRANSMIT
I2C transmission error