EFM32 Happy Gecko Software Documentation  efm32hg-doc-5.1.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
si7210.c File Reference

Detailed Description

Driver for the Silicon Labs Si7210 Hall Effect Sensor.

Version
5.1.1

License

Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com

This file is licensed under the Silicon Labs License Agreement. See the file "Silabs_License_Agreement.txt" for details. Before using this software for any purpose, you must agree to the terms of that agreement.

Definition in file si7210.c.

#include <stddef.h>
#include "i2cspm.h"
#include "gpiointerrupt.h"
#include "em_cmu.h"
#include "thunderboard/board.h"
#include "thunderboard/util.h"
#include "thunderboard/si7210.h"

Go to the source code of this file.

Functions

uint32_t SI7210_config (SI7210_Config config)
 Configures the Si7210 chip. More...
 
void SI7210_deInit (void)
 De-initializes the Si7210 chip. Disables the sensor power domain, this also disables other sensors. More...
 
uint32_t SI7210_init (void)
 Initializes the Si7210 chip. More...
 
uint32_t SI7210_measure (float *result)
 Performs a measurement. More...
 
uint32_t SI7210_regClearBits (uint8_t addr, uint8_t mask)
 Clears the given bit(s) in a register in the Si7021 device. More...
 
uint32_t SI7210_regRead (uint8_t addr, uint8_t *data)
 Reads register from the Si7021 device. More...
 
uint32_t SI7210_regSetBits (uint8_t addr, uint8_t mask)
 Sets the given bit(s) in a register in the Si7021 device. More...
 
uint32_t SI7210_regWrite (uint8_t addr, uint8_t data)
 Writes a register in the Si7021 device. More...
 
uint32_t SI7210_suspend (void)
 Puts the Si7210 chip in sleep mode. More...
 

Function Documentation

uint32_t SI7210_config ( SI7210_Config  config)

Configures the Si7210 chip.

Parameters
[in]configThe structure, which contains the configuration parameters
Returns
Returns zero on OK, non-zero otherwise

Definition at line 202 of file si7210.c.

References GPIO_IntConfig(), GPIOINT_CallbackRegister(), SI7210_regClearBits(), SI7210_regSetBits(), and SI7210_regWrite().

Referenced by SI7210_suspend().

void SI7210_deInit ( void  )

De-initializes the Si7210 chip. Disables the sensor power domain, this also disables other sensors.

Returns
None

Definition at line 150 of file si7210.c.

References BOARD_envSensEnable(), GPIO_IntConfig(), GPIO_PinModeSet(), GPIOINT_CallbackUnRegister(), and gpioModeDisabled.

uint32_t SI7210_init ( void  )

Initializes the Si7210 chip.

{DOXYGEN_INCLUDE_HALL_EFFECT_SENSOR} {DO_NOT_INCLUDE_WITH_DOXYGEN} DO_NOT_INCLUDE_WITH_DOXYGEN

Returns
Returns zero on OK, non-zero otherwise

Definition at line 102 of file si7210.c.

References BOARD_envSensEnable(), GPIO_PinModeSet(), GPIOINT_Init(), gpioModeInput, SI7210_regRead(), and UTIL_delay().

uint32_t SI7210_measure ( float *  result)

Performs a measurement.

Parameters
[out]resultThe measured field strength value in mT
Returns
Returns zero on OK, non-zero otherwise

Definition at line 374 of file si7210.c.

References SI7210_regRead().

uint32_t SI7210_regClearBits ( uint8_t  addr,
uint8_t  mask 
)

Clears the given bit(s) in a register in the Si7021 device.

Parameters
[in]addrThe address of the register
[in]maskThe mask specifies which bits should be clear. If a given bit of the mask is 1 that register bit will be cleared to 0. All the other register bits will be untouched.
Returns
None

Definition at line 531 of file si7210.c.

References SI7210_regRead(), and SI7210_regWrite().

Referenced by SI7210_config().

uint32_t SI7210_regRead ( uint8_t  addr,
uint8_t *  data 
)

Reads register from the Si7021 device.

Parameters
[in]addrThe register address to read from in the sensor
[out]dataThe data read from the device
Returns
Returns zero on OK, non-zero otherwise

Definition at line 423 of file si7210.c.

References I2C_TransferSeq_TypeDef::addr, I2C_TransferSeq_TypeDef::buf, I2C_TransferSeq_TypeDef::data, I2C_TransferSeq_TypeDef::flags, I2C_FLAG_WRITE_READ, I2CSPM_Transfer(), i2cTransferDone, and I2C_TransferSeq_TypeDef::len.

Referenced by SI7210_init(), SI7210_measure(), SI7210_regClearBits(), and SI7210_regSetBits().

uint32_t SI7210_regSetBits ( uint8_t  addr,
uint8_t  mask 
)

Sets the given bit(s) in a register in the Si7021 device.

Parameters
[in]addrThe address of the register
[in]maskThe mask specifies which bits should be set. If a given bit of the mask is 1 that register bit will be set to 1. All the other register bits will be untouched.
Returns
None

Definition at line 497 of file si7210.c.

References SI7210_regRead(), and SI7210_regWrite().

Referenced by SI7210_config(), and SI7210_suspend().

uint32_t SI7210_regWrite ( uint8_t  addr,
uint8_t  data 
)

Writes a register in the Si7021 device.

Parameters
[in]addrThe register address to write
[in]dataThe data to write to the register
Returns
Returns zero on OK, non-zero otherwise

Definition at line 459 of file si7210.c.

References I2C_TransferSeq_TypeDef::addr, I2C_TransferSeq_TypeDef::buf, I2C_TransferSeq_TypeDef::data, I2C_TransferSeq_TypeDef::flags, I2C_FLAG_WRITE_WRITE, I2CSPM_Transfer(), i2cTransferDone, and I2C_TransferSeq_TypeDef::len.

Referenced by SI7210_config(), SI7210_regClearBits(), and SI7210_regSetBits().

uint32_t SI7210_suspend ( void  )

Puts the Si7210 chip in sleep mode.

Returns
Returns zero on OK, non-zero otherwise

Definition at line 170 of file si7210.c.

References SI7210_config(), and SI7210_regSetBits().