mpu9150&stm32f401_nucleo

Dependencies:   CMSIS_DSP_401 MPU9150_DMP_Nucleo QuaternionMath mbed

Fork of MPU9150_nucleo_noni2cdev by Akash Vibhute

Committer:
wspytu
Date:
Fri Jun 09 02:18:06 2017 +0000
Revision:
2:bf64742c8684
Parent:
0:8070e5078178
MPU9150&stm32f401_nucleo ?????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akashvibhute 0:8070e5078178 1 #include "mbed.h"
akashvibhute 0:8070e5078178 2
akashvibhute 0:8070e5078178 3 Serial debug(USBTX, USBRX);
akashvibhute 0:8070e5078178 4
akashvibhute 0:8070e5078178 5 #include "MPU9150.h"
akashvibhute 0:8070e5078178 6 #include "Quaternion.h"
akashvibhute 0:8070e5078178 7 MPU9150 imu(D15, D14, D7); //scl sda int
akashvibhute 0:8070e5078178 8 DigitalOut led(LED1);
akashvibhute 0:8070e5078178 9 char buffer[200];
akashvibhute 0:8070e5078178 10
akashvibhute 0:8070e5078178 11 int main(){
wspytu 2:bf64742c8684 12 // debug.baud(921600);
wspytu 2:bf64742c8684 13 debug.baud(115200);
akashvibhute 0:8070e5078178 14
akashvibhute 0:8070e5078178 15 if(imu.isReady()){
akashvibhute 0:8070e5078178 16 debug.printf("MPU9150 is ready\r\n");
akashvibhute 0:8070e5078178 17 } else {
akashvibhute 0:8070e5078178 18 debug.printf("MPU9150 initialisation failure\r\n");
akashvibhute 0:8070e5078178 19 }
akashvibhute 0:8070e5078178 20
akashvibhute 0:8070e5078178 21 imu.initialiseDMP();
akashvibhute 0:8070e5078178 22
akashvibhute 0:8070e5078178 23 Timer timer;
akashvibhute 0:8070e5078178 24 timer.start();
akashvibhute 0:8070e5078178 25
akashvibhute 0:8070e5078178 26 imu.setFifoReset(true);
akashvibhute 0:8070e5078178 27 imu.setDMPEnabled(true);
akashvibhute 0:8070e5078178 28
akashvibhute 0:8070e5078178 29 Quaternion q1;
akashvibhute 0:8070e5078178 30
akashvibhute 0:8070e5078178 31 while(true){
akashvibhute 0:8070e5078178 32
akashvibhute 0:8070e5078178 33 if(imu.getFifoCount() >= 48){
akashvibhute 0:8070e5078178 34 imu.getFifoBuffer(buffer, 48);
akashvibhute 0:8070e5078178 35 led = !led;
akashvibhute 0:8070e5078178 36 }
akashvibhute 0:8070e5078178 37
akashvibhute 0:8070e5078178 38 if(timer.read_ms() > 50){
akashvibhute 0:8070e5078178 39 timer.reset();
akashvibhute 0:8070e5078178 40
akashvibhute 0:8070e5078178 41 //This is the format of the data in the fifo,
akashvibhute 0:8070e5078178 42 /* ================================================================================================ *
akashvibhute 0:8070e5078178 43 | Default MotionApps v4.1 48-byte FIFO packet structure: |
akashvibhute 0:8070e5078178 44 | |
akashvibhute 0:8070e5078178 45 | [QUAT W][ ][QUAT X][ ][QUAT Y][ ][QUAT Z][ ][GYRO X][ ][GYRO Y][ ] |
akashvibhute 0:8070e5078178 46 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
akashvibhute 0:8070e5078178 47 | |
akashvibhute 0:8070e5078178 48 | [GYRO Z][ ][MAG X ][MAG Y ][MAG Z ][ACC X ][ ][ACC Y ][ ][ACC Z ][ ][ ] |
akashvibhute 0:8070e5078178 49 | 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
akashvibhute 0:8070e5078178 50 * ================================================================================================ */
akashvibhute 0:8070e5078178 51
akashvibhute 0:8070e5078178 52 /*
akashvibhute 0:8070e5078178 53 debug.printf("%d, %d, %d\r\n", (int32_t)(((int32_t)buffer[34] << 24) + ((int32_t)buffer[35] << 16) + ((int32_t)buffer[36] << 8) + (int32_t)buffer[37]),
akashvibhute 0:8070e5078178 54 (int32_t)(((int32_t)buffer[38] << 24) + ((int32_t)buffer[39] << 16) + ((int32_t)buffer[40] << 8) + (int32_t)buffer[41]),
akashvibhute 0:8070e5078178 55 (int32_t)(((int32_t)buffer[42] << 24) + ((int32_t)buffer[43] << 16) + ((int32_t)buffer[44] << 8) + (int32_t)buffer[45]));
akashvibhute 0:8070e5078178 56
akashvibhute 0:8070e5078178 57 debug.printf("%d, %d, %d\r\n", (int32_t)(((int32_t)buffer[16] << 24) + ((int32_t)buffer[17] << 16) + ((int32_t)buffer[18] << 8) + (int32_t)buffer[19]),
akashvibhute 0:8070e5078178 58 (int32_t)(((int32_t)buffer[20] << 24) + ((int32_t)buffer[21] << 16) + ((int32_t)buffer[22] << 8) + (int32_t)buffer[23]),
akashvibhute 0:8070e5078178 59 (int32_t)(((int32_t)buffer[24] << 24) + ((int32_t)buffer[25] << 16) + ((int32_t)buffer[26] << 8) + (int32_t)buffer[27]));
akashvibhute 0:8070e5078178 60
akashvibhute 0:8070e5078178 61 debug.printf("%d, %d, %d\r\n", (int16_t)(buffer[29] << 8) + buffer[28],
akashvibhute 0:8070e5078178 62 (int16_t)(buffer[31] << 8) + buffer[30],
akashvibhute 0:8070e5078178 63 (int16_t)(buffer[33] << 8) + buffer[32]);
akashvibhute 0:8070e5078178 64
akashvibhute 0:8070e5078178 65 debug.printf("%f, %f, %f, %f\r\n",
akashvibhute 0:8070e5078178 66 (float)((((int32_t)buffer[0] << 24) + ((int32_t)buffer[1] << 16) + ((int32_t)buffer[2] << 8) + buffer[3]))* (1.0 / (1<<30)),
akashvibhute 0:8070e5078178 67 (float)((((int32_t)buffer[4] << 24) + ((int32_t)buffer[5] << 16) + ((int32_t)buffer[6] << 8) + buffer[7]))* (1.0 / (1<<30)),
akashvibhute 0:8070e5078178 68 (float)((((int32_t)buffer[8] << 24) + ((int32_t)buffer[9] << 16) + ((int32_t)buffer[10] << 8) + buffer[11]))* (1.0 / (1<<30)),
akashvibhute 0:8070e5078178 69 (float)((((int32_t)buffer[12] << 24) + ((int32_t)buffer[13] << 16) + ((int32_t)buffer[14] << 8) + buffer[15]))* (1.0 / (1<<30)));
akashvibhute 0:8070e5078178 70 */
akashvibhute 0:8070e5078178 71
akashvibhute 0:8070e5078178 72 q1.decode(buffer);
akashvibhute 0:8070e5078178 73 debug.printf("%f, %f, %f, %f\r\n", q1.w, q1.v.x, q1.v.y, q1.v.z);
akashvibhute 0:8070e5078178 74
akashvibhute 0:8070e5078178 75
akashvibhute 0:8070e5078178 76 //TeaPot Demo Packet for MotionFit SDK
akashvibhute 0:8070e5078178 77 /*
akashvibhute 0:8070e5078178 78 debug.putc('$'); //packet start
akashvibhute 0:8070e5078178 79 debug.putc((char)2); //assume packet type constant
akashvibhute 0:8070e5078178 80 debug.putc((char)0); //count seems unused
akashvibhute 0:8070e5078178 81 for(int i = 0; i < 16; i++){ //16 bytes for 4 32bit floats
akashvibhute 0:8070e5078178 82 debug.putc((char)(buffer[i]));
akashvibhute 0:8070e5078178 83 }
akashvibhute 0:8070e5078178 84 for(int i = 0; i < 5; i++){ //no idea, padded with 0
akashvibhute 0:8070e5078178 85 debug.putc((char)0);
akashvibhute 0:8070e5078178 86 }
akashvibhute 0:8070e5078178 87 */
akashvibhute 0:8070e5078178 88 }
akashvibhute 0:8070e5078178 89 }
akashvibhute 0:8070e5078178 90 }
akashvibhute 0:8070e5078178 91