![]() |
ISSDK
1.7
IoT Sensing Software Development Kit
|
Lower level magnetic calibration interface. More...
Go to the source code of this file.
Data Structures | |
struct | MagBuffer |
struct | MagCalibration |
Magnetic Calibration Structure. More... | |
Macros | |
#define | F_USING_MAG 0x0002 |
Magnetic Calibration Constants | |
#define | MAGBUFFSIZEX 14 |
x dimension in magnetometer buffer (12x24 equals 288 elements) More... | |
#define | MAGBUFFSIZEY (2 * MAGBUFFSIZEX) |
y dimension in magnetometer buffer (12x24 equals 288 elements) More... | |
#define | MINMEASUREMENTS4CAL 110 |
minimum number of measurements for 4 element calibration More... | |
#define | MINMEASUREMENTS7CAL 220 |
minimum number of measurements for 7 element calibration More... | |
#define | MINMEASUREMENTS10CAL 330 |
minimum number of measurements for 10 element calibration More... | |
#define | MAXMEASUREMENTS 360 |
maximum number of measurements used for calibration More... | |
#define | CAL_INTERVAL_SECS 300 |
300s or 5min interval for regular calibration checks More... | |
#define | MINBFITUT 10.0F |
minimum acceptable geomagnetic field B (uT) for valid calibration More... | |
#define | MAXBFITUT 90.0F |
maximum acceptable geomagnetic field B (uT) for valid calibration More... | |
#define | FITERRORAGINGSECS 86400.0F |
24 hours: time (s) for fit error to increase (age) by e=2.718 More... | |
#define | MESHDELTACOUNTS 50 |
magnetic buffer mesh spacing in counts (here 5uT) More... | |
#define | DEFAULTB 50.0F |
default geomagnetic field (uT) More... | |
Functions | |
Function prototypes for functions in magnetic.c | |
These functions comprise the core of the magnetic calibration features of the library. Parameter descriptions are not included here, as details are provided in sensor_fusion.h. | |
void | fInitializeMagCalibration (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer) |
void | iUpdateMagBuffer (struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag, int32_t loopcounter) |
void | fInvertMagCal (struct MagSensor *pthisMag, struct MagCalibration *pthisMagCal) |
void | fRunMagCalibration (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag, int32_t loopcounter) |
void | fUpdateMagCalibration4 (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag) |
void | fUpdateMagCalibration7 (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag) |
void | fUpdateMagCalibration10 (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag) |
void | fUpdateMagCalibration4Slice (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag) |
void | fUpdateMagCalibration7Slice (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag) |
void | fUpdateMagCalibration10Slice (struct MagCalibration *pthisMagCal, struct MagBuffer *pthisMagBuffer, struct MagSensor *pthisMag) |
Lower level magnetic calibration interface.
Many developers can utilize the NXP Sensor Fusion Library without ever making any adjustment to the lower level magnetic calibration functions defined in this file.
Definition in file magnetic.h.
#define CAL_INTERVAL_SECS 300 |
300s or 5min interval for regular calibration checks
Definition at line 59 of file magnetic.h.
Referenced by fRunMagCalibration().
#define DEFAULTB 50.0F |
default geomagnetic field (uT)
Definition at line 64 of file magnetic.h.
Referenced by fComputeMagCalibration10(), fComputeMagCalibration4(), fComputeMagCalibration7(), and fInitializeMagCalibration().
#define F_USING_MAG 0x0002 |
Definition at line 47 of file magnetic.h.
Referenced by CreateAndSendPackets(), FXOS8700_Idle(), FXOS8700_Init(), FXOS8700_ReadMagData(), initSensorFusionGlobals(), MAG3110_Idle(), MAG3110_Init(), and MAG3110_Read().
#define FITERRORAGINGSECS 86400.0F |
24 hours: time (s) for fit error to increase (age) by e=2.718
Definition at line 62 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MAGBUFFSIZEX 14 |
x dimension in magnetometer buffer (12x24 equals 288 elements)
Definition at line 53 of file magnetic.h.
Referenced by CreateAndSendPackets(), fComputeMagCalibration10(), fComputeMagCalibration4(), fComputeMagCalibration7(), fInitializeMagCalibration(), fRunMagCalibration(), fUpdateMagCalibration10Slice(), fUpdateMagCalibration4Slice(), fUpdateMagCalibration7Slice(), and iUpdateMagBuffer().
#define MAGBUFFSIZEY (2 * MAGBUFFSIZEX) |
y dimension in magnetometer buffer (12x24 equals 288 elements)
Definition at line 54 of file magnetic.h.
Referenced by CreateAndSendPackets(), fComputeMagCalibration10(), fComputeMagCalibration4(), fComputeMagCalibration7(), fInitializeMagCalibration(), fRunMagCalibration(), fUpdateMagCalibration10Slice(), fUpdateMagCalibration4Slice(), fUpdateMagCalibration7Slice(), and iUpdateMagBuffer().
#define MAXBFITUT 90.0F |
maximum acceptable geomagnetic field B (uT) for valid calibration
Definition at line 61 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MAXMEASUREMENTS 360 |
maximum number of measurements used for calibration
Definition at line 58 of file magnetic.h.
Referenced by iUpdateMagBuffer().
#define MESHDELTACOUNTS 50 |
magnetic buffer mesh spacing in counts (here 5uT)
Definition at line 63 of file magnetic.h.
Referenced by iUpdateMagBuffer().
#define MINBFITUT 10.0F |
minimum acceptable geomagnetic field B (uT) for valid calibration
Definition at line 60 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MINMEASUREMENTS10CAL 330 |
minimum number of measurements for 10 element calibration
Definition at line 57 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MINMEASUREMENTS4CAL 110 |
minimum number of measurements for 4 element calibration
Definition at line 55 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MINMEASUREMENTS7CAL 220 |
minimum number of measurements for 7 element calibration
Definition at line 56 of file magnetic.h.
Referenced by fRunMagCalibration().
void fInitializeMagCalibration | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer | ||
) |
Definition at line 50 of file magnetic.c.
References CALIBRATION_NVM_ADDR, CHX, CHY, CHZ, DEFAULTB, f3x3matrixAeqI(), MagCalibration::fB, MagCalibration::fBSq, MagCalibration::fFitErrorpc, MagCalibration::finvW, MagCalibration::fV, MagCalibration::i10ElementSolverTried, MagCalibration::i4ElementSolverTried, MagCalibration::i7ElementSolverTried, MagCalibration::iCalInProgress, MagCalibration::iInitiateMagCal, MagBuffer::iMagBufferCount, MagCalibration::iMagBufferReadOnly, MagBuffer::index, MagCalibration::iNewCalibrationAvailable, MagCalibration::iValidMagCal, MAG_NVM_OFFSET, MAGBUFFSIZEX, MAGBUFFSIZEY, PI, and MagBuffer::tanarray.
Referenced by DecodeCommandBytes(), and initializeFusionEngine().
void fInvertMagCal | ( | struct MagSensor * | pthisMag, |
struct MagCalibration * | pthisMagCal | ||
) |
Definition at line 311 of file magnetic.c.
References CHX, CHY, CHZ, MagSensor::fBc, MagSensor::fBs, MagSensor::fCountsPeruT, MagCalibration::finvW, MagCalibration::fV, and MagSensor::iBc.
Referenced by processMagData().
void fRunMagCalibration | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer, | ||
struct MagSensor * | pthisMag, | ||
int32_t | loopcounter | ||
) |
Definition at line 339 of file magnetic.c.
References CAL_INTERVAL_SECS, CHX, CHZ, MagCalibration::fB, MagCalibration::fBSq, MagCalibration::fFitErrorpc, MagCalibration::finvW, FITERRORAGINGSECS, MagCalibration::ftrB, MagCalibration::ftrFitErrorpc, MagCalibration::ftrinvW, MagCalibration::ftrV, fUpdateMagCalibration10Slice(), fUpdateMagCalibration4Slice(), fUpdateMagCalibration7Slice(), FUSION_HZ, MagCalibration::fV, MagCalibration::i10ElementSolverTried, MagCalibration::i4ElementSolverTried, MagCalibration::i7ElementSolverTried, MagCalibration::iCalInProgress, MagCalibration::iInitiateMagCal, MagBuffer::iMagBufferCount, MagBuffer::index, MagCalibration::iNewCalibrationAvailable, MagCalibration::iValidMagCal, MAGBUFFSIZEX, MAGBUFFSIZEY, MAXBFITUT, MINBFITUT, MINMEASUREMENTS10CAL, MINMEASUREMENTS4CAL, and MINMEASUREMENTS7CAL.
Referenced by processMagData().
void fUpdateMagCalibration10 | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer, | ||
struct MagSensor * | pthisMag | ||
) |
void fUpdateMagCalibration10Slice | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer, | ||
struct MagSensor * | pthisMag | ||
) |
Definition at line 987 of file magnetic.c.
References CHX, CHY, CHZ, f3x3matrixAeqAxScalar(), f3x3matrixAeqInvSymB(), f3x3matrixAeqMinusA(), f3x3matrixDetA(), MagCalibration::fA, fComputeEigSlice(), MagCalibration::finvA, MagCalibration::fmatA, MagCalibration::fmatB, MagCalibration::ftrB, MagCalibration::ftrFitErrorpc, MagCalibration::ftrinvW, MagCalibration::ftrV, MagSensor::fuTPerCount, MagCalibration::fvecA, MagBuffer::iBs, MagCalibration::iCalInProgress, MagCalibration::iInitiateMagCal, MagBuffer::iMagBufferCount, MagCalibration::iMagBufferReadOnly, MagCalibration::iMeanBs, MagBuffer::index, MagCalibration::iNewCalibrationAvailable, MagCalibration::iSumBs, MagCalibration::itimeslice, MAGBUFFSIZEX, MAGBUFFSIZEY, MATRIX_10_SIZE, and ONETHIRD.
Referenced by fRunMagCalibration().
void fUpdateMagCalibration4 | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer, | ||
struct MagSensor * | pthisMag | ||
) |
void fUpdateMagCalibration4Slice | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer, | ||
struct MagSensor * | pthisMag | ||
) |
Definition at line 469 of file magnetic.c.
References CHX, CHY, CHZ, f3x3matrixAeqI(), MagCalibration::fmatA, MagCalibration::fmatB, fmatrixAeqInvA(), MagCalibration::ftrB, MagCalibration::ftrFitErrorpc, MagCalibration::ftrinvW, MagCalibration::ftrV, MagSensor::fuTPerCount, MagCalibration::fvecA, MagCalibration::fvecB, MagCalibration::fYTY, MagBuffer::iBs, MagCalibration::iCalInProgress, MagCalibration::iInitiateMagCal, MagBuffer::iMagBufferCount, MagCalibration::iMagBufferReadOnly, MagCalibration::iMeanBs, MagBuffer::index, MagCalibration::iNewCalibrationAvailable, MagCalibration::iSumBs, MagCalibration::itimeslice, MAGBUFFSIZEX, and MAGBUFFSIZEY.
Referenced by fRunMagCalibration().
void fUpdateMagCalibration7 | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer, | ||
struct MagSensor * | pthisMag | ||
) |
void fUpdateMagCalibration7Slice | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer, | ||
struct MagSensor * | pthisMag | ||
) |
Definition at line 700 of file magnetic.c.
References CHX, CHY, CHZ, MagCalibration::fA, fComputeEigSlice(), MagCalibration::fmatA, MagCalibration::fmatB, MagCalibration::ftrB, MagCalibration::ftrFitErrorpc, MagCalibration::ftrinvW, MagCalibration::ftrV, MagSensor::fuTPerCount, MagCalibration::fvecA, MagBuffer::iBs, MagCalibration::iCalInProgress, MagCalibration::iInitiateMagCal, MagBuffer::iMagBufferCount, MagCalibration::iMagBufferReadOnly, MagCalibration::iMeanBs, MagBuffer::index, MagCalibration::iNewCalibrationAvailable, MagCalibration::iSumBs, MagCalibration::itimeslice, MAGBUFFSIZEX, MAGBUFFSIZEY, MATRIX_7_SIZE, and ONETHIRD.
Referenced by fRunMagCalibration().
void iUpdateMagBuffer | ( | struct MagBuffer * | pthisMagBuffer, |
struct MagSensor * | pthisMag, | ||
int32_t | loopcounter | ||
) |
Definition at line 117 of file magnetic.c.
References CHX, CHY, CHZ, MagSensor::iBc, MagBuffer::iBs, MagSensor::iBs, MagBuffer::iMagBufferCount, MagBuffer::index, MAGBUFFSIZEX, MAGBUFFSIZEY, MAXMEASUREMENTS, MESHDELTACOUNTS, and MagBuffer::tanarray.
Referenced by processMagData().