当前位置:首页 > 技术学院 > 电子技术资源
[导读]MPU9250在STM32单片机SPI通信接口下的初始化及九轴数据读取总结

MPU9250STM32单片机SPI通信接口下的初始化及九轴数据读取总结

很多人用SPI接口读取MPU9250磁力计数据读不出来,关键问题在于MPU9250内部与磁力计是IIC接口(很坑,技术文档也没有特别说明,只在内部结构图中有展示),所以读取时必须要加延时,若只读取加速度和陀螺仪数据才可以达到1-20MHz的速率。

大部分单片机IIC接口不是很好用,相信很多朋友在调试的时候踩过不少坑,而且由于IIC自身的限制,采样速率有时不足为用,所以被迫换为SPI接口。但SPI接口调试磁力计依然受内部IIC限制,不过若只使用加速度和陀螺仪数据,速率便会比IIC快几倍。

本次博客记录笔者在实际调试过程中遇到的一些问题,以提醒后人在调试中应该注意的事项,以免踩坑。

本次调试采用STM32f103系列单片机进行数据读取。

一、初始化流程:

1.解除休眠;

2.初始化内部IIC(mpu9250内部采用IIC与磁力计通信);

3.SPI初始化加速度计和陀螺仪(配置参数具体参考技术手册);

4.通过SPI与内部IIC通信,初始化磁力计;

5.根据需求决定FIFO、DMP是否启用。

注意:

1.解除休眠后要加至少100ms延时,以保证mpu9250初始化完毕(内部IIC通信较慢),若只读取加速度计和陀螺仪的六轴数据而不使用磁力计的话,可以省去磁力计的初始化部分。

2.加速度计和陀螺仪的量程(精度)由实际使用情况配置,人体姿态捕获建议加速度计±8g,陀螺仪设置最大±2000°/s;

二、SPI接口配置及通信底层程序

本次调试使用的是硬件SPI接口,具体使用接口请按照硬件实际连接接口配置。

1.SPI接口初始化:

2.SPI发送一个字节:

3.MPU9250寄存器读写:

SPI写寄存器:

4.MPU9250内部IIC的写入和读取(磁力计用):

注意:

实测地磁计数据读取要加100us以上延时保证数据读取完整,否则磁力计数据会有问题;

内部IIC写入:

三、九轴数据的读取

1.加速度读取:

2.陀螺仪读取:

3.磁力计读取:

i2c_Mag_read(AK8963_ST2_REG) 此步读取不可省略;

数据读取结束寄存器,reading this register means data reading end;

AK8963_ST2_REG 同时具有数据非正常溢出检测功能;

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭