Contains the BSP driver for the B-L475E-IOT01 board.
Dependents: mbed-os-example-ble-Thermometer DISCO_L475VG_IOT01-Telegram-BOT DISCO_L475VG_IOT01-sche_cheveux DISCO_L475VG_IOT01-QSPI_FLASH_FILE_SYSTEM ... more
https://os.mbed.com/platforms/ST-Discovery-L475E-IOT01A/
Diff: Drivers/BSP/Components/hts221/hts221.h
- Revision:
- 4:137bb367ba50
- Child:
- 7:bfe8272ced90
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Drivers/BSP/Components/hts221/hts221.h Fri Apr 14 13:09:54 2017 +0200 @@ -0,0 +1,338 @@ +/** + ****************************************************************************** + * @file hts221.h + * @author MCD Application Team + * @version V1.0.0 + * @date 14-February-2017 + * @brief HTS221 header driver file + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2> + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __HTS221__H +#define __HTS221__H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "../Common/hsensor.h" +#include "../Common/tsensor.h" + +/** @addtogroup BSP + * @{ + */ + +/** @addtogroup Component + * @{ + */ + +/** @addtogroup HTS221 + * @{ + */ + +/** @defgroup HTS221_Exported_Constants HTS221 Exported Constants + * @{ + */ + +/** + * @brief Bitfield positioning. + */ +#define HTS221_BIT(x) ((uint8_t)x) + + +/** + * @brief Device Identification register. + * Read + * Default value: 0xBC + * 7:0 This read-only register contains the device identifier for HTS221. + */ +#define HTS221_WHO_AM_I_REG (uint8_t)0x0F + +/** + * @brief Device Identification value. + */ +#define HTS221_WHO_AM_I_VAL (uint8_t)0xBC + + +/** + * @brief Humidity and temperature average mode register. + * Read/write + * Default value: 0x1B + * 7:6 Reserved. + * 5:3 AVGT2-AVGT1-AVGT0: Select the temperature internal average. + * + * AVGT2 | AVGT1 | AVGT0 | Nr. Internal Average + * ---------------------------------------------------- + * 0 | 0 | 0 | 2 + * 0 | 0 | 1 | 4 + * 0 | 1 | 0 | 8 + * 0 | 1 | 1 | 16 + * 1 | 0 | 0 | 32 + * 1 | 0 | 1 | 64 + * 1 | 1 | 0 | 128 + * 1 | 1 | 1 | 256 + * + * 2:0 AVGH2-AVGH1-AVGH0: Select humidity internal average. + * AVGH2 | AVGH1 | AVGH0 | Nr. Internal Average + * ------------------------------------------------------ + * 0 | 0 | 0 | 4 + * 0 | 0 | 1 | 8 + * 0 | 1 | 0 | 16 + * 0 | 1 | 1 | 32 + * 1 | 0 | 0 | 64 + * 1 | 0 | 1 | 128 + * 1 | 1 | 0 | 256 + * 1 | 1 | 1 | 512 + * + */ +#define HTS221_AV_CONF_REG (uint8_t)0x10 + +#define HTS221_AVGT_BIT HTS221_BIT(3) +#define HTS221_AVGH_BIT HTS221_BIT(0) + +#define HTS221_AVGH_MASK (uint8_t)0x07 +#define HTS221_AVGT_MASK (uint8_t)0x38 + +/** + * @brief Control register 1. + * Read/write + * Default value: 0x00 + * 7 PD: power down control. 0 - power down mode; 1 - active mode. + * 6:3 Reserved. + * 2 BDU: block data update. 0 - continuous update + * 1 - output registers not updated until MSB and LSB reading. + * 1:0 ODR1, ODR0: output data rate selection. + * + * ODR1 | ODR0 | Humidity output data-rate(Hz) | Pressure output data-rate(Hz) + * ---------------------------------------------------------------------------------- + * 0 | 0 | one shot | one shot + * 0 | 1 | 1 | 1 + * 1 | 0 | 7 | 7 + * 1 | 1 | 12.5 | 12.5 + * + */ +#define HTS221_CTRL_REG1 (uint8_t)0x20 + +#define HTS221_PD_BIT HTS221_BIT(7) +#define HTS221_BDU_BIT HTS221_BIT(2) +#define HTS221_ODR_BIT HTS221_BIT(0) + +#define HTS221_PD_MASK (uint8_t)0x80 +#define HTS221_BDU_MASK (uint8_t)0x04 +#define HTS221_ODR_MASK (uint8_t)0x03 + +/** + * @brief Control register 2. + * Read/write + * Default value: 0x00 + * 7 BOOT: Reboot memory content. 0: normal mode + * 1: reboot memory content. Self-cleared upon completation. + * 6:2 Reserved. + * 1 HEATHER: 0: heater enable; 1: heater disable. + * 0 ONE_SHOT: 0: waiting for start of conversion + * 1: start for a new dataset. Self-cleared upon completation. + */ +#define HTS221_CTRL_REG2 (uint8_t)0x21 + +#define HTS221_BOOT_BIT HTS221_BIT(7) +#define HTS221_HEATHER_BIT HTS221_BIT(1) +#define HTS221_ONESHOT_BIT HTS221_BIT(0) + +#define HTS221_BOOT_MASK (uint8_t)0x80 +#define HTS221_HEATHER_MASK (uint8_t)0x02 +#define HTS221_ONE_SHOT_MASK (uint8_t)0x01 + +/** + * @brief Control register 3. + * Read/write + * Default value: 0x00 + * 7 DRDY_H_L: Interrupt edge. 0: active high, 1: active low. + * 6 PP_OD: Push-Pull/OpenDrain selection on interrupt pads. 0: push-pull + * 1: open drain. + * 5:3 Reserved. + * 2 DRDY: interrupt config. 0: disable, 1: enable. + */ +#define HTS221_CTRL_REG3 (uint8_t)0x22 + +#define HTS221_DRDY_H_L_BIT HTS221_BIT(7) +#define HTS221_PP_OD_BIT HTS221_BIT(6) +#define HTS221_DRDY_BIT HTS221_BIT(2) + +#define HTS221_DRDY_H_L_MASK (uint8_t)0x80 +#define HTS221_PP_OD_MASK (uint8_t)0x40 +#define HTS221_DRDY_MASK (uint8_t)0x04 + +/** + * @brief Status register. + * Read + * Default value: 0x00 + * 7:2 Reserved. + * 1 H_DA: Humidity data available. 0: new data for humidity is not yet available + * 1: new data for humidity is available. + * 0 T_DA: Temperature data available. 0: new data for temperature is not yet available + * 1: new data for temperature is available. + */ +#define HTS221_STATUS_REG (uint8_t)0x27 + +#define HTS221_H_DA_BIT HTS221_BIT(1) +#define HTS221_T_DA_BIT HTS221_BIT(0) + +#define HTS221_HDA_MASK (uint8_t)0x02 +#define HTS221_TDA_MASK (uint8_t)0x01 + +/** + * @brief Humidity data (LSB). + * Read + * Default value: 0x00. + * HOUT7 - HOUT0: Humidity data LSB (2's complement). + */ +#define HTS221_HR_OUT_L_REG (uint8_t)0x28 + +/** + * @brief Humidity data (MSB). + * Read + * Default value: 0x00. + * HOUT15 - HOUT8: Humidity data MSB (2's complement). + */ +#define HTS221_HR_OUT_H_REG (uint8_t)0x29 + +/** + * @brief Temperature data (LSB). + * Read + * Default value: 0x00. + * TOUT7 - TOUT0: temperature data LSB. + */ +#define HTS221_TEMP_OUT_L_REG (uint8_t)0x2A + +/** + * @brief Temperature data (MSB). + * Read + * Default value: 0x00. + * TOUT15 - TOUT8: temperature data MSB. + */ +#define HTS221_TEMP_OUT_H_REG (uint8_t)0x2B + +/** + * @brief Calibration registers. + * Read + */ +#define HTS221_H0_RH_X2 (uint8_t)0x30 +#define HTS221_H1_RH_X2 (uint8_t)0x31 +#define HTS221_T0_DEGC_X8 (uint8_t)0x32 +#define HTS221_T1_DEGC_X8 (uint8_t)0x33 +#define HTS221_T0_T1_DEGC_H2 (uint8_t)0x35 +#define HTS221_H0_T0_OUT_L (uint8_t)0x36 +#define HTS221_H0_T0_OUT_H (uint8_t)0x37 +#define HTS221_H1_T0_OUT_L (uint8_t)0x3A +#define HTS221_H1_T0_OUT_H (uint8_t)0x3B +#define HTS221_T0_OUT_L (uint8_t)0x3C +#define HTS221_T0_OUT_H (uint8_t)0x3D +#define HTS221_T1_OUT_L (uint8_t)0x3E +#define HTS221_T1_OUT_H (uint8_t)0x3F + +/** +* @} +*/ + + +/** @defgroup HTS221_Humidity_Exported_Functions HTS221 Humidity Exported Functions + * @{ + */ +/* HUMIDITY functions */ +void HTS221_H_Init(uint16_t DeviceAddr); +uint8_t HTS221_H_ReadID(uint16_t DeviceAddr); +float HTS221_H_ReadHumidity(uint16_t DeviceAddr); +/** + * @} + */ + +/** @defgroup HTS221_HumImported_Globals Humidity Imported Globals + * @{ + */ +/* Humidity driver structure */ +extern HSENSOR_DrvTypeDef HTS221_H_Drv; +/** + * @} + */ + +/** @defgroup HTS221_Temperature_Exported_Functions HTS221 Temperature Exported Functions + * @{ + */ +/* TEMPERATURE functions */ +void HTS221_T_Init(uint16_t DeviceAddr, TSENSOR_InitTypeDef *pInitStruct); +float HTS221_T_ReadTemp(uint16_t DeviceAddr); +/** + * @} + */ + +/** @defgroup HTS221_TempImported_Globals Temperature Imported Globals + * @{ + */ +/* Temperature driver structure */ +extern TSENSOR_DrvTypeDef HTS221_T_Drv; + +/** + * @} + */ + +/** @defgroup HTS221_Imported_Functions HTS221 Imported Functions + * @{ + */ +/* IO functions */ +extern void SENSOR_IO_Init(void); +extern void SENSOR_IO_Write(uint8_t Addr, uint8_t Reg, uint8_t Value); +extern uint8_t SENSOR_IO_Read(uint8_t Addr, uint8_t Reg); +extern uint16_t SENSOR_IO_ReadMultiple(uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length); +extern void SENSOR_IO_WriteMultiple(uint8_t Addr, uint8_t Reg, uint8_t *Buffer, uint16_t Length); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __HTS221__H */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/