Very simple library for the FXOS8700 combined magnetometer and accelerometer
FXOS8700.cpp
- Committer:
- jhd25
- Date:
- 2018-02-25
- Revision:
- 0:41abd50a2ad1
- Child:
- 1:c0795224b157
File content as of revision 0:41abd50a2ad1:
#include "FXOS8700.h" FXOS8700::FXOS8700 (PinName sda, PinName scl, int chip_address) : i2c(sda, scl) { this->i2c_address=chip_address; char write_data[2]; write_data[0]=FXOS8700CQ_CTRL_REG1; write_data[1]=0x00; i2c.write( i2c_address <<1,write_data,2); write_data[0]=FXOS8700CQ_M_CTRL_REG1; write_data[1]=0x1F; i2c.write( i2c_address <<1,write_data,2); write_data[0]=FXOS8700CQ_M_CTRL_REG2; write_data[1]=0x20; i2c.write( i2c_address <<1,write_data,2); write_data[0]=FXOS8700CQ_XYZ_DATA_CFG; write_data[1]=0x01; i2c.write( i2c_address <<1,write_data,2); write_data[0]=FXOS8700CQ_CTRL_REG1; write_data[1]=0x0D; i2c.write( i2c_address <<1,write_data,2); } FXOS8700::~FXOS8700() { } FXOS8700_data FXOS8700::read() { char read_data[14]; char write_data[8]; write_data[0]=FXOS8700CQ_STATUS; i2c.write( i2c_address <<1,write_data,1,1); i2c.read( i2c_address <<1,read_data,13); readdata.x = (int16_t)(((read_data[1] << 8) | read_data[2]))>> 2; readdata.y = (int16_t)(((read_data[3] << 8) | read_data[4]))>> 2; readdata.z = (int16_t)(((read_data[5] << 8) | read_data[6]))>> 2; readdata.mx = (read_data[7] << 8) | read_data[8]; readdata.my = (read_data[9] << 8) | read_data[10]; readdata.mz = (read_data[11] << 8) | read_data[12]; return (readdata); }