Si72xxKit Drivers

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.
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)
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 38 of file si72xx.h .

#define SI72XX_HREVID   0xC0

I2C registers for Si72xx

Definition at line 44 of file si72xx.h .

Enumeration Type Documentation

Si72xx magnetic field full-scales

Definition at line 76 of file si72xx.h .

Si72xx sleep modes

Definition at line 82 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] fieldScale 20mT or 200mT full-scale magnetic field range
[in] dataCodes signed 15bit value read from hall sensor after magnetic field conversion
Returns
microTeslas

Definition at line 429 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor

Definition at line 481 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor
[in] sleepMode SI72XX_SLEEP: Puts Si72xx into sleep mode. Lowest power & doesn't update SI72XX_SLTIMEENA: Si72xx into sltimeena mode. Updates output periodically

Definition at line 458 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor.

Definition at line 211 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor.

Definition at line 236 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor
[out] magData Mag-field conversion reading, signed 16-bit integer

Definition at line 177 of file si72xx.c .

References Si72xx_Read_Register() .

Referenced by Si72xx_ReadMagFieldDataAndSleep() .

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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor.
[out] data The data read from the sensor.
[in] reg The 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 96 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor
[out] temp Temperature measurement in millidegree Celsius
[in] offsetData Offset correction data
[in] gainData Gain correction data

Definition at line 645 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor
[in] mTScale mTScale= Si7210_20MT: 20mT full-scale magnetic-field range mTScale= Si7210_200MT: 200mT full-scale magnetic-field range
[in] sleepMode SI72XX_SLEEP: Sleep mode. Lowest power & doesn't update output SI72XX_SLTIMEENA: Sleep-Timer-Enabled mode. Updates output periodically
[out] magFieldData Magnetic-field conversion reading, signed 16-bit integer

Definition at line 375 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor
[out] offsetValue Temperature offset correction
[out] gainValue Temperature gain correction

Definition at line 597 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor
[out] temp Temperature measurement in millidegree Celsius

Definition at line 527 of file si72xx.c .

References Si72xx_FromIdle_GoToSleep() , Si72xx_Read_Register() , Si72xx_WakeUpAndIdle() , and Si72xx_Write_Register() .

uint32_t Si72xx_WakeUpAndIdle ( I2C_TypeDef * i2c,
uint8_t addr
)

Wake-up Si72xx and places sensor in idle-mode.

Parameters
[in] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor.
Returns
Returns zero on success. Otherwise returns error codes based on the I2CCSPM

Definition at line 263 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] i2c The I2C peripheral to use (not used).
[in] addr The I2C address of the sensor.
[in] data The data to write to the sensor.
[in] reg The register address to write to in the sensor.
Returns
Returns zero on success. Otherwise returns error codes based on the I2CCSPM

Definition at line 139 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() .