I need firmware driver code for Compass FXOS8700CQ. Can some one please help to get heading / compass values

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

I need firmware driver code for Compass FXOS8700CQ. Can some one please help to get heading / compass values

1,885 Views
naren4uever
Contributor I

I need to get heading /compass values varies between 0 to 360 to differ from North. Please help to get the angles.

Labels (1)
Tags (1)
0 Kudos
5 Replies

987 Views
michaelestanley
NXP Employee
NXP Employee

For eCompass, you need more than just a driver.  You need magnetic calibration software and the tilt-compensation algorithm.  Both are included in the NXP sensor fusion library.  Depending on your MCU, there are two options.  For FRDM-K64F and FRDM-K22F development boards, use the Version 7.0 sensor fusion kit, which is part of the ISSDK component of the Kinetis SDK.  That can be generated and downloaded from Welcome to MCUXpresso | MCUXpresso Config Tools .

FRDM-KL25Z/KL26Z/KL46Z and FRDM-K20D50M boards are supported only via the Version 5.00 software available at http://www.nxp.com/sensorfusion.

Both kits come with full documentation for the sensor fusion algorithms.

0 Kudos

987 Views
naren4uever
Contributor I

Thanks Mike Stanley, I have to design the generic way to implement FXOS8700 as Compass to interface with other micro controllers. I am getting Compass value in the absence of External field/iron material and without tilt. But compass angle is varies when External field induced / tilt the compass. Can you please help to minimize the errors.

-Thanks

Narendra

0 Kudos

987 Views
michaelestanley
NXP Employee
NXP Employee

Narendra,

Section 6 of Application Note AN5021 describes the math behind an eCompass.   It is contained as part of the V7.00 sensor fusion kit I mentioned earlier.  AN4248 and AN4246 are also applicable and can be located by searching the NXP web site for "eCompass".

I will note that excluding the device drivers, the code in the sensor fusion kit is fairly portable.  And it IS ok for you to port it to other MCUs.  Filename magnetic.c in the kit contains the magnetic calibration algorithm.  orientation.c contains the functions that compute orientation.

Mike

0 Kudos

987 Views
anilkumarraj200
Contributor I

@

Hi,

I am also using the same FXOS chip for getting the eCompass heading.

did you solve your problem, i am also facing the same issue. I am getting RAW values from accelerometer x,y,z & magnetic x, y, z data. I am able to convert the rotation, pitch & roll. 

 

But i need the eCompass 0 - 360 degree heading values. how to apply the formula  using RAW values. I am not using any Gyro only accel & mag values are getting from the fxos chip.

 

did you got  or have any reference c code for getting or calculating the 0, 90, 180, 270 & 360 angle calculation.

lets please share the magnetic.c and orientation.c files to understand the eCompass algorithm.  

regards,

anil

@

0 Kudos

987 Views
michaelestanley
NXP Employee
NXP Employee

Anil, 

As noted above, download the SDK (with ISSDK option enabled) for either FRDM_K22F or FRDM_K64F from Welcome to MCUXpresso | MCUXpresso Config Tools .  Once downloaded, look under <sdk_root>/middleware/issdk_1.1/algorithms/sensorfusion for documentation and source files.  Example projects are under <sdk_root>/boards/frdmk22f_agm01/issdk_examples/algorithms/sensorfusion (assuming FRDM_K22F).

In general, you should not be using raw magnetometer readings, as there are almost always offsets that need to be subtracted out.  Again, please refer to the app notes listed earlier in this thread.

MIke

0 Kudos