MAG3110 Temperature Reading

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MAG3110 Temperature Reading

1,355 Views
gdg
Contributor I

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.

Labels (1)
Tags (3)
0 Kudos
2 Replies

931 Views
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Gary,

You are right that the temperature data in the DIE_TEMP register (0x0F) is updated on every measurement cycle (either continuous or triggered) and that the temperature offset is not trimmed, so the readings are usually way off. Simple offset calibration at a known temperature is needed for a precise absolute measurement.

What surprises me is that you are reading only all zeros or all ones from the DIE_TEMP register. The MAG3110FC on my FRDM-FXS-MULTI-B board sent back 0xFA at room temperature and after exposing it to the outside temperature (10°F), the returned value started to decline slowly (0xFA, 0xF9, 0xF8 etc.) which is correct.

How many parts have you tested so far and on how many of them you read all zeros or all ones only? Does this value really remain the same even if you change the temperature significantly?


Regards,

Tomas


PS: If my answer helps to solve your question, please mark it as "Correct" or “Helpful”. Thank you.

0 Kudos

931 Views
gdg
Contributor I

Hi Tomas,

We have only been testing our first unit, but we do have a few more that we can try to see if it is unique to that part.  We can also try to heat it a bit and see if we get a response,  We were just surprised at room temperature that we were not getting anything.

Thanks for your feedback!

Gary

0 Kudos