0 概述

使用的单片机型号为:STM32F103ZET6

传感器为:MPU9250

1 传感器简介

MPU9250包括三轴加速度计、三轴陀螺仪和三轴磁强计,以及动态运动处理器(DMP)。

2 编译环境

采用的编译工具为MDK

3 通信方式

MPU9250支持IIC和SPI两种通信方式,本文采用的是IIC总线通信。

4 传感器初始化配置如下

      {0x80, MPU9250_RA_PWR_MGMT_1}    // Reset Device

      {0x01, MPU9250_RA_PWR_MGMT_1}     // Clock Source

      {0x00, MPU9250_RA_PWR_MGMT_2}     // Enable Acc & Gyro

      {0x07, MPU9250_RA_CONFIG}         // 

      {0x00, MPU9250_RA_GYRO_CONFIG}    // +-250dps

      {0x00, MPU9250_RA_ACCEL_CONFIG}   // +-2G

      {0x00, MPU9250_RA_ACCEL_CONFIG_2} // Set Acc Data Rates

      {0x30, MPU9250_RA_INT_PIN_CFG}    // 

      {0x40, MPU9250_RA_I2C_MST_CTRL}   // I2C Speed 348 kHz

      {0x20, MPU9250_RA_USER_CTRL}      // Enable AUX

      {0x8C, MPU9250_RA_I2C_SLV0_ADDR}  

      {0x00, MPU9250_RA_I2C_SLV0_REG}   

      {0x81, MPU9250_RA_I2C_SLV0_CTRL}

      {0x01, MPU9250_RA_I2C_MST_DELAY_CTRL}

5 测试连通性代码
读取三轴加速度计和三轴陀螺仪MPU6500设备ID
MPU9250_readBytes(devAddr, MPU9250_RA_WHO_AM_I, 1, &DeviceID);
MPU6500设备ID为0x71
读取三轴磁强计AK8963设备ID
MPU9250_WriteReg(MPU9250_RA_I2C_SLV0_ADDR, 0x18); // Set AK8963 IIC address
MPU9250_WriteReg(MPU9250_RA_I2C_SLV0_REG, AK8963_WIA);     // Set Write Reg
MPU9250_WriteReg(MPU9250_RA_I2C_SLV0_CTRL, 0x81);          // Start Read
MPU9250_ReadReg(MPU9250_RA_EXT_SENS_DATA_00, &DeviceID);   // Read Data
读取AK8963设备ID为0x00
可能的原因:
(1)缺少其它涉及到AK8963部分的代码配置
(2)传感器模块有问题(可能性较低)
部分代码参考自网络,感谢台湾的王文宏先生!