Create a project for TT_Mxx.

Committer:
ThunderSoft
Date:
Thu Mar 21 09:03:32 2019 +0000
Revision:
0:369a1b265ddb
Add code for FRDM_FXS_MULTI_B

Who changed what in which revision?

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