Very simple library for the FXOS8700 combined magnetometer and accelerometer

Committer:
jhd25
Date:
Tue Jan 29 13:00:39 2019 +0000
Revision:
2:24e7cbc80327
Parent:
1:c0795224b157
Added reading calibration from USB drive

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jhd25 0:41abd50a2ad1 1 #include "FXOS8700.h"
jhd25 0:41abd50a2ad1 2
jhd25 0:41abd50a2ad1 3 FXOS8700::FXOS8700 (PinName sda, PinName scl, int chip_address) : i2c(sda, scl)
jhd25 0:41abd50a2ad1 4 {
jhd25 0:41abd50a2ad1 5 this->i2c_address=chip_address;
jhd25 0:41abd50a2ad1 6 char write_data[2];
jhd25 2:24e7cbc80327 7 bool err=false;
jhd25 0:41abd50a2ad1 8 write_data[0]=FXOS8700CQ_CTRL_REG1;
jhd25 0:41abd50a2ad1 9 write_data[1]=0x00;
jhd25 1:c0795224b157 10 err=err || i2c.write( i2c_address <<1,write_data,2);
jhd25 0:41abd50a2ad1 11 write_data[0]=FXOS8700CQ_M_CTRL_REG1;
jhd25 0:41abd50a2ad1 12 write_data[1]=0x1F;
jhd25 1:c0795224b157 13 err=err || i2c.write( i2c_address <<1,write_data,2);
jhd25 0:41abd50a2ad1 14 write_data[0]=FXOS8700CQ_M_CTRL_REG2;
jhd25 0:41abd50a2ad1 15 write_data[1]=0x20;
jhd25 1:c0795224b157 16 err=err || i2c.write( i2c_address <<1,write_data,2);
jhd25 0:41abd50a2ad1 17 write_data[0]=FXOS8700CQ_XYZ_DATA_CFG;
jhd25 0:41abd50a2ad1 18 write_data[1]=0x01;
jhd25 1:c0795224b157 19 err=err || i2c.write( i2c_address <<1,write_data,2);
jhd25 0:41abd50a2ad1 20 write_data[0]=FXOS8700CQ_CTRL_REG1;
jhd25 0:41abd50a2ad1 21 write_data[1]=0x0D;
jhd25 1:c0795224b157 22 err=err || i2c.write( i2c_address <<1,write_data,2);
jhd25 1:c0795224b157 23 this->i2c_error=err;
jhd25 0:41abd50a2ad1 24 }
jhd25 0:41abd50a2ad1 25
jhd25 0:41abd50a2ad1 26
jhd25 0:41abd50a2ad1 27
jhd25 0:41abd50a2ad1 28 FXOS8700::~FXOS8700()
jhd25 0:41abd50a2ad1 29 {
jhd25 0:41abd50a2ad1 30
jhd25 0:41abd50a2ad1 31 }
jhd25 0:41abd50a2ad1 32
jhd25 0:41abd50a2ad1 33 FXOS8700_data FXOS8700::read()
jhd25 0:41abd50a2ad1 34 {
jhd25 1:c0795224b157 35 char read_data[14]={0};
jhd25 1:c0795224b157 36 char write_data[8]={0};
jhd25 0:41abd50a2ad1 37 write_data[0]=FXOS8700CQ_STATUS;
jhd25 0:41abd50a2ad1 38 i2c.write( i2c_address <<1,write_data,1,1);
jhd25 0:41abd50a2ad1 39 i2c.read( i2c_address <<1,read_data,13);
jhd25 0:41abd50a2ad1 40 readdata.x = (int16_t)(((read_data[1] << 8) | read_data[2]))>> 2;
jhd25 0:41abd50a2ad1 41 readdata.y = (int16_t)(((read_data[3] << 8) | read_data[4]))>> 2;
jhd25 0:41abd50a2ad1 42 readdata.z = (int16_t)(((read_data[5] << 8) | read_data[6]))>> 2;
jhd25 0:41abd50a2ad1 43 readdata.mx = (read_data[7] << 8) | read_data[8];
jhd25 0:41abd50a2ad1 44 readdata.my = (read_data[9] << 8) | read_data[10];
jhd25 0:41abd50a2ad1 45 readdata.mz = (read_data[11] << 8) | read_data[12];
jhd25 0:41abd50a2ad1 46 return (readdata);
jhd25 0:41abd50a2ad1 47
jhd25 0:41abd50a2ad1 48 }