FXOS8700 library

Dependents:   FRDM-STBC-AGMP01_SensorStream Hexi_Accelero_Magneto_Example A_Dragonfly_Freescale_Accel_Mag_Gyro_Sensor_AGM01 A_Dragonfly_BlueMix_QuickStart_NXP_Sensor ... more

Files at this revision

API Documentation at this revision

Comitter:
AswinSivakumar
Date:
Mon Dec 07 08:15:07 2015 +0000
Child:
1:66ff36d0d1b1
Commit message:
Initial commit

Changed in this revision

FXOS8700.cpp Show annotated file Show diff for this revision Revisions of this file
FXOS8700.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FXOS8700.cpp	Mon Dec 07 08:15:07 2015 +0000
@@ -0,0 +1,72 @@
+ #include "FXOS8700.h"
+ #include "mbed.h"
+
+FXOS8700::FXOS8700(PinName sda, PinName scl) : accelmagi2c(sda,scl)
+ {
+       
+ }
+    
+ void FXOS8700::accel_config(void)
+ {
+   char d[2]; 
+   d[0] = FXOS8700_CTRL_REG1;                     //Puts device in Standby mode
+   d[1] = 0x00; 
+   accelmagi2c.write(FXOS8700_I2C_ADDRESS, d,2);   
+          
+   
+   d[0] = FXOS8700_CTRL_REG1;                     //Puts device in Active mode
+   d[1] = 0x01;
+   accelmagi2c.write(FXOS8700_I2C_ADDRESS, d, 2);   
+      
+ }
+ 
+  void FXOS8700::mag_config(void)
+ {
+   char d[2];
+   d[0] = FXOS8700_CTRL_REG1;                     //Puts device in Standby mode
+   d[1] = 0x00;
+   accelmagi2c.write(FXOS8700_I2C_ADDRESS, d,2);   
+          
+   
+   d[0] = FXOS8700_M_CTRL_REG1;                   //Puts device in hybrid mode (both accel and mag are active)
+   d[1] = 0x03;
+   accelmagi2c.write(FXOS8700_I2C_ADDRESS, d, 2);   
+   
+
+   d[0] = FXOS8700_CTRL_REG1;                     //Puts device in Active mode
+   d[1] = 0x01;
+   accelmagi2c.write(FXOS8700_I2C_ADDRESS, d,2);  
+   
+ }
+ 
+ void FXOS8700::acquire_accel_data_g(float * a_data)
+ {
+  
+   char data_bytes[7];
+   char d[1];
+   d[0]=FXOS8700_STATUS;
+   accelmagi2c.write(FXOS8700_I2C_ADDRESS,d,1,true);  // Read the 6 data bytes - LSB and MSB for X, Y and Z Axes.
+   accelmagi2c.read(FXOS8700_I2C_ADDRESS,data_bytes,7);
+   
+   a_data[0] =  ((float)((int16_t)(((data_bytes[1]*256) + (data_bytes[2])))>> 2) * 0.000244);
+   a_data[1] =  ((float)((int16_t)(((data_bytes[3]*256) + (data_bytes[4])))>> 2) * 0.000244);
+   a_data[2] =  ((float)((int16_t)(((data_bytes[5]*256) + (data_bytes[6])))>> 2) * 0.000244);
+   
+ }
+
+ void FXOS8700::acquire_mag_data_uT(float * m_data)
+ {
+  
+   char data_bytes[7];
+   char d[1];
+   d[0]=FXOS8700_MDR_STATUS;
+   accelmagi2c.write(FXOS8700_I2C_ADDRESS,d,1,true);  // Read the 6 data bytes - LSB and MSB for X, Y and Z Axes.
+   accelmagi2c.read(FXOS8700_I2C_ADDRESS,data_bytes,7);
+   
+   m_data[0] =  (float)((int16_t)((data_bytes[1]*256) + (data_bytes[2]))) * 0.1;
+   m_data[1] =  (float)((int16_t)((data_bytes[3]*256) + (data_bytes[4]))) * 0.1;
+   m_data[2] =  (float)((int16_t)((data_bytes[5]*256) + (data_bytes[6]))) * 0.1;
+   
+ }
+     
+     
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FXOS8700.h	Mon Dec 07 08:15:07 2015 +0000
@@ -0,0 +1,51 @@
+/* Copyright (c) 2010-2011 mbed.org, MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+* and associated documentation files (the "Software"), to deal in the Software without
+* restriction, including without limitation the rights to use, copy, modify, merge, publish,
+* distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#ifndef FXOS8700_H
+#define FXOS8700_H
+#include "mbed.h"
+
+#define FXOS8700_I2C_ADDRESS (0x1E<<1) //pins SA0,SA1=0
+
+#define FXOS8700_STATUS 0x00
+#define FXOS8700_MDR_STATUS 0x32
+#define FXOS8700_WHO_AM_I 0x0D
+#define FXOS8700_CTRL_REG1 0x2A
+#define FXOS8700_M_CTRL_REG1 0x5B
+#define FXOS8700_WHO_AM_I_VALUE 0xC7
+
+class FXOS8700
+{
+    public:
+    
+    FXOS8700(PinName sda, PinName scl);
+      
+    void accel_config(void);
+    
+    void mag_config(void);
+        
+    void acquire_accel_data_g(float * da);
+    
+    void acquire_mag_data_uT(float * dm);
+    
+    private:
+    I2C accelmagi2c;
+    
+};
+
+#endif
\ No newline at end of file