本帖最后由 xyc2690 于 2015-1-29 17:09 编辑
功能:DMP读取MPU6050四元数,转换成欧拉角。 引脚: MPU6050: SCL-->PB8 SDA-->PB9 ADO-->GND USART1: Tx PA9 官方提供的DMP移植到Nucleo F072RB 欧拉角:Roll Pitch Yaw 2s左右初始化建立时间。 Roll和Pitch比较稳定。静止时数据没有漂移。 Yaw会漂移,MPU6050,6轴无法校正。需要用磁力传感器。
之前直接去读原始数据,读出三轴加速度和三轴角加速度,但是数据融合一直不好,要做平衡车的话用到俯仰角和一轴角加速度就行了,后来才发现用DMP处理好的数据更方便。网上有许多移植到STM32F103的,但是手头没有103的板子,加上准备学习用新的HAL库,于是折腾了2天移植到活动送的NucleoF072上,IIC比较关键,认真的做好时序之后会很省心。最后读出的四元数是Q30的,要除一下。
IIC驱动那边需要注意一下,6050官方库里的函数返回值,成功返回0,异常返回-1,-2 等。 一般写1表示成功,0表示失败。大家移植的时候注意一下。 存在FIFO溢出的问题,具体在dmp_read_fifo()函数里的mpu_read_fifo_stream()的最后
暂时把它注释掉了,有人知道如何解决吗? 参加活动有NucleoF072rb的板子并且有MPU6050的朋友可以试一下 程序:
Nocleo_soft_i2c_test1 - 移植失败1失败2失败3成功4.zip
(4.07 MB, 下载次数: 2988)
|
微信公众号
手机版
电机好好选哈~
多谢版主的开发板