Rev 0.1 Simple operation of just X, Y, Z values in floating point G's

Dependents:   Hello_FXLS8471Q Multi-Sensor sensor AerCloud_MutliTech_Socket_Modem_Example ... more

Committer:
JimCarver
Date:
Mon Apr 07 00:58:10 2014 +0000
Revision:
0:f89f2dc4b003
Child:
1:c80be04510fe
Rev 0.1 Simple operation of just X, Y, Z values in floating point G's

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JimCarver 0:f89f2dc4b003 1 #include "FXLS8471Q.h"
JimCarver 0:f89f2dc4b003 2
JimCarver 0:f89f2dc4b003 3 FXLS8471Q::FXLS8471Q(PinName mosi, PinName miso, PinName sck, PinName cs) : _spi(mosi, miso, sck), _spi_cs(cs) {
JimCarver 0:f89f2dc4b003 4 _spi_cs = 1;
JimCarver 0:f89f2dc4b003 5 wait(0.1);
JimCarver 0:f89f2dc4b003 6 begin();
JimCarver 0:f89f2dc4b003 7 }
JimCarver 0:f89f2dc4b003 8
JimCarver 0:f89f2dc4b003 9
JimCarver 0:f89f2dc4b003 10
JimCarver 0:f89f2dc4b003 11 void FXLS8471Q::RegWrite( int reg, int *d, int len)
JimCarver 0:f89f2dc4b003 12 {
JimCarver 0:f89f2dc4b003 13 int ob[2];
JimCarver 0:f89f2dc4b003 14 int c = 0;
JimCarver 0:f89f2dc4b003 15 ob[1] = 0;
JimCarver 0:f89f2dc4b003 16 ob[0] = reg + 128;
JimCarver 0:f89f2dc4b003 17 _spi_cs = 0;
JimCarver 0:f89f2dc4b003 18 _spi.write(ob[0]);
JimCarver 0:f89f2dc4b003 19 _spi.write(ob[1]);
JimCarver 0:f89f2dc4b003 20 while(c < len) _spi.write(d[c++]);
JimCarver 0:f89f2dc4b003 21 _spi_cs = 1;
JimCarver 0:f89f2dc4b003 22 }
JimCarver 0:f89f2dc4b003 23
JimCarver 0:f89f2dc4b003 24 void FXLS8471Q::RegRead( int reg, int *d, int len)
JimCarver 0:f89f2dc4b003 25 {
JimCarver 0:f89f2dc4b003 26 int ob[2];
JimCarver 0:f89f2dc4b003 27 int c = 0;
JimCarver 0:f89f2dc4b003 28 ob[0] = reg;
JimCarver 0:f89f2dc4b003 29 ob[1] = 0;
JimCarver 0:f89f2dc4b003 30 _spi_cs = 0;
JimCarver 0:f89f2dc4b003 31 _spi.write(ob[0]);
JimCarver 0:f89f2dc4b003 32 _spi.write(ob[1]);
JimCarver 0:f89f2dc4b003 33 while(c < len) d[c++] = _spi.write(0xff);
JimCarver 0:f89f2dc4b003 34 _spi_cs = 1;
JimCarver 0:f89f2dc4b003 35 }
JimCarver 0:f89f2dc4b003 36
JimCarver 0:f89f2dc4b003 37 void FXLS8471Q::begin(void)
JimCarver 0:f89f2dc4b003 38 {
JimCarver 0:f89f2dc4b003 39 int databyte;
JimCarver 0:f89f2dc4b003 40
JimCarver 0:f89f2dc4b003 41 // write 0000 0000 = 0x00 to accelerometer control register 1 to place FXLS8471Q into
JimCarver 0:f89f2dc4b003 42 // standby
JimCarver 0:f89f2dc4b003 43 // [7-1] = 0000 000
JimCarver 0:f89f2dc4b003 44 // [0]: active=0
JimCarver 0:f89f2dc4b003 45 databyte = 0x00;
JimCarver 0:f89f2dc4b003 46 RegWrite(FXLS8471Q_CTRL_REG1, &databyte, 1);
JimCarver 0:f89f2dc4b003 47
JimCarver 0:f89f2dc4b003 48 // write 0000 0001= 0x01 to XYZ_DATA_CFG register
JimCarver 0:f89f2dc4b003 49 // [7]: reserved
JimCarver 0:f89f2dc4b003 50 // [6]: reserved
JimCarver 0:f89f2dc4b003 51 // [5]: reserved
JimCarver 0:f89f2dc4b003 52 // [4]: hpf_out=0
JimCarver 0:f89f2dc4b003 53 // [3]: reserved
JimCarver 0:f89f2dc4b003 54 // [2]: reserved
JimCarver 0:f89f2dc4b003 55 // [1-0]: fs=00 for accelerometer range of +/-2g with 0.244mg/LSB
JimCarver 0:f89f2dc4b003 56 databyte = 0x00;
JimCarver 0:f89f2dc4b003 57 RegWrite(FXLS8471Q_XYZ_DATA_CFG, &databyte, 1);
JimCarver 0:f89f2dc4b003 58
JimCarver 0:f89f2dc4b003 59 // write 0001 0101b = 0x15 to accelerometer control register 1
JimCarver 0:f89f2dc4b003 60 // [7-6]: aslp_rate=00
JimCarver 0:f89f2dc4b003 61 // [5-3]: dr=010 for 200Hz data rate
JimCarver 0:f89f2dc4b003 62 // [2]: lnoise=1 for low noise mode
JimCarver 0:f89f2dc4b003 63 // [1]: f_read=0 for normal 16 bit reads
JimCarver 0:f89f2dc4b003 64 // [0]: active=1 to take the part out of standby and enable sampling
JimCarver 0:f89f2dc4b003 65 databyte = 0x15;
JimCarver 0:f89f2dc4b003 66 RegWrite(FXLS8471Q_CTRL_REG1, &databyte, 1);
JimCarver 0:f89f2dc4b003 67 }
JimCarver 0:f89f2dc4b003 68
JimCarver 0:f89f2dc4b003 69 void FXLS8471Q::ReadXYZ(float * fdata)
JimCarver 0:f89f2dc4b003 70 {
JimCarver 0:f89f2dc4b003 71 int raw[7];
JimCarver 0:f89f2dc4b003 72 int16_t ix, iy, iz;
JimCarver 0:f89f2dc4b003 73 RegRead(FXLS8471Q_STATUS, raw, 7);
JimCarver 0:f89f2dc4b003 74
JimCarver 0:f89f2dc4b003 75 ix = ((raw[1] * 256) + raw[2]);// / 4;
JimCarver 0:f89f2dc4b003 76 iy = ((raw[3] * 256) + raw[4]);// / 4;
JimCarver 0:f89f2dc4b003 77 iz = ((raw[5] * 256) + raw[6]);// / 4;
JimCarver 0:f89f2dc4b003 78 fdata[0] = ((float) ix) / 16384.0;
JimCarver 0:f89f2dc4b003 79 fdata[1] = ((float) iy) / 16384.0;
JimCarver 0:f89f2dc4b003 80 fdata[2] = ((float) iz) / 16384.0;
JimCarver 0:f89f2dc4b003 81 }
JimCarver 0:f89f2dc4b003 82