Si72xxKit Drivers
Detailed Description
Silicon Labs Si72xx Magnetic Hall Effect Sensor I2C driver.
| Macros | |
| #define | SI7200_ADDR_0 (0x30 << 1) | 
| #define | SI7200_ADDR_1 (0x31 << 1) | 
| #define | SI7200_ADDR_2 (0x32 << 1) | 
| #define | SI7200_ADDR_3 (0x33 << 1) | 
| #define | SI72XX_A0 0xCA | 
| #define | SI72XX_A1 0xCB | 
| #define | SI72XX_A2 0xCC | 
| #define | SI72XX_A3 0xCE | 
| #define | SI72XX_A4 0xCF | 
| #define | SI72XX_A5 0xD0 | 
| #define | SI72XX_ARAUTOINC 0xC5 | 
| #define | SI72XX_CTRL1 0xC6 | 
| #define | SI72XX_CTRL2 0xC7 | 
| #define | SI72XX_CTRL3 0xC9 | 
| #define | SI72XX_CTRL4 0xCD | 
| #define | SI72XX_DSPSIGL 0xC2 | 
| #define | SI72XX_DSPSIGM 0xC1 | 
| #define | SI72XX_DSPSIGSEL 0xC3 | 
| #define | SI72XX_ERROR_BUSY 0xfe | 
| #define | SI72XX_ERROR_NODATA 0xfd | 
| #define | SI72XX_HREVID 0xC0 | 
| #define | SI72XX_OTP_200MT_ADDR 0x27 | 
| #define | SI72XX_OTP_20MT_ADDR 0x21 | 
| #define | SI72XX_OTP_ADDR 0xE1 | 
| #define | SI72XX_OTP_CTRL 0xE3 | 
| #define | SI72XX_OTP_DATA 0xE2 | 
| #define | SI72XX_POWER_CTRL 0xC4 | 
| #define | SI72XX_SLTIME 0xC8 | 
| #define | SI72XX_TM_FG 0xE4 | 
| Enumerations | |
| enum | Si72xxFieldScale_t
         
         { SI7210_20MT , SI7210_200MT } | 
| enum | Si72xxSleepMode_t
         
         { SI72XX_SLEEP_MODE , SI72XX_SLTIMEENA_MODE } | 
| Functions | |
| int32_t | Si72xx_ConvertDataCodesToMagneticField ( Si72xxFieldScale_t fieldScale, int16_t dataCode) | 
| Convert Si7210 I2C Data Readings to Magnetic Field in microTeslas. | |
| uint32_t | Si72xx_EnterLatchMode ( I2C_TypeDef *i2c, uint8_t addr) | 
| Wake-up Si72xx, and configures output for Latch mode. Switch point = 0mT w/ 0.2mT hysteresis. | |
| uint32_t | Si72xx_EnterSleepMode ( I2C_TypeDef *i2c, uint8_t addr, Si72xxSleepMode_t sleepMode) | 
| Wake-up Si72xx, and set sleep-mode option. If Si72xx is in a sleep-mode, it requires a wake-up command first. Useful for placing Si72xx in SLTIMEENA mode from SLEEP mode, or vice-versa. | |
| uint32_t | Si72xx_FromIdle_GoToSleep ( I2C_TypeDef *i2c, uint8_t addr) | 
| Puts Si72xx into Sleep mode (lowest power).. Command can only be issued if Si72xx is idle mode. | |
| uint32_t | Si72xx_FromIdle_GoToSltimeena ( I2C_TypeDef *i2c, uint8_t addr) | 
| Puts Si72xx into Sleep-Timer-Enable mode. Si72xx periodically wakes-up, samples the magnetic field, updates the output, and goes back to sleep-timer-enabled mode. Command can only be issued if Si72xx is idle mode. | |
| uint32_t | Si72xx_IdentifyAndSleep ( I2C_TypeDef *i2c, uint8_t addr, uint8_t *partId, uint8_t *partRev) | 
| uint32_t | Si72xx_Read_MagField_Data ( I2C_TypeDef *i2c, uint8_t addr, int16_t *magData) | 
| Read out Si72xx Magnetic Field Conversion Data Command can only be issued if Si72xx is idle mode. | |
| static uint32_t | Si72xx_Read_OTP ( I2C_TypeDef *i2c, uint8_t addr, uint8_t otpAddr, uint8_t *otpData) | 
| Read Si72xx OTP Data Command can only be issued if Si72xx is idle mode. | |
| uint32_t | Si72xx_Read_Register ( I2C_TypeDef *i2c, uint8_t addr, uint8_t reg, uint8_t *data) | 
| Reads register from the Si72xx sensor. Command can only be issued if Si72xx is idle mode. | |
| uint32_t | Si72xx_ReadCorrectedTempAndSleep ( I2C_TypeDef *i2c, uint8_t addr, int16_t offsetData, int16_t gainData, int32_t *correctedTemp) | 
| Wakes up SI72xx, performs a temperature conversion, and places sensor back to sleep. Temperature calculation is performed using compensation data. | |
| uint32_t | Si72xx_ReadMagFieldDataAndSleep ( I2C_TypeDef *i2c, uint8_t addr, Si72xxFieldScale_t mTScale, Si72xxSleepMode_t sleepMode, int16_t *magFieldData) | 
| Wake-up SI72xx, performs a magnetic-field conversion with FIR, and places Si72xx back to sleep-mode. | |
| uint32_t | Si72xx_ReadTempCorrectionDataAndSleep ( I2C_TypeDef *i2c, uint8_t addr, int16_t *offsetValue, int16_t *gainValue) | 
| Wakes up SI72xx, performs temperature conversion and places Si72xx into SI72XX_SLEEP sleep-mode. | |
| uint32_t | Si72xx_ReadTemperatureAndSleep ( I2C_TypeDef *i2c, uint8_t addr, int32_t *rawTemp) | 
| Wakes up SI72xx, performs temperature conversion and places Si72xx into SI72XX_SLEEP sleep-mode. | |
| uint32_t | Si72xx_ReadVariantAndSleep ( I2C_TypeDef *i2c, uint8_t addr, uint8_t *basePn, uint8_t *pnVariant) | 
| static uint32_t | Si72xx_Set_mT_Range ( I2C_TypeDef *i2c, uint8_t addr, Si72xxFieldScale_t mTScale) | 
| Set magnetic-field output range, 20mT or 200mT full-scale Command can only be issued if Si72xx is idle mode. | |
| uint32_t | Si72xx_WakeUpAndIdle ( I2C_TypeDef *i2c, uint8_t addr) | 
| Wake-up Si72xx and places sensor in idle-mode. | |
| uint32_t | Si72xx_Write_Register ( I2C_TypeDef *i2c, uint8_t addr, uint8_t reg, uint8_t data) | 
| Writes register in the Si72xx sensor. Command can only be issued if Si72xx is idle mode. | |
Macro Definition Documentation
| #define SI7200_ADDR_0 (0x30 << 1) | 
I2C device address for Si72xx
        Definition at line
        
         40
        
        of file
        
         si72xx.h
        
        .
       
| #define SI72XX_HREVID 0xC0 | 
I2C registers for Si72xx
        Definition at line
        
         46
        
        of file
        
         si72xx.h
        
        .
       
Enumeration Type Documentation
| enum Si72xxFieldScale_t | 
Si72xx magnetic field full-scales
        Definition at line
        
         78
        
        of file
        
         si72xx.h
        
        .
       
| enum Si72xxSleepMode_t | 
Si72xx sleep modes
        Definition at line
        
         84
        
        of file
        
         si72xx.h
        
        .
       
Function Documentation
| int32_t Si72xx_ConvertDataCodesToMagneticField | ( | Si72xxFieldScale_t | 
            fieldScale,
            | 
| int16_t | 
            dataCode
            | ||
| ) | 
Convert Si7210 I2C Data Readings to Magnetic Field in microTeslas.
- Parameters
- 
         [in] fieldScale20mT or 200mT full-scale magnetic field range [in] dataCodessigned 15bit value read from hall sensor after magnetic field conversion 
- Returns
- microTeslas
        Definition at line
        
         443
        
        of file
        
         si72xx.c
        
        .
       
| uint32_t Si72xx_EnterLatchMode | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr
            | ||
| ) | 
Wake-up Si72xx, and configures output for Latch mode. Switch point = 0mT w/ 0.2mT hysteresis.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor 
        Definition at line
        
         495
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_Read_Register() , Si72xx_WakeUpAndIdle() , and Si72xx_Write_Register() .
| uint32_t Si72xx_EnterSleepMode | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| Si72xxSleepMode_t | 
            sleepMode
            | ||
| ) | 
Wake-up Si72xx, and set sleep-mode option. If Si72xx is in a sleep-mode, it requires a wake-up command first. Useful for placing Si72xx in SLTIMEENA mode from SLEEP mode, or vice-versa.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [in] sleepModeSI72XX_SLEEP: Puts Si72xx into sleep mode. Lowest power & doesn't update SI72XX_SLTIMEENA: Si72xx into sltimeena mode. Updates output periodically 
        Definition at line
        
         472
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_FromIdle_GoToSleep() , Si72xx_FromIdle_GoToSltimeena() , and Si72xx_WakeUpAndIdle() .
| uint32_t Si72xx_FromIdle_GoToSleep | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr
            | ||
| ) | 
Puts Si72xx into Sleep mode (lowest power).. Command can only be issued if Si72xx is idle mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor. 
        Definition at line
        
         225
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_Read_Register() , and Si72xx_Write_Register() .
Referenced by Si72xx_EnterSleepMode() , Si72xx_ReadCorrectedTempAndSleep() , Si72xx_ReadMagFieldDataAndSleep() , Si72xx_ReadTempCorrectionDataAndSleep() , and Si72xx_ReadTemperatureAndSleep() .
| uint32_t Si72xx_FromIdle_GoToSltimeena | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr
            | ||
| ) | 
Puts Si72xx into Sleep-Timer-Enable mode. Si72xx periodically wakes-up, samples the magnetic field, updates the output, and goes back to sleep-timer-enabled mode. Command can only be issued if Si72xx is idle mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor. 
        Definition at line
        
         250
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_Read_Register() , and Si72xx_Write_Register() .
Referenced by Si72xx_EnterSleepMode() , and Si72xx_ReadMagFieldDataAndSleep() .
| uint32_t Si72xx_Read_MagField_Data | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| int16_t * | 
            magData
            | ||
| ) | 
Read out Si72xx Magnetic Field Conversion Data Command can only be issued if Si72xx is idle mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [out] magDataMag-field conversion reading, signed 16-bit integer 
        Definition at line
        
         191
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_Read_Register() .
Referenced by Si72xx_ReadMagFieldDataAndSleep() .
| 
 | static | 
Read Si72xx OTP Data Command can only be issued if Si72xx is idle mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [in] otpAddrThe OTB Byte address of the coefficients [out] dataOTP data read out 
        Definition at line
        
         312
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_Read_Register() , and Si72xx_Write_Register() .
Referenced by Si72xx_ReadTempCorrectionDataAndSleep() , and Si72xx_Set_mT_Range() .
| uint32_t Si72xx_Read_Register | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| uint8_t | 
            reg,
            | ||
| uint8_t * | 
            data
            | ||
| ) | 
Reads register from the Si72xx sensor. Command can only be issued if Si72xx is idle mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor. [out] dataThe data read from the sensor. [in] regThe register address to read from in the sensor. 
- Returns
- Returns number of bytes read on success. Otherwise returns error codes based on the I2CSPM.
        Definition at line
        
         110
        
        of file
        
         si72xx.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 Si72xx_EnterLatchMode() , Si72xx_FromIdle_GoToSleep() , Si72xx_FromIdle_GoToSltimeena() , Si72xx_Read_MagField_Data() , Si72xx_Read_OTP() , Si72xx_ReadCorrectedTempAndSleep() , Si72xx_ReadMagFieldDataAndSleep() , Si72xx_ReadTempCorrectionDataAndSleep() , and Si72xx_ReadTemperatureAndSleep() .
| uint32_t Si72xx_ReadCorrectedTempAndSleep | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| int16_t | 
            offsetData,
            | ||
| int16_t | 
            gainData,
            | ||
| int32_t * | 
            correctedTemp
            | ||
| ) | 
Wakes up SI72xx, performs a temperature conversion, and places sensor back to sleep. Temperature calculation is performed using compensation data.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [out] tempTemperature measurement in millidegree Celsius [in] offsetDataOffset correction data [in] gainDataGain correction data 
        Definition at line
        
         659
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_FromIdle_GoToSleep() , Si72xx_Read_Register() , Si72xx_WakeUpAndIdle() , and Si72xx_Write_Register() .
| uint32_t Si72xx_ReadMagFieldDataAndSleep | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| Si72xxFieldScale_t | 
            mTScale,
            | ||
| Si72xxSleepMode_t | 
            sleepMode,
            | ||
| int16_t * | 
            magFieldData
            | ||
| ) | 
Wake-up SI72xx, performs a magnetic-field conversion with FIR, and places Si72xx back to sleep-mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [in] mTScalemTScale= Si7210_20MT: 20mT full-scale magnetic-field range mTScale= Si7210_200MT: 200mT full-scale magnetic-field range [in] sleepModeSI72XX_SLEEP: Sleep mode. Lowest power & doesn't update output SI72XX_SLTIMEENA: Sleep-Timer-Enabled mode. Updates output periodically [out] magFieldDataMagnetic-field conversion reading, signed 16-bit integer 
        Definition at line
        
         389
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_FromIdle_GoToSleep() , Si72xx_FromIdle_GoToSltimeena() , Si72xx_Read_MagField_Data() , Si72xx_Read_Register() , Si72xx_Set_mT_Range() , Si72xx_WakeUpAndIdle() , and Si72xx_Write_Register() .
| uint32_t Si72xx_ReadTempCorrectionDataAndSleep | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| int16_t * | 
            offsetValue,
            | ||
| int16_t * | 
            gainValue
            | ||
| ) | 
Wakes up SI72xx, performs temperature conversion and places Si72xx into SI72XX_SLEEP sleep-mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [out] offsetValueTemperature offset correction [out] gainValueTemperature gain correction 
        Definition at line
        
         611
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_FromIdle_GoToSleep() , Si72xx_Read_OTP() , Si72xx_Read_Register() , Si72xx_WakeUpAndIdle() , and Si72xx_Write_Register() .
| uint32_t Si72xx_ReadTemperatureAndSleep | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| int32_t * | 
            rawTemp
            | ||
| ) | 
Wakes up SI72xx, performs temperature conversion and places Si72xx into SI72XX_SLEEP sleep-mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [out] tempTemperature measurement in millidegree Celsius 
        Definition at line
        
         541
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_FromIdle_GoToSleep() , Si72xx_Read_Register() , Si72xx_WakeUpAndIdle() , and Si72xx_Write_Register() .
| 
 | static | 
Set magnetic-field output range, 20mT or 200mT full-scale Command can only be issued if Si72xx is idle mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor [in] mTScale20mT or 200mT 
        Definition at line
        
         344
        
        of file
        
         si72xx.c
        
        .
       
References Si72xx_Read_OTP() , and Si72xx_Write_Register() .
Referenced by Si72xx_ReadMagFieldDataAndSleep() .
| uint32_t Si72xx_WakeUpAndIdle | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr
            | ||
| ) | 
Wake-up Si72xx and places sensor in idle-mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor. 
- Returns
- Returns zero on success. Otherwise returns error codes based on the I2CCSPM
        Definition at line
        
         277
        
        of file
        
         si72xx.c
        
        .
       
References I2C_TransferSeq_TypeDef::addr , I2C_TransferSeq_TypeDef::buf , I2C_TransferSeq_TypeDef::data , I2C_TransferSeq_TypeDef::flags , I2C_FLAG_WRITE , I2CSPM_Transfer() , i2cTransferDone , and I2C_TransferSeq_TypeDef::len .
Referenced by Si72xx_EnterLatchMode() , Si72xx_EnterSleepMode() , Si72xx_ReadCorrectedTempAndSleep() , Si72xx_ReadMagFieldDataAndSleep() , Si72xx_ReadTempCorrectionDataAndSleep() , and Si72xx_ReadTemperatureAndSleep() .
| uint32_t Si72xx_Write_Register | ( | I2C_TypeDef * | 
            i2c,
            | 
| uint8_t | 
            addr,
            | ||
| uint8_t | 
            reg,
            | ||
| uint8_t | 
            data
            | ||
| ) | 
Writes register in the Si72xx sensor. Command can only be issued if Si72xx is idle mode.
- Parameters
- 
         [in] i2cThe I2C peripheral to use (not used). [in] addrThe I2C address of the sensor. [in] dataThe data to write to the sensor. [in] regThe register address to write to in the sensor. 
- Returns
- Returns zero on success. Otherwise returns error codes based on the I2CCSPM
        Definition at line
        
         153
        
        of file
        
         si72xx.c
        
        .
       
References I2C_TransferSeq_TypeDef::addr , I2C_TransferSeq_TypeDef::buf , I2C_TransferSeq_TypeDef::data , I2C_TransferSeq_TypeDef::flags , I2C_FLAG_WRITE , I2CSPM_Transfer() , i2cTransferDone , and I2C_TransferSeq_TypeDef::len .
Referenced by Si72xx_EnterLatchMode() , Si72xx_FromIdle_GoToSleep() , Si72xx_FromIdle_GoToSltimeena() , Si72xx_Read_OTP() , Si72xx_ReadCorrectedTempAndSleep() , Si72xx_ReadMagFieldDataAndSleep() , Si72xx_ReadTempCorrectionDataAndSleep() , Si72xx_ReadTemperatureAndSleep() , and Si72xx_Set_mT_Range() .