mcp9808 - Driver for MCP9808 digital temperature sensor
- group mcp9808
ESP-IDF driver for MCP9808 Digital Temperature Sensor.
Copyright (c) 2020 Ruslan V. Uss unclerus@gmail.com
BSD Licensed as described in the file LICENSE
Defines
-
MCP9808_I2C_ADDR_000
I2C address, pins: A0=0, A1=0, A2=0.
-
MCP9808_I2C_ADDR_001
I2C address, pins: A0=1, A1=0, A2=0.
-
MCP9808_I2C_ADDR_010
I2C address, pins: A0=0, A1=1, A2=0.
-
MCP9808_I2C_ADDR_011
I2C address, pins: A0=1, A1=1, A2=0.
-
MCP9808_I2C_ADDR_100
I2C address, pins: A0=0, A1=0, A2=1.
-
MCP9808_I2C_ADDR_101
I2C address, pins: A0=1, A1=0, A2=1.
-
MCP9808_I2C_ADDR_110
I2C address, pins: A0=0, A1=1, A2=1.
-
MCP9808_I2C_ADDR_111
I2C address, pins: A0=1, A1=1, A2=1.
Enums
-
enum mcp9808_mode_t
Device mode.
Values:
-
enumerator MCP9808_CONTINUOUS
Continuous measurement mode, default.
-
enumerator MCP9808_SHUTDOWN
Shutdown mode.
-
enumerator MCP9808_CONTINUOUS
-
enum mcp9808_hysteresis_t
T upper and T lower hysteresis.
Values:
-
enumerator MCP9808_HYST_0
0.0 deg.C, default
-
enumerator MCP9808_HYST_1_5
1.5 deg.C
-
enumerator MCP9808_HYST_3
3.0 deg.C
-
enumerator MCP9808_HYST_6
6.0 deg.C
-
enumerator MCP9808_HYST_0
-
enum mcp9808_alert_mode_t
Alert output mode.
Values:
-
enumerator MCP9808_ALERT_DISABLED
Alert output disabled, default.
-
enumerator MCP9808_ALERT_COMPARATOR
Alert output in comparator mode.
-
enumerator MCP9808_ALERT_INTERRUPT
Alert output in interrupt mode.
-
enumerator MCP9808_ALERT_DISABLED
-
enum mcp9808_alert_select_t
Alert output select.
Values:
-
enumerator MCP9808_ALERT_UP_LOW_CRIT
Alert when T > T upper or T < T lower or T > T crit, default.
-
enumerator MCP9808_ALERT_CRIT
Alert when T > T crit.
-
enumerator MCP9808_ALERT_UP_LOW_CRIT
-
enum mcp9808_alert_polarity_t
Alert output polarity.
Values:
-
enumerator MCP9808_ALERT_LOW
Active-low, pull-up resistor required, default.
-
enumerator MCP9808_ALERT_HIGH
Active-high.
-
enumerator MCP9808_ALERT_LOW
-
enum mcp9808_resolution_t
Temperature resolution.
Values:
-
enumerator MCP9808_RES_0_5
Resolution = +0.5 deg.C, conversion time = 30 ms, typical sample rate = 33 Hz.
-
enumerator MCP9808_RES_0_25
Resolution = +0.25 deg.C, conversion time = 65 ms, typical sample rate = 15 Hz.
-
enumerator MCP9808_RES_0_125
Resolution = +0.125 deg.C, conversion time = 130 ms, typical sample rate = 7 Hz.
-
enumerator MCP9808_RES_0_0625
Resolution = +0.0625 deg.C, conversion time = 250 ms, typical sample rate = 4 Hz, default.
-
enumerator MCP9808_RES_0_5
Functions
-
esp_err_t mcp9808_init_desc(i2c_dev_t *dev, uint8_t addr, i2c_port_t port, gpio_num_t sda_gpio, gpio_num_t scl_gpio)
Initialize device descriptor.
- Parameters:
dev – Device descriptor
addr – Device I2C address
port – I2C port
sda_gpio – SDA GPIO
scl_gpio – SCL GPIO
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_free_desc(i2c_dev_t *dev)
Free device descriptor.
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_init(i2c_dev_t *dev)
Init device.
Set device configuration to default, clear lock bits
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_set_mode(i2c_dev_t *dev, mcp9808_mode_t mode)
Set device mode.
- Parameters:
dev – Device descriptor
mode – Power mode
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_get_mode(i2c_dev_t *dev, mcp9808_mode_t *mode)
Get device mode.
- Parameters:
dev – Device descriptor
mode – [out] Current power mode
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_set_resolution(i2c_dev_t *dev, mcp9808_resolution_t res)
Set temperature resolution.
- Parameters:
dev – Device descriptor
res – Resolution
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_get_resolution(i2c_dev_t *dev, mcp9808_resolution_t *res)
Get temperature resolution.
- Parameters:
dev – Device descriptor
res – [out] Resolution
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_set_alert_config(i2c_dev_t *dev, mcp9808_alert_mode_t mode, mcp9808_alert_select_t sel, mcp9808_alert_polarity_t polarity, mcp9808_hysteresis_t hyst)
Configure alert parameters.
- Parameters:
dev – Device descriptor
mode – Alert mode
sel – Alert window (see datasheet)
polarity – Alert output polarity
hyst – Alert limits hysteresis
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_get_alert_config(i2c_dev_t *dev, mcp9808_alert_mode_t *mode, mcp9808_alert_select_t *sel, mcp9808_alert_polarity_t *polarity, mcp9808_hysteresis_t *hyst)
Get alert configuration.
- Parameters:
dev – Device descriptor
mode – [out] Alert mode
sel – [out] Alert window (see datasheet)
polarity – [out] Alert output polarity
hyst – [out] Alert limits hysteresis
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_set_limits(i2c_dev_t *dev, float t_upper, float t_lower, float t_crit)
Set alert temperature limits.
- Parameters:
dev – Device descriptor
t_upper – Upper temperature
t_lower – Lower temperature
t_crit – Critical temperature
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_get_limits(i2c_dev_t *dev, float *t_upper, float *t_lower, float *t_crit)
Get alert temperature limits.
- Parameters:
dev – Device descriptor
t_upper – [out] Upper temperature
t_lower – [out] Lower temperature
t_crit – [out] Critical temperature
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_set_alert_status(i2c_dev_t *dev, bool alert)
Set alert status.
- Parameters:
dev – Device descriptor
alert – True for alert
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_get_alert_status(i2c_dev_t *dev, bool *alert)
Get current alert status.
- Parameters:
dev – Device descriptor
alert – [out] Alert status
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_clear_interrupt(i2c_dev_t *dev)
Clear interrupt bit.
- Parameters:
dev – Device descriptor
- Returns:
ESP_OK
on success
-
esp_err_t mcp9808_get_temperature(i2c_dev_t *dev, float *t, bool *lower, bool *upper, bool *crit)
Read temperature.
- Parameters:
dev – Device descriptor
t – [out] Ambient temperature
lower – [out] True if T a < T lower, can be NULL
upper – [out] True if T a > T upper, can be NULL
crit – [out] True if T a >= T critical, can be NULL
- Returns:
ESP_OK
on success
-
MCP9808_I2C_ADDR_000