Si7210 - Magnetic Hall Effect sensor
Description
Driver for the Silicon Labs Si7210 Hall effect sensor.
Si7210 example code
Basic example for measurement of magnetic field strength:
#include "sl_i2cspm_instances.h"
#include "sl_si7210.h"
int main( void )
{
...
float mTdata:;
sl_si7210_init(sl_i2cspm_sensor);
sl_si7210_measure(sl_i2cspm_sensor, 10000, &mTdata);
...
}
Modules |
|
| Si7210 Details | |
|
Register interface and implementation details.
|
|
Data Structures |
|
| struct | sl_si7210_configure |
|
Structure to configure the Si7210 sensor.
|
|
Functions |
|
| sl_status_t | sl_si7210_init (sl_i2cspm_t *i2cspm) |
|
Does device-specific initialization for the Si7210 chip.
|
|
| sl_status_t | sl_si7210_configure (sl_i2cspm_t *i2cspm, sl_si7210_configure_t *config) |
|
Configure the Si7210 chip.
|
|
| sl_status_t | sl_si7210_measure (sl_i2cspm_t *i2cspm, uint32_t scale, float *result) |
|
Perform a measurement.
|
|
| float | sl_si7210_get_tamper_threshold (void) |
|
Return the tamper level configured in the chip.
|
|
| sl_status_t | sl_si7210_sleep (sl_i2cspm_t *i2cspm) |
|
Put Si7210 into Sleep (No-measurement) Mode.
|
|
| sl_status_t | sl_si7210_sleep_sltimeena (sl_i2cspm_t *i2cspm) |
|
Put the Si7210 into Sleep w/ Measurement Mode: OUTPUT is updated 200 ms.
|
|
| sl_status_t | sl_si7210_wake_up (sl_i2cspm_t *i2cspm) |
|
Wake up the Hall sensor chip.
|
|
| sl_status_t | sl_si7210_read_data (sl_i2cspm_t *i2cspm, int16_t *data) |
|
Read out Si7210 Conversion Data - 15bits.
|
|
| sl_status_t | sl_si7210_identify (sl_i2cspm_t *i2cspm, uint8_t *id, uint8_t *rev) |
|
Read out Si7210 Revision and ID.
|
|
| sl_status_t | sl_si7210_set_mt_range_200 (sl_i2cspm_t *i2cspm) |
|
Change Mag-Field scale to 200mT.
|
|
| sl_status_t | sl_si7210_read_magfield_data_and_sltimeena (sl_i2cspm_t *i2cspm, bool range200mT, int32_t *mTdata) |
|
Perform burst-conversion(4 samples), read mT-data, and put part into sltimeena-sleep mode where OUT is updated every 200 ms.
|
|
| sl_status_t | sl_si7210_read_magfield_data_and_sleep (sl_i2cspm_t *i2cspm, bool range200mT, int32_t *mTdata) |
|
Wake-up from Sleep, perform burst-conversion(4 samples), read mT-data, and put part into sleep mode (no-measurement).
|
|
Function Documentation
◆ sl_si7210_init()
| sl_status_t sl_si7210_init | ( | sl_i2cspm_t * |
i2cspm
|
) |
Does device-specific initialization for the Si7210 chip.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use.
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error SL_STATUS_INITIALIZATIONInitialization failed due to device ID mismatch
◆ sl_si7210_configure()
| sl_status_t sl_si7210_configure | ( | sl_i2cspm_t * |
i2cspm,
|
| sl_si7210_configure_t * |
config
|
||
| ) |
Configure the Si7210 chip.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use. [in] configThe structure, which contains the configuration parameters. If all fields are set to zero, the chip will revert to use default values.
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error
◆ sl_si7210_measure()
| sl_status_t sl_si7210_measure | ( | sl_i2cspm_t * |
i2cspm,
|
| uint32_t |
scale,
|
||
| float * |
result
|
||
| ) |
Perform a measurement.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use. [in] scaleDesired scale in uT [out] resultThe measured field strength value in mT
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error
◆ sl_si7210_get_tamper_threshold()
| float sl_si7210_get_tamper_threshold | ( | void |
|
) |
Return the tamper level configured in the chip.
- Returns
- The tamper level in mT
◆ sl_si7210_sleep()
| sl_status_t sl_si7210_sleep | ( | sl_i2cspm_t * |
i2cspm
|
) |
Put Si7210 into Sleep (No-measurement) Mode.
Wake-up command needs to be issued to become responsive.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use.
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error
◆ sl_si7210_sleep_sltimeena()
| sl_status_t sl_si7210_sleep_sltimeena | ( | sl_i2cspm_t * |
i2cspm
|
) |
Put the Si7210 into Sleep w/ Measurement Mode: OUTPUT is updated 200 ms.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use.
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error
◆ sl_si7210_wake_up()
| sl_status_t sl_si7210_wake_up | ( | sl_i2cspm_t * |
i2cspm
|
) |
Wake up the Hall sensor chip.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use.
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error
◆ sl_si7210_read_data()
| sl_status_t sl_si7210_read_data | ( | sl_i2cspm_t * |
i2cspm,
|
| int16_t * |
data
|
||
| ) |
Read out Si7210 Conversion Data - 15bits.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use. [out] dataThe raw magnetic field conversion data (15 bits)
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error SL_STATUS_OBJECT_READNo measurement data available
◆ sl_si7210_identify()
| sl_status_t sl_si7210_identify | ( | sl_i2cspm_t * |
i2cspm,
|
| uint8_t * |
id,
|
||
| uint8_t * |
rev
|
||
| ) |
Read out Si7210 Revision and ID.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use. [out] idSi7210 part ID [out] revSi7210 part Revision
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error
◆ sl_si7210_set_mt_range_200()
| sl_status_t sl_si7210_set_mt_range_200 | ( | sl_i2cspm_t * |
i2cspm
|
) |
Change Mag-Field scale to 200mT.
If desired, must be performed after power-up or wake-up from sleep.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use.
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error
◆ sl_si7210_read_magfield_data_and_sltimeena()
| sl_status_t sl_si7210_read_magfield_data_and_sltimeena | ( | sl_i2cspm_t * |
i2cspm,
|
| bool |
range200mT,
|
||
| int32_t * |
mTdata
|
||
| ) |
Perform burst-conversion(4 samples), read mT-data, and put part into sltimeena-sleep mode where OUT is updated every 200 ms.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use. [in] range200mTrange200mT=false : full-scale equals 20mT range200mT=true : full-scale equals 200mT [out] mTdataMag-field conversion reading, signed 32-bit integer mTdata must be divided by 1000 to get decimal value in mT units
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error SL_STATUS_OBJECT_READNo measurement data available
◆ sl_si7210_read_magfield_data_and_sleep()
| sl_status_t sl_si7210_read_magfield_data_and_sleep | ( | sl_i2cspm_t * |
i2cspm,
|
| bool |
range200mT,
|
||
| int32_t * |
mTdata
|
||
| ) |
Wake-up from Sleep, perform burst-conversion(4 samples), read mT-data, and put part into sleep mode (no-measurement).
Requires Wake-Up.
- Parameters
-
[in] i2cspmThe I2CSPM instance to use. [in] range200mTrange200mT=false : full-scale equals 20mT range200mT=true : full-scale equals 200mT [out] mTdataMag-field conversion reading, signed 32-bit integer mTdata must be divided by 1000 to get decimal value in mT units
- Return values
-
SL_STATUS_OKSuccess SL_STATUS_TRANSMITI2C transmission error SL_STATUS_OBJECT_READNo measurement data available