Very simple library for the FXOS8700 combined magnetometer and accelerometer
Embed:
(wiki syntax)
Show/hide line numbers
FXOS8700.cpp
00001 #include "FXOS8700.h" 00002 00003 FXOS8700::FXOS8700 (PinName sda, PinName scl, int chip_address) : i2c(sda, scl) 00004 { 00005 this->i2c_address=chip_address; 00006 char write_data[2]; 00007 bool err=false; 00008 write_data[0]=FXOS8700CQ_CTRL_REG1; 00009 write_data[1]=0x00; 00010 err=err || i2c.write( i2c_address <<1,write_data,2); 00011 write_data[0]=FXOS8700CQ_M_CTRL_REG1; 00012 write_data[1]=0x1F; 00013 err=err || i2c.write( i2c_address <<1,write_data,2); 00014 write_data[0]=FXOS8700CQ_M_CTRL_REG2; 00015 write_data[1]=0x20; 00016 err=err || i2c.write( i2c_address <<1,write_data,2); 00017 write_data[0]=FXOS8700CQ_XYZ_DATA_CFG; 00018 write_data[1]=0x01; 00019 err=err || i2c.write( i2c_address <<1,write_data,2); 00020 write_data[0]=FXOS8700CQ_CTRL_REG1; 00021 write_data[1]=0x0D; 00022 err=err || i2c.write( i2c_address <<1,write_data,2); 00023 this->i2c_error=err; 00024 } 00025 00026 00027 00028 FXOS8700::~FXOS8700 () 00029 { 00030 00031 } 00032 00033 FXOS8700_data FXOS8700::read() 00034 { 00035 char read_data[14]={0}; 00036 char write_data[8]={0}; 00037 write_data[0]=FXOS8700CQ_STATUS; 00038 i2c.write( i2c_address <<1,write_data,1,1); 00039 i2c.read( i2c_address <<1,read_data,13); 00040 readdata.x = (int16_t)(((read_data[1] << 8) | read_data[2]))>> 2; 00041 readdata.y = (int16_t)(((read_data[3] << 8) | read_data[4]))>> 2; 00042 readdata.z = (int16_t)(((read_data[5] << 8) | read_data[6]))>> 2; 00043 readdata.mx = (read_data[7] << 8) | read_data[8]; 00044 readdata.my = (read_data[9] << 8) | read_data[10]; 00045 readdata.mz = (read_data[11] << 8) | read_data[12]; 00046 return (readdata); 00047 00048 }
Generated on Sun Jul 17 2022 20:10:51 by
1.7.2