![]() |
ISSDK
1.8
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 33 of file magnetic.h.
Referenced by fRunMagCalibration().
#define DEFAULTB 50.0F |
default geomagnetic field (uT)
Definition at line 38 of file magnetic.h.
Referenced by fComputeMagCalibration10(), fComputeMagCalibration4(), fComputeMagCalibration7(), and fInitializeMagCalibration().
#define F_USING_MAG 0x0002 |
Definition at line 21 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 36 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MAGBUFFSIZEX 14 |
x dimension in magnetometer buffer (12x24 equals 288 elements)
Definition at line 27 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 28 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 35 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MAXMEASUREMENTS 360 |
maximum number of measurements used for calibration
Definition at line 32 of file magnetic.h.
Referenced by iUpdateMagBuffer().
#define MESHDELTACOUNTS 50 |
magnetic buffer mesh spacing in counts (here 5uT)
Definition at line 37 of file magnetic.h.
Referenced by iUpdateMagBuffer().
#define MINBFITUT 10.0F |
minimum acceptable geomagnetic field B (uT) for valid calibration
Definition at line 34 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MINMEASUREMENTS10CAL 330 |
minimum number of measurements for 10 element calibration
Definition at line 31 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MINMEASUREMENTS4CAL 110 |
minimum number of measurements for 4 element calibration
Definition at line 29 of file magnetic.h.
Referenced by fRunMagCalibration().
#define MINMEASUREMENTS7CAL 220 |
minimum number of measurements for 7 element calibration
Definition at line 30 of file magnetic.h.
Referenced by fRunMagCalibration().
void fInitializeMagCalibration | ( | struct MagCalibration * | pthisMagCal, |
struct MagBuffer * | pthisMagBuffer | ||
) |
Definition at line 24 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 285 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 313 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 961 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 443 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 674 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 91 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().