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

Committer:
AswinSivakumar
Date:
Tue Dec 22 00:22:57 2015 +0000
Revision:
2:98ea52282575
Parent:
1:66ff36d0d1b1
Child:
3:d6a5dcde8ed9

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AswinSivakumar 2:98ea52282575 1 /* Copyright (c) 2015 NXP Semiconductors. MIT License
AswinSivakumar 1:66ff36d0d1b1 2 *
AswinSivakumar 1:66ff36d0d1b1 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
AswinSivakumar 1:66ff36d0d1b1 4 * and associated documentation files (the "Software"), to deal in the Software without
AswinSivakumar 1:66ff36d0d1b1 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
AswinSivakumar 1:66ff36d0d1b1 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
AswinSivakumar 1:66ff36d0d1b1 7 * Software is furnished to do so, subject to the following conditions:
AswinSivakumar 1:66ff36d0d1b1 8 *
AswinSivakumar 1:66ff36d0d1b1 9 * The above copyright notice and this permission notice shall be included in all copies or
AswinSivakumar 1:66ff36d0d1b1 10 * substantial portions of the Software.
AswinSivakumar 1:66ff36d0d1b1 11 *
AswinSivakumar 1:66ff36d0d1b1 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
AswinSivakumar 1:66ff36d0d1b1 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
AswinSivakumar 1:66ff36d0d1b1 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
AswinSivakumar 1:66ff36d0d1b1 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
AswinSivakumar 1:66ff36d0d1b1 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
AswinSivakumar 1:66ff36d0d1b1 17 */
AswinSivakumar 1:66ff36d0d1b1 18
AswinSivakumar 1:66ff36d0d1b1 19 #include "FXOS8700.h"
AswinSivakumar 0:a4ffc3c3e770 20 #include "mbed.h"
AswinSivakumar 0:a4ffc3c3e770 21
AswinSivakumar 0:a4ffc3c3e770 22 FXOS8700::FXOS8700(PinName sda, PinName scl) : accelmagi2c(sda,scl)
AswinSivakumar 0:a4ffc3c3e770 23 {
AswinSivakumar 0:a4ffc3c3e770 24
AswinSivakumar 0:a4ffc3c3e770 25 }
AswinSivakumar 0:a4ffc3c3e770 26
AswinSivakumar 0:a4ffc3c3e770 27 void FXOS8700::accel_config(void)
AswinSivakumar 0:a4ffc3c3e770 28 {
AswinSivakumar 0:a4ffc3c3e770 29 char d[2];
AswinSivakumar 0:a4ffc3c3e770 30 d[0] = FXOS8700_CTRL_REG1; //Puts device in Standby mode
AswinSivakumar 0:a4ffc3c3e770 31 d[1] = 0x00;
AswinSivakumar 0:a4ffc3c3e770 32 accelmagi2c.write(FXOS8700_I2C_ADDRESS, d,2);
AswinSivakumar 0:a4ffc3c3e770 33
AswinSivakumar 0:a4ffc3c3e770 34
AswinSivakumar 0:a4ffc3c3e770 35 d[0] = FXOS8700_CTRL_REG1; //Puts device in Active mode
AswinSivakumar 0:a4ffc3c3e770 36 d[1] = 0x01;
AswinSivakumar 0:a4ffc3c3e770 37 accelmagi2c.write(FXOS8700_I2C_ADDRESS, d, 2);
AswinSivakumar 0:a4ffc3c3e770 38
AswinSivakumar 0:a4ffc3c3e770 39 }
AswinSivakumar 0:a4ffc3c3e770 40
AswinSivakumar 0:a4ffc3c3e770 41 void FXOS8700::mag_config(void)
AswinSivakumar 0:a4ffc3c3e770 42 {
AswinSivakumar 0:a4ffc3c3e770 43 char d[2];
AswinSivakumar 0:a4ffc3c3e770 44 d[0] = FXOS8700_CTRL_REG1; //Puts device in Standby mode
AswinSivakumar 0:a4ffc3c3e770 45 d[1] = 0x00;
AswinSivakumar 0:a4ffc3c3e770 46 accelmagi2c.write(FXOS8700_I2C_ADDRESS, d,2);
AswinSivakumar 0:a4ffc3c3e770 47
AswinSivakumar 0:a4ffc3c3e770 48
AswinSivakumar 0:a4ffc3c3e770 49 d[0] = FXOS8700_M_CTRL_REG1; //Puts device in hybrid mode (both accel and mag are active)
AswinSivakumar 0:a4ffc3c3e770 50 d[1] = 0x03;
AswinSivakumar 0:a4ffc3c3e770 51 accelmagi2c.write(FXOS8700_I2C_ADDRESS, d, 2);
AswinSivakumar 0:a4ffc3c3e770 52
AswinSivakumar 0:a4ffc3c3e770 53
AswinSivakumar 0:a4ffc3c3e770 54 d[0] = FXOS8700_CTRL_REG1; //Puts device in Active mode
AswinSivakumar 0:a4ffc3c3e770 55 d[1] = 0x01;
AswinSivakumar 0:a4ffc3c3e770 56 accelmagi2c.write(FXOS8700_I2C_ADDRESS, d,2);
AswinSivakumar 0:a4ffc3c3e770 57
AswinSivakumar 0:a4ffc3c3e770 58 }
AswinSivakumar 0:a4ffc3c3e770 59
AswinSivakumar 0:a4ffc3c3e770 60 void FXOS8700::acquire_accel_data_g(float * a_data)
AswinSivakumar 0:a4ffc3c3e770 61 {
AswinSivakumar 0:a4ffc3c3e770 62
AswinSivakumar 0:a4ffc3c3e770 63 char data_bytes[7];
AswinSivakumar 0:a4ffc3c3e770 64 char d[1];
AswinSivakumar 0:a4ffc3c3e770 65 d[0]=FXOS8700_STATUS;
AswinSivakumar 0:a4ffc3c3e770 66 accelmagi2c.write(FXOS8700_I2C_ADDRESS,d,1,true); // Read the 6 data bytes - LSB and MSB for X, Y and Z Axes.
AswinSivakumar 0:a4ffc3c3e770 67 accelmagi2c.read(FXOS8700_I2C_ADDRESS,data_bytes,7);
AswinSivakumar 0:a4ffc3c3e770 68
AswinSivakumar 0:a4ffc3c3e770 69 a_data[0] = ((float)((int16_t)(((data_bytes[1]*256) + (data_bytes[2])))>> 2) * 0.000244);
AswinSivakumar 0:a4ffc3c3e770 70 a_data[1] = ((float)((int16_t)(((data_bytes[3]*256) + (data_bytes[4])))>> 2) * 0.000244);
AswinSivakumar 0:a4ffc3c3e770 71 a_data[2] = ((float)((int16_t)(((data_bytes[5]*256) + (data_bytes[6])))>> 2) * 0.000244);
AswinSivakumar 0:a4ffc3c3e770 72
AswinSivakumar 0:a4ffc3c3e770 73 }
AswinSivakumar 0:a4ffc3c3e770 74
AswinSivakumar 0:a4ffc3c3e770 75 void FXOS8700::acquire_mag_data_uT(float * m_data)
AswinSivakumar 0:a4ffc3c3e770 76 {
AswinSivakumar 0:a4ffc3c3e770 77
AswinSivakumar 0:a4ffc3c3e770 78 char data_bytes[7];
AswinSivakumar 0:a4ffc3c3e770 79 char d[1];
AswinSivakumar 0:a4ffc3c3e770 80 d[0]=FXOS8700_MDR_STATUS;
AswinSivakumar 0:a4ffc3c3e770 81 accelmagi2c.write(FXOS8700_I2C_ADDRESS,d,1,true); // Read the 6 data bytes - LSB and MSB for X, Y and Z Axes.
AswinSivakumar 0:a4ffc3c3e770 82 accelmagi2c.read(FXOS8700_I2C_ADDRESS,data_bytes,7);
AswinSivakumar 0:a4ffc3c3e770 83
AswinSivakumar 0:a4ffc3c3e770 84 m_data[0] = (float)((int16_t)((data_bytes[1]*256) + (data_bytes[2]))) * 0.1;
AswinSivakumar 0:a4ffc3c3e770 85 m_data[1] = (float)((int16_t)((data_bytes[3]*256) + (data_bytes[4]))) * 0.1;
AswinSivakumar 0:a4ffc3c3e770 86 m_data[2] = (float)((int16_t)((data_bytes[5]*256) + (data_bytes[6]))) * 0.1;
AswinSivakumar 0:a4ffc3c3e770 87
AswinSivakumar 0:a4ffc3c3e770 88 }
AswinSivakumar 0:a4ffc3c3e770 89
AswinSivakumar 0:a4ffc3c3e770 90