基于STM32标准库的IMU9250数据读取
关键词:MPU9250,九轴,STM32,I2C
MPU9250简介
MPU9250是一款九轴MEMS传感器,由两部分组成一组为三轴加速度传感器及三轴陀螺仪,另一组则是AKM公司的AK8963三轴磁力计。可以理解为将MPU6050和AK8963封装在一个芯片内。MPU9250中的加速度传感器(±2g,±4g,±8g,±16g)和陀螺仪(±250dps,±500dps,±1000dps,±2000dps)均支持量程可编程,加速度计和陀螺仪的测量结果以16数字方式输出,磁力计测量结果以16位或14位数字方式输出。MPU9250还内置温度传感器,可以用来进行不同温度下的校准。图1为MPU9250结构框图,通过结构框图可知,MPU9250通信方式为I2C或SPI。
图1 MPU9250结构框图
MPU9250应用较为广泛比如:手势控制,体感游戏控制,平衡车,室内定位,可穿戴设备等。除了MPU9250之外,还有很多类似的传感器以满足不同的应用场景。
要实现MPU9250的数据读取,我们需要了解三个方面的内容:I2C基本通信方式、MPU9250基本寄存器以及STM32的I2C控制模块。
I2C通信协议简介
这里仅根据满足读取MPU9250需求进行I2C通信方式介绍,不涉及复杂和细致部分。关于细节信息将在后面第二次迭代中讲述。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件(Master)用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件(Slave)。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。SCL为时钟信号线,SDA为数据信号线。图2和图3分别是MPU9250读写单个字节的方式。
图2 MPU9250写单个字节方式
图3 MPU9250读单个字节方式
对图2和图3中出现的符号进行说明
S:START,开始信号,对应SCL处于高时,SDA由高到低跳变。
AD:ADDRESS,从控制器的地址。
W:WRITE,读写位设置为写,清零。