We would like to be able to read the magnetometer die temperature, but are not having much luck. It seems to only send back all zeros or all ones. We did see the one post where someone said it had to be out of standby mode for the values to change, and I think we are not in standby because we are constantly reading max x,y,z and control registers just fine. Originally we were performing four I2C read cycles as follows:
- read two bytes starting at address 0x01 for 16 bit Mag x.
- read two bytes starting at address 0x03 for 16 bit Mag y.
- read two bytes starting at address 0x05 for 16 bit Mag z.
- read two bytes starting at address 0x10 for Ctl Reg 1,2.
All of that was working fine, so we changed the last cycle to read two bytes from address 0x0F in the hope that we would read the die temp and then control register 1. That is when we see all zeros for the die temp and a correct value for control register 1 and the Mag values.
We also saw the errata where someone indicated that the value might not be calibrated (or something like that), which is fine with us - we can do that in software by calibrating it with a known temperature source in an thermal cycle oven. But, it is pretty hard to calibrate when we just read all zeros or all ones. We would like to solve this problem as soon as possible - either determine how to read it correctly, or if it is just not a reliable way to read the temp of the device we can figure out an alternate way of measuring the temp near that device.