NuMaker-PFM-NUC472: I2C0 read on-board MPU6500 and calculate tilt angle

Committer:
cyliang
Date:
Wed Mar 01 03:29:49 2023 +0000
Revision:
6:911c09e70fe4
Parent:
0:d1cab7bc0553
Update OS v6.17.0 for M467 target

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rkuo2000 0:d1cab7bc0553 1 #define MPU6500_SELF_TEST_X_GYRO 0x00
rkuo2000 0:d1cab7bc0553 2 #define MPU6500_SELF_TEST_Y_GYRO 0x01
rkuo2000 0:d1cab7bc0553 3 #define MPU6500_SELF_TEST_Z_GYRO 0x02
rkuo2000 0:d1cab7bc0553 4 #define MPU6500_SELF_TEST_X_ACCEL 0x0D
rkuo2000 0:d1cab7bc0553 5 #define MPU6500_SELF_TEST_Y_ACCEL 0x0E
rkuo2000 0:d1cab7bc0553 6 #define MPU6500_SELF_TEST_Z_ACCEL 0x0F
rkuo2000 0:d1cab7bc0553 7 #define MPU6500_XG_OFFSET_H 0x13
rkuo2000 0:d1cab7bc0553 8 #define MPU6500_XG_OFFSET_L 0x14
rkuo2000 0:d1cab7bc0553 9 #define MPU6500_YG_OFFSET_H 0x15
rkuo2000 0:d1cab7bc0553 10 #define MPU6500_YG_OFFSET_L 0x16
rkuo2000 0:d1cab7bc0553 11 #define MPU6500_ZG_OFFSET_H 0x17
rkuo2000 0:d1cab7bc0553 12 #define MPU6500_ZG_OFFSET_L 0x18
rkuo2000 0:d1cab7bc0553 13 #define MPU6500_SMPLRT_DIV 0x19
rkuo2000 0:d1cab7bc0553 14 #define MPU6500_CONFIG 0x1A
rkuo2000 0:d1cab7bc0553 15 #define MPU6500_GYRO_CONFIG 0x1B
rkuo2000 0:d1cab7bc0553 16 #define MPU6500_ACCEL_CONFIG 0x1C
rkuo2000 0:d1cab7bc0553 17 #define MPU6500_ACCEL_CONFIG2 0x1D
rkuo2000 0:d1cab7bc0553 18 #define MPU6500_LP_ACCEL_ODR 0x1E
rkuo2000 0:d1cab7bc0553 19 #define MPU6500_WOM_THR 0x1F
rkuo2000 0:d1cab7bc0553 20 #define MPU6500_FIFO_EN 0x23
rkuo2000 0:d1cab7bc0553 21 #define MPU6500_I2C_MST_CTRL 0x24
rkuo2000 0:d1cab7bc0553 22 #define MPU6500_I2C_SLV0_ADDR 0x25
rkuo2000 0:d1cab7bc0553 23 #define MPU6500_I2C_SLV0_REG 0x26
rkuo2000 0:d1cab7bc0553 24 #define MPU6500_I2C_SLV0_CTRL 0x27
rkuo2000 0:d1cab7bc0553 25 #define MPU6500_I2C_SLV1_ADDR 0x28
rkuo2000 0:d1cab7bc0553 26 #define MPU6500_I2C_SLV1_REG 0x29
rkuo2000 0:d1cab7bc0553 27 #define MPU6500_I2C_SLV1_CTRL 0x2A
rkuo2000 0:d1cab7bc0553 28 #define MPU6500_I2C_SLV2_ADDR 0x2B
rkuo2000 0:d1cab7bc0553 29 #define MPU6500_I2C_SLV2_REG 0x2C
rkuo2000 0:d1cab7bc0553 30 #define MPU6500_I2C_SLV2_CTRL 0x2D
rkuo2000 0:d1cab7bc0553 31 #define MPU6500_I2C_SLV3_ADDR 0x2E
rkuo2000 0:d1cab7bc0553 32 #define MPU6500_I2C_SLV3_REG 0x2F
rkuo2000 0:d1cab7bc0553 33 #define MPU6500_I2C_SLV3_CTRL 0x30
rkuo2000 0:d1cab7bc0553 34 #define MPU6500_I2C_SLV4_ADDR 0x31
rkuo2000 0:d1cab7bc0553 35 #define MPU6500_I2C_SLV4_REG 0x32
rkuo2000 0:d1cab7bc0553 36 #define MPU6500_I2C_SLV4_DO 0x33
rkuo2000 0:d1cab7bc0553 37 #define MPU6500_I2C_SLV4_CTRL 0x34
rkuo2000 0:d1cab7bc0553 38 #define MPU6500_I2C_SLV4_DI 0x35
rkuo2000 0:d1cab7bc0553 39 #define MPU6500_I2C_MST_STATUS 0x36
rkuo2000 0:d1cab7bc0553 40 #define MPU6500_INT_PIN_CFG 0x37
rkuo2000 0:d1cab7bc0553 41 #define MPU6500_INT_ENABLE 0x38
rkuo2000 0:d1cab7bc0553 42 #define MPU6500_INT_STATUS 0x3A
rkuo2000 0:d1cab7bc0553 43 #define MPU6500_ACCEL_XOUT_H 0x3B
rkuo2000 0:d1cab7bc0553 44 #define MPU6500_ACCEL_XOUT_L 0x3C
rkuo2000 0:d1cab7bc0553 45 #define MPU6500_ACCEL_YOUT_H 0x3D
rkuo2000 0:d1cab7bc0553 46 #define MPU6500_ACCEL_YOUT_L 0x3E
rkuo2000 0:d1cab7bc0553 47 #define MPU6500_ACCEL_ZOUT_H 0x3F
rkuo2000 0:d1cab7bc0553 48 #define MPU6500_ACCEL_ZOUT_L 0x40
rkuo2000 0:d1cab7bc0553 49 #define MPU6500_TEMP_OUT_H 0x41
rkuo2000 0:d1cab7bc0553 50 #define MPU6500_TEMP_OUT_L 0x42
rkuo2000 0:d1cab7bc0553 51 #define MPU6500_GYRO_XOUT_H 0x43
rkuo2000 0:d1cab7bc0553 52 #define MPU6500_GYRO_XOUT_L 0x44
rkuo2000 0:d1cab7bc0553 53 #define MPU6500_GYRO_YOUT_H 0x45
rkuo2000 0:d1cab7bc0553 54 #define MPU6500_GYRO_YOUT_L 0x46
rkuo2000 0:d1cab7bc0553 55 #define MPU6500_GYRO_ZOUT_H 0x47
rkuo2000 0:d1cab7bc0553 56 #define MPU6500_GYRO_ZOUT_L 0x48
rkuo2000 0:d1cab7bc0553 57 #define MPU6500_EXT_SENS_DATA_00 0x49
rkuo2000 0:d1cab7bc0553 58 #define MPU6500_EXT_SENS_DATA_01 0x4A
rkuo2000 0:d1cab7bc0553 59 #define MPU6500_EXT_SENS_DATA_02 0x4B
rkuo2000 0:d1cab7bc0553 60 #define MPU6500_EXT_SENS_DATA_03 0x4C
rkuo2000 0:d1cab7bc0553 61 #define MPU6500_EXT_SENS_DATA_04 0x4D
rkuo2000 0:d1cab7bc0553 62 #define MPU6500_EXT_SENS_DATA_05 0x4E
rkuo2000 0:d1cab7bc0553 63 #define MPU6500_EXT_SENS_DATA_06 0x4F
rkuo2000 0:d1cab7bc0553 64 #define MPU6500_EXT_SENS_DATA_07 0x50
rkuo2000 0:d1cab7bc0553 65 #define MPU6500_EXT_SENS_DATA_08 0x51
rkuo2000 0:d1cab7bc0553 66 #define MPU6500_EXT_SENS_DATA_09 0x52
rkuo2000 0:d1cab7bc0553 67 #define MPU6500_EXT_SENS_DATA_10 0x53
rkuo2000 0:d1cab7bc0553 68 #define MPU6500_EXT_SENS_DATA_11 0x54
rkuo2000 0:d1cab7bc0553 69 #define MPU6500_EXT_SENS_DATA_12 0x55
rkuo2000 0:d1cab7bc0553 70 #define MPU6500_EXT_SENS_DATA_13 0x56
rkuo2000 0:d1cab7bc0553 71 #define MPU6500_EXT_SENS_DATA_14 0x57
rkuo2000 0:d1cab7bc0553 72 #define MPU6500_EXT_SENS_DATA_15 0x58
rkuo2000 0:d1cab7bc0553 73 #define MPU6500_EXT_SENS_DATA_16 0x59
rkuo2000 0:d1cab7bc0553 74 #define MPU6500_EXT_SENS_DATA_17 0x5A
rkuo2000 0:d1cab7bc0553 75 #define MPU6500_EXT_SENS_DATA_18 0x5B
rkuo2000 0:d1cab7bc0553 76 #define MPU6500_EXT_SENS_DATA_19 0x5C
rkuo2000 0:d1cab7bc0553 77 #define MPU6500_EXT_SENS_DATA_20 0x5D
rkuo2000 0:d1cab7bc0553 78 #define MPU6500_EXT_SENS_DATA_21 0x5E
rkuo2000 0:d1cab7bc0553 79 #define MPU6500_EXT_SENS_DATA_22 0x5F
rkuo2000 0:d1cab7bc0553 80 #define MPU6500_EXT_SENS_DATA_23 0x60
rkuo2000 0:d1cab7bc0553 81 #define MPU6500_I2C_SLV0_DO 0x63
rkuo2000 0:d1cab7bc0553 82 #define MPU6500_I2C_SLV1_DO 0x64
rkuo2000 0:d1cab7bc0553 83 #define MPU6500_I2C_SLV2_DO 0x65
rkuo2000 0:d1cab7bc0553 84 #define MPU6500_I2C_SLV3_DO 0x66
rkuo2000 0:d1cab7bc0553 85 #define MPU6500_I2C_MST_DELAY_CTRL 0x67
rkuo2000 0:d1cab7bc0553 86 #define MPU6500_SIGNAL_PATH_RESET 0x68
rkuo2000 0:d1cab7bc0553 87 #define MPU6500_ACCEL_INTEL_CTRL 0x69
rkuo2000 0:d1cab7bc0553 88 #define MPU6500_USER_CTRL 0x6A
rkuo2000 0:d1cab7bc0553 89 #define MPU6500_PWR_MGMT_1 0x6B
rkuo2000 0:d1cab7bc0553 90 #define MPU6500_PWR_MGMT_2 0x6C
rkuo2000 0:d1cab7bc0553 91 #define MPU6500_FIFO_COUNT_H 0x72
rkuo2000 0:d1cab7bc0553 92 #define MPU6500_FIFO_COUNT_L 0x73
rkuo2000 0:d1cab7bc0553 93 #define MPU6500_FIFO_R_W 0x74
rkuo2000 0:d1cab7bc0553 94 #define MPU6500_WHO_AM_I 0x75
rkuo2000 0:d1cab7bc0553 95 #define MPU6500_XA_OFFSET_H 0x77
rkuo2000 0:d1cab7bc0553 96 #define MPU6500_XA_OFFSET_L 0x78
rkuo2000 0:d1cab7bc0553 97 #define MPU6500_YA_OFFSET_H 0x79
rkuo2000 0:d1cab7bc0553 98 #define MPU6500_YA_OFFSET_L 0x7A
rkuo2000 0:d1cab7bc0553 99 #define MPU6500_ZA_OFFSET_H 0x7D
rkuo2000 0:d1cab7bc0553 100 #define MPU6500_ZA_OFFSET_L 0x7E
rkuo2000 0:d1cab7bc0553 101
rkuo2000 0:d1cab7bc0553 102 #define MPU6500_slave_addr 0xD0
rkuo2000 0:d1cab7bc0553 103
rkuo2000 0:d1cab7bc0553 104 class MPU6500 {
rkuo2000 0:d1cab7bc0553 105 public:
rkuo2000 0:d1cab7bc0553 106 void initialize();
rkuo2000 0:d1cab7bc0553 107 int16_t getAccelXvalue();
rkuo2000 0:d1cab7bc0553 108 int16_t getAccelYvalue();
rkuo2000 0:d1cab7bc0553 109 int16_t getAccelZvalue();
rkuo2000 0:d1cab7bc0553 110 int16_t getGyroXvalue();
rkuo2000 0:d1cab7bc0553 111 int16_t getGyroYvalue();
rkuo2000 0:d1cab7bc0553 112 int16_t getGyroZvalue();
rkuo2000 0:d1cab7bc0553 113 };