本帖最后由 小白来学习 于 2016-7-28 17:45 编辑
众所众知,SPI的读写速度非常诱人,对于MPU9250而言,除了加速度、陀螺仪外,新增了磁力计模块,但是磁力计模块只支持I2C的读写,
为了能够利用起SPI的优势,此时MPU 内部的i2c Master功能为此提供了方便
楼主不才,花了一些功夫,仔细研读了MPU9250 datasheet 整理出SPI读取MPU9250全套工程源码,亲测可用。
楼主觉得有需要注意之处,都配有详细注释(若有不对之处请多多包涵)
希望能提供给大家一些参考价值(工程已打包附件,内附MPU datasheet资料及i2c源码)
MPU9250.rar
(9.73 MB, 下载次数: 179484)
2016-7-28 17:27 上传
点击文件名下载附件
下图为楼主SPI读取9轴数据——Jlink仿真结果
file:///C:UsersAdministratorAppDataRoamingTencentUsers312485168QQWinTempRichOleCG]XJ9D7$UK%PI00)8D90R0.png
你的这个问题我之前也碰到过,说说我的理解:spi读取磁力计中间经过了两个过程,spi ->master register ->iic->AK8963 ->iic->master->spi,spi驱动iic去读取磁力计,相比直接用iic读取要麻烦得多,还有在磁力计读取函数里的一些灵敏度的矫正,判读数据是否正确等你可以删掉,这些函数也是需要去读取ak8963的,删掉的话影响不大,可以提高读取速度。同时我们我们回过头来看看磁力计的手册,既使是设置磁力计连续测量频率最大也就是100hz(我记得是)。磁力计10ms采集一次,也就是说磁力计的采样不能像加表,陀螺仪一样频繁采样。10ms,20ms采一次足以。这个延时5000实际上是为了等待芯片采样完成而为。实际应用中,你可以在等待芯片内部采样过程中去完成其他任务,用定时器固定10ms去读数就可以,spi的优势确实是读数快,但只是读数快。可是在内部芯片限定了采样频率的情况下,读数再快也是没办法的。
一周热门 更多>