SPI accelerometer library

Dependents:   FRDMSTBC-A8471_SensorShield_HelloWorld

Fork of MMA8652FC by NXP

Committer:
AswinSivakumar
Date:
Mon Apr 24 18:57:12 2017 +0000
Revision:
2:0eacd0e5db3b
Parent:
1:ac1a9afd8401
updated notice

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AswinSivakumar 2:0eacd0e5db3b 1 /*
AswinSivakumar 2:0eacd0e5db3b 2 * Copyright (c) 2015 - 2016, Freescale Semiconductor, Inc.
AswinSivakumar 2:0eacd0e5db3b 3 * Copyright 2016-2017 NXP
AswinSivakumar 2:0eacd0e5db3b 4 *
AswinSivakumar 2:0eacd0e5db3b 5 * Redistribution and use in source and binary forms, with or without modification,
AswinSivakumar 2:0eacd0e5db3b 6 * are permitted provided that the following conditions are met:
AswinSivakumar 2:0eacd0e5db3b 7 *
AswinSivakumar 2:0eacd0e5db3b 8 * o Redistributions of source code must retain the above copyright notice, this list
AswinSivakumar 2:0eacd0e5db3b 9 * of conditions and the following disclaimer.
AswinSivakumar 2:0eacd0e5db3b 10 *
AswinSivakumar 2:0eacd0e5db3b 11 * o Redistributions in binary form must reproduce the above copyright notice, this
AswinSivakumar 2:0eacd0e5db3b 12 * list of conditions and the following disclaimer in the documentation and/or
AswinSivakumar 2:0eacd0e5db3b 13 * other materials provided with the distribution.
AswinSivakumar 2:0eacd0e5db3b 14 *
AswinSivakumar 2:0eacd0e5db3b 15 * o Neither the name of the copyright holder nor the names of its
AswinSivakumar 2:0eacd0e5db3b 16 * contributors may be used to endorse or promote products derived from this
AswinSivakumar 2:0eacd0e5db3b 17 * software without specific prior written permission.
AswinSivakumar 2:0eacd0e5db3b 18 *
AswinSivakumar 2:0eacd0e5db3b 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AswinSivakumar 2:0eacd0e5db3b 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AswinSivakumar 2:0eacd0e5db3b 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AswinSivakumar 2:0eacd0e5db3b 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AswinSivakumar 2:0eacd0e5db3b 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AswinSivakumar 2:0eacd0e5db3b 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AswinSivakumar 2:0eacd0e5db3b 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AswinSivakumar 2:0eacd0e5db3b 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AswinSivakumar 2:0eacd0e5db3b 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AswinSivakumar 2:0eacd0e5db3b 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AswinSivakumar 2:0eacd0e5db3b 29 */
AswinSivakumar 0:6642dad09196 30
AswinSivakumar 1:ac1a9afd8401 31 #include "FXLS8471.h"
AswinSivakumar 0:6642dad09196 32 #include "mbed.h"
AswinSivakumar 0:6642dad09196 33
AswinSivakumar 1:ac1a9afd8401 34 FXLS8471::FXLS8471(PinName MOSI, PinName MISO, PinName CLK, PinName CS) : FXLS8471_spi(MOSI,MISO,CLK), FXLS8471_cs(CS)
AswinSivakumar 0:6642dad09196 35 {
AswinSivakumar 1:ac1a9afd8401 36 FXLS8471_cs=1;
AswinSivakumar 0:6642dad09196 37 }
AswinSivakumar 0:6642dad09196 38
AswinSivakumar 1:ac1a9afd8401 39 void FXLS8471::FXLS8471_config(void)
AswinSivakumar 0:6642dad09196 40 {
AswinSivakumar 0:6642dad09196 41 char d[2];
AswinSivakumar 1:ac1a9afd8401 42 d[0] = FXLS8471_CTRL_REG1; //Puts device in Standby mode
AswinSivakumar 1:ac1a9afd8401 43 FXLS8471_cs=0;
AswinSivakumar 1:ac1a9afd8401 44 FXLS8471_spi.write(d[0]+128);
AswinSivakumar 1:ac1a9afd8401 45 FXLS8471_spi.write(0x00);
AswinSivakumar 1:ac1a9afd8401 46 FXLS8471_spi.write(0x00);
AswinSivakumar 1:ac1a9afd8401 47 FXLS8471_cs=1;
AswinSivakumar 0:6642dad09196 48
AswinSivakumar 0:6642dad09196 49
AswinSivakumar 1:ac1a9afd8401 50 d[0] = FXLS8471_CTRL_REG1; //Puts device in Active mode
AswinSivakumar 1:ac1a9afd8401 51 FXLS8471_cs=0;
AswinSivakumar 1:ac1a9afd8401 52 FXLS8471_spi.write(d[0]+128);
AswinSivakumar 1:ac1a9afd8401 53 FXLS8471_spi.write(0x01);
AswinSivakumar 1:ac1a9afd8401 54 FXLS8471_spi.write(0x01);
AswinSivakumar 1:ac1a9afd8401 55 FXLS8471_cs=1;
AswinSivakumar 0:6642dad09196 56
AswinSivakumar 0:6642dad09196 57 }
AswinSivakumar 0:6642dad09196 58
AswinSivakumar 0:6642dad09196 59
AswinSivakumar 0:6642dad09196 60
AswinSivakumar 1:ac1a9afd8401 61 void FXLS8471::acquire_FXLS8471_data_g(float * a_data)
AswinSivakumar 0:6642dad09196 62 {
AswinSivakumar 0:6642dad09196 63
AswinSivakumar 0:6642dad09196 64 char data_bytes[7];
AswinSivakumar 0:6642dad09196 65 char d[1];
AswinSivakumar 1:ac1a9afd8401 66 int count=1;
AswinSivakumar 1:ac1a9afd8401 67 d[0]=0x01;
AswinSivakumar 0:6642dad09196 68
AswinSivakumar 1:ac1a9afd8401 69 FXLS8471_cs=0;
AswinSivakumar 1:ac1a9afd8401 70 FXLS8471_spi.write(d[0]);
AswinSivakumar 1:ac1a9afd8401 71 FXLS8471_spi.write(0x00);
AswinSivakumar 1:ac1a9afd8401 72 while(count<7)
AswinSivakumar 1:ac1a9afd8401 73 { data_bytes[count]= FXLS8471_spi.write(0xff); count=count+1;
AswinSivakumar 1:ac1a9afd8401 74 }
AswinSivakumar 1:ac1a9afd8401 75 FXLS8471_cs=1;
AswinSivakumar 1:ac1a9afd8401 76
AswinSivakumar 1:ac1a9afd8401 77 // a_data[0]= ((float)((int16_t)data_bytes[1]));
AswinSivakumar 0:6642dad09196 78 a_data[0] = ((float)((int16_t)(((data_bytes[1]*256) + (data_bytes[2])))>> 4) * 0.0009765);
AswinSivakumar 0:6642dad09196 79 a_data[1] = ((float)((int16_t)(((data_bytes[3]*256) + (data_bytes[4])))>> 4) * 0.0009765);
AswinSivakumar 0:6642dad09196 80 a_data[2] = ((float)((int16_t)(((data_bytes[5]*256) + (data_bytes[6])))>> 4) * 0.0009765);
AswinSivakumar 0:6642dad09196 81
AswinSivakumar 0:6642dad09196 82 }
AswinSivakumar 0:6642dad09196 83
AswinSivakumar 0:6642dad09196 84