Modified FXAS21000 library. changed _i2c to a pointer allowing you to pass an existing I2C object to the library instead of initializing a new one each time. This is mainly to make this library more practical to use alongside other I2C sensors.

Fork of FXAS21000 by Jim Carver

Committer:
clwillingham
Date:
Mon Aug 17 18:25:11 2015 +0000
Revision:
4:c411fbb2cc2f
Parent:
2:cd21ef326977
changed i2c to pointer reference to make initialization more generic and compatible with other sensor libraries

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JimCarver 0:4cfc774d6d85 1 #include "FXAS21000.h"
JimCarver 0:4cfc774d6d85 2
clwillingham 4:c411fbb2cc2f 3 FXAS21000::FXAS21000(PinName sda, PinName scl) {
clwillingham 4:c411fbb2cc2f 4 _i2c = new I2C(sda, scl);
clwillingham 4:c411fbb2cc2f 5 begin();
clwillingham 4:c411fbb2cc2f 6 }
clwillingham 4:c411fbb2cc2f 7
clwillingham 4:c411fbb2cc2f 8 FXAS21000::FXAS21000(I2C *i2c): _i2c(i2c){
JimCarver 0:4cfc774d6d85 9 begin();
JimCarver 0:4cfc774d6d85 10 }
JimCarver 0:4cfc774d6d85 11
JimCarver 0:4cfc774d6d85 12 void FXAS21000::RegRead( char reg, char * d, int len)
JimCarver 0:4cfc774d6d85 13 {
JimCarver 0:4cfc774d6d85 14 char cmd[1];
JimCarver 0:4cfc774d6d85 15 cmd[0] = reg;
JimCarver 0:4cfc774d6d85 16 char i2c_addr = FXAS21000_SLAVE_ADDR;
clwillingham 4:c411fbb2cc2f 17 _i2c->write( i2c_addr, cmd, 1, true);
clwillingham 4:c411fbb2cc2f 18 _i2c->read ( i2c_addr, d, len);
JimCarver 0:4cfc774d6d85 19 }
JimCarver 0:4cfc774d6d85 20
JimCarver 0:4cfc774d6d85 21 void FXAS21000::begin(void)
JimCarver 0:4cfc774d6d85 22 {
JimCarver 0:4cfc774d6d85 23 char data[2];
JimCarver 0:4cfc774d6d85 24 // write 0000 1000 = 0x08 to gyro control register 1 to place FXAS21000 into
JimCarver 0:4cfc774d6d85 25 // standby
JimCarver 0:4cfc774d6d85 26 // [7-1] = 0000 000
JimCarver 0:4cfc774d6d85 27 // [0]: active=0
JimCarver 0:4cfc774d6d85 28 data[0] = FXAS21000_CTRL_REG1;
JimCarver 0:4cfc774d6d85 29 data[1] = 0x08;
clwillingham 4:c411fbb2cc2f 30 _i2c->write( FXAS21000_SLAVE_ADDR, data, 2);
JimCarver 0:4cfc774d6d85 31
JimCarver 0:4cfc774d6d85 32 // write 0001 1011 to CRTL_REG0 register
JimCarver 0:4cfc774d6d85 33 data[0] = FXAS21000_CTRL_REG0;
JimCarver 0:4cfc774d6d85 34 data[1] = 0x1B;
clwillingham 4:c411fbb2cc2f 35 _i2c->write( FXAS21000_SLAVE_ADDR, data, 2);
JimCarver 0:4cfc774d6d85 36
JimCarver 0:4cfc774d6d85 37 // write 0000 1001 to gyro control register 1
JimCarver 0:4cfc774d6d85 38 data[0] = FXAS21000_CTRL_REG1;
JimCarver 0:4cfc774d6d85 39 data[1] = 0x0A;
clwillingham 4:c411fbb2cc2f 40 _i2c->write( FXAS21000_SLAVE_ADDR, data, 2);
JimCarver 0:4cfc774d6d85 41 }
JimCarver 0:4cfc774d6d85 42
JimCarver 0:4cfc774d6d85 43 char FXAS21000::getWhoAmI(void)
JimCarver 0:4cfc774d6d85 44 {
JimCarver 0:4cfc774d6d85 45 char d;
JimCarver 0:4cfc774d6d85 46 RegRead( FXAS21000_WHOAMI, &d, 1);
JimCarver 0:4cfc774d6d85 47 return(d);
JimCarver 0:4cfc774d6d85 48 }
JimCarver 0:4cfc774d6d85 49
JimCarver 0:4cfc774d6d85 50 void FXAS21000::ReadXYZ(float * a)
JimCarver 0:4cfc774d6d85 51 {
JimCarver 0:4cfc774d6d85 52 char d[7];
JimCarver 0:4cfc774d6d85 53 int16_t t[6];
JimCarver 0:4cfc774d6d85 54
JimCarver 0:4cfc774d6d85 55 RegRead( FXAS21000_STATUS, d, 7);
JimCarver 0:4cfc774d6d85 56 t[0] = ((d[1] * 256) + ((unsigned short) d[2]));
JimCarver 0:4cfc774d6d85 57 t[1] = ((d[3] * 256) + ((unsigned short) d[4]));
JimCarver 0:4cfc774d6d85 58 t[2] = ((d[5] * 256) + ((unsigned short) d[6]));
JimCarver 0:4cfc774d6d85 59 //printf("%X\r\n", (int) d[0]);
JimCarver 0:4cfc774d6d85 60
JimCarver 0:4cfc774d6d85 61 a[0] = (float) t[0] * 0.003125;
JimCarver 0:4cfc774d6d85 62 a[1] = (float) t[1] * 0.003125;
JimCarver 0:4cfc774d6d85 63 a[2] = (float) t[2] * 0.003125;
JimCarver 0:4cfc774d6d85 64
JimCarver 0:4cfc774d6d85 65 }
JimCarver 0:4cfc774d6d85 66
JimCarver 0:4cfc774d6d85 67 void FXAS21000::ReadXYZraw(int16_t * t)
JimCarver 0:4cfc774d6d85 68 {
JimCarver 0:4cfc774d6d85 69 char d[7];
JimCarver 0:4cfc774d6d85 70
JimCarver 0:4cfc774d6d85 71 RegRead( FXAS21000_STATUS, d, 7);
JimCarver 0:4cfc774d6d85 72 t[0] = ((d[1] * 256) + ((unsigned short) d[2]));
JimCarver 0:4cfc774d6d85 73 t[1] = ((d[3] * 256) + ((unsigned short) d[4]));
JimCarver 0:4cfc774d6d85 74 t[2] = ((d[5] * 256) + ((unsigned short) d[6]));
JimCarver 0:4cfc774d6d85 75 }