We do some initial validation of LIS3MDL and experienced a problem when we do a temperature cycle (20 to 80 C in 20 minutes)
in an oven with 7 sensors inside an no external magnetic field present.
It seems like the sensors get an offset in the output. We have tried to enable the TEMP_EN bit, but the output is more or less the same. In fact, the output does not return to "normal" when the temperature returned to room temperature.
Do you have an idea how to fix this problem?
In LIS3MDL please consider that embedded temperature compensation can be used to reduce the thermal drift of the sensitivity, while it is not able to compensate the thermal drift of the offset. About offset thermal drift, what they see is correct, it can be up to +/-8mG/°C (linear dependence).
LIS3MDL is TMR sensor where only set pulses mechanism is present, that's why you can not compensate thermal offset drift. New products like LSM303AGR are AMR technology sensors and in those set/reset mechanism is available which is able to remove offset thermal drift. This means that the difference is that in AMR we are able to drive current pulses in two opposite directions alternatively (which is used to cancel offset), while in TMR the current pulses can be driven just in one direction.
(extracted from ST Online Support)