mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
120 lines
3.2 KiB
C
120 lines
3.2 KiB
C
/*
|
|
* Copyright (C) 2020 Nalys
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser
|
|
* General Public License v2.1. See the file LICENSE in the top level
|
|
* directory for more details.
|
|
*/
|
|
|
|
/**
|
|
* @defgroup drivers_bh1900nux BH1900NUX Temperature sensor
|
|
* @ingroup drivers_sensors
|
|
* @brief Driver for the Rohm BH1900NUX Temperature sensor
|
|
*
|
|
* @{
|
|
* @file
|
|
* @brief Interface definition for the BH1900NUX temperature sensor
|
|
*
|
|
* @author Wouter Symons <wsymons@nalys-group.com>
|
|
*/
|
|
|
|
#ifndef BH1900NUX_H
|
|
#define BH1900NUX_H
|
|
|
|
#include "periph/i2c.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @name Possible I2C bus addresses of the device
|
|
*
|
|
* The actual address of the device depends on the states of the slave address pins.
|
|
* @{
|
|
*/
|
|
#define BH1900NUX_ADDR_1 (0x48) /**< A2:L A1:L A0:L*/
|
|
#define BH1900NUX_ADDR_2 (0x49) /**< A2:L A1:L A0:H*/
|
|
#define BH1900NUX_ADDR_3 (0x4a) /**< A2:L A1:H A0:L*/
|
|
#define BH1900NUX_ADDR_4 (0x4b) /**< A2:L A1:H A0:H*/
|
|
#define BH1900NUX_ADDR_5 (0x4c) /**< A2:H A1:L A0:L*/
|
|
#define BH1900NUX_ADDR_6 (0x4d) /**< A2:H A1:L A0:H*/
|
|
#define BH1900NUX_ADDR_7 (0x4e) /**< A2:H A1:H A0:L*/
|
|
#define BH1900NUX_ADDR_8 (0x4f) /**< A2:H A1:H A0:H*/
|
|
/** @} */
|
|
|
|
/**
|
|
* @name Temperature register address
|
|
*
|
|
* Address of the temperature resister
|
|
* @{
|
|
*/
|
|
#define BH1900NUX_REG_ADDR (0x00)
|
|
/** @} */
|
|
|
|
/**
|
|
* @brief Default address of BH1900NUX sensors
|
|
*/
|
|
#define BH1900NUX_DEFAULT_ADDR BH1900NUX_ADDR_1
|
|
|
|
/**
|
|
* @brief Maximum I2C bus speed to use with the device
|
|
*/
|
|
#define BH1900NUX_I2C_MAX_CLK I2C_SPEED_FAST
|
|
|
|
/**
|
|
* @brief Status and error return codes
|
|
*/
|
|
enum {
|
|
BH1900NUX_OK = 0, /**< everything was fine */
|
|
BH1900NUX_ERR_I2C = -1 /**< error initializing the I2C bus */
|
|
};
|
|
|
|
/**
|
|
* @brief Device descriptor for BH1900NUX devices
|
|
*/
|
|
typedef struct {
|
|
i2c_t i2c; /**< I2C bus the device is connected to */
|
|
uint8_t addr; /**< slave address of the device */
|
|
} bh1900nux_t;
|
|
|
|
/**
|
|
* @brief Set of configuration parameters for BH1900NUX devices
|
|
*/
|
|
typedef struct {
|
|
i2c_t i2c; /**< I2C bus the device is connected to */
|
|
uint8_t addr; /**< slave address of the device */
|
|
} bh1900nux_params_t;
|
|
|
|
/**
|
|
* @brief Initialize the given BH1900NUX device
|
|
*
|
|
* @param[out] dev device descriptor of the targeted device
|
|
* @param[in] params device configuration (i2c bus, address and bus clock)
|
|
*
|
|
* @return 0 on success
|
|
* @return -1 if unable to speak to the device
|
|
*/
|
|
int bh1900nux_init(bh1900nux_t *dev, const bh1900nux_params_t *params);
|
|
|
|
/**
|
|
* @brief Read the temperature measerd by the device [MILICELSIUS].
|
|
*
|
|
* The result value is the measured temperature in MILICELSUIS and ranges
|
|
* from -30 to 95.
|
|
*
|
|
* @param[in] dev device descriptor of the targeted device
|
|
* @param[out] temp temperature output
|
|
*
|
|
* @return BH1900NUX_OK on success
|
|
* @return BH1900NUX_ERR_I2C on failure
|
|
*/
|
|
int bh1900nux_read(const bh1900nux_t *dev, int16_t *temp);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* BH1900NUX_H */
|
|
/** @} */
|