Dependencies:   mbed

Committer:
aldomarez
Date:
Thu Nov 22 20:11:48 2018 +0000
Revision:
0:6e12cd8b71b4
SPI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aldomarez 0:6e12cd8b71b4 1 #include "mbed.h"
aldomarez 0:6e12cd8b71b4 2
aldomarez 0:6e12cd8b71b4 3 SPI acc(D11,D12,D13); // setup SPI interface on pins D11--MOSI>>SDA,D12--MISO>>SDO,D13--SCL
aldomarez 0:6e12cd8b71b4 4 DigitalOut cs(D10); // use pin 14 as chip select
aldomarez 0:6e12cd8b71b4 5
aldomarez 0:6e12cd8b71b4 6 Serial pc(USBTX, USBRX); // setup USB interface to host terminal
aldomarez 0:6e12cd8b71b4 7
aldomarez 0:6e12cd8b71b4 8 char buffer[6]; // raw data array type char
aldomarez 0:6e12cd8b71b4 9 signed short data[3]; // acc data is signed 16 bit from -32,768 to +32,767
aldomarez 0:6e12cd8b71b4 10 float x, y, z; // floating point data
aldomarez 0:6e12cd8b71b4 11 int main() {
aldomarez 0:6e12cd8b71b4 12 cs=1;
aldomarez 0:6e12cd8b71b4 13 acc.format(8,3); // 8 bit data, Mode 3
aldomarez 0:6e12cd8b71b4 14 acc.frequency(2000000); // 2MHz clock rate
aldomarez 0:6e12cd8b71b4 15 cs=0;
aldomarez 0:6e12cd8b71b4 16 acc.write(0x31); // data format register
aldomarez 0:6e12cd8b71b4 17 acc.write(0x0B); // format +/-16g, 0.004g/LSB
aldomarez 0:6e12cd8b71b4 18 cs=1;
aldomarez 0:6e12cd8b71b4 19 cs=0;
aldomarez 0:6e12cd8b71b4 20 acc.write(0x2D); // power ctrl register
aldomarez 0:6e12cd8b71b4 21 acc.write(0x08); // measure mode
aldomarez 0:6e12cd8b71b4 22 cs=1;
aldomarez 0:6e12cd8b71b4 23 while (1) {
aldomarez 0:6e12cd8b71b4 24 wait(0.2);
aldomarez 0:6e12cd8b71b4 25 cs=0;
aldomarez 0:6e12cd8b71b4 26 acc.write(0x80|0x40|0x32); // RW bit high, MB bit high, plus address
aldomarez 0:6e12cd8b71b4 27 for (int i = 0;i<=5;i++) {
aldomarez 0:6e12cd8b71b4 28 buffer[i]=acc.write(0x00); // read back 6 data bytes
aldomarez 0:6e12cd8b71b4 29 }
aldomarez 0:6e12cd8b71b4 30 cs=1;
aldomarez 0:6e12cd8b71b4 31 data[0] = buffer[1]<<8 | buffer[0]; // combine MSB and LSB
aldomarez 0:6e12cd8b71b4 32 data[1] = buffer[3]<<8 | buffer[2];
aldomarez 0:6e12cd8b71b4 33 data[2] = buffer[5]<<8 | buffer[4];
aldomarez 0:6e12cd8b71b4 34 x=0.004*data[0]; y=0.004*data[1]; z=0.004*data[2]; // convert to floating point
aldomarez 0:6e12cd8b71b4 35 pc.printf("x = %+1.2fg\t y = %+1.2fg\t z = %+1.2fg\n\r", x, y,z); //print to screen
aldomarez 0:6e12cd8b71b4 36 }
aldomarez 0:6e12cd8b71b4 37 }