MPU-6050为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间,它整合了3轴陀螺仪、3轴加速器,并含可由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化的API。xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
可是只这样查资料看也看不下去,还是从代码开始吧我知道mpu6050的例程,程序写的太棒了,很清楚。我把代码打开,编译,并烧录进板子,打开串口助手,效果实现了
哈哈,这么简单,,,可是我还是不了解他具体是怎么实现的。。。
一点点从代码看吧,先从主函数走吧
一般裸驱开发过程为系统初始化-->GPIO配置-->各驱动模块初始化-->主循环实现功能。第一步系统初始化是每一个例程所必须的,初始化的过程也是相同的,所以只需调用系统初始化接口即可。
主函数主要有四个函数
第一个SystemInit(),系统初始化
上边是关闭外设时钟,下边是配置系统时钟,为什么要先这么配置呢,关闭所有的外设时钟,可以降低不必要的功耗,用到谁就开启谁的时钟;因为校准时会改变系统时钟的设定,在此配置一下系统时钟。
在下边就是IO口初始化,哈原来mcu6050接口这么简单
I2C数据线P23,时钟线P24和一个串口线P31
这三个IO都是配置的普通IO状态,但是他实际的功能不是这样的,如果这样的话功能怎么会实现呢
接着往下看吧;第二个函数是uart0_init()串口初始化,由于要把数据打印出来,通过串口来看,所以得配置一下串口,开启时钟,设置波特率,使能发射接收。
第四个函数是中断的初始化,其中用到函数的回调,之前讲到过。
大家肯定说IO配置,系统初始化,串口配置,中断设定这些都是小case,确实重头好戏在后面呢
哈哈Duang出来了, MPU_Init,mpu6050的初始化
I2C初始化IIC_Init()这个函数,配置了引脚的功能,并且在规定地址开辟104字节的缓冲区
PWR_MGMT_1的寄存器
由程序可以看出最高为1,则是设备复位,也就是该语句的功能,使mcu6050复位,不过通过该寄存器还可以看出,在这个地址还可以配置为其他模式,这些很容易看出来的
下一句设置MPU_Set_Gyro_Fsr(3);设置陀螺仪传感器
3、4BIT为高既满量程为±2000dps
为什么直接写一个数就说他不是最低位,而是后边的呢,追踪进去看
哦哦,函数定义就是直接左移3位的
设置陀螺仪传感器的范围
设置加速度传感器
MPU6050的数据手册写得真详细,剩下的就不一一解释了,还是大家自己动手去看看吧,
这个例程写的也很好,
当mpu6050进入中断后,开始读取加速度值,读取陀螺仪的值,并打印出来。
啊,这个例程终于完了,可是mcu6050就是这点功能吗?他在我的心目中是那么的神秘,看来还得继续了解了。哈哈
MPU-6050为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间,它整合了3轴陀螺仪、3轴加速器,并含可由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理硬件加速引擎,由主要I2C端口以单一数据流的形式,向应用端输出完整的9轴融合演算技术的运动处理资料库,可处理运动感测的复杂数据,降低了运动处理运算对操作系统的负荷,并为应用开发提供架构化的API。xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
可是只这样查资料看也看不下去,还是从代码开始吧我知道mpu6050的例程,程序写的太棒了,很清楚。我把代码打开,编译,并烧录进板子,打开串口助手,效果实现了
哈哈,这么简单,,,可是我还是不了解他具体是怎么实现的。。。
一点点从代码看吧,先从主函数走吧
一般裸驱开发过程为系统初始化-->GPIO配置-->各驱动模块初始化-->主循环实现功能。第一步系统初始化是每一个例程所必须的,初始化的过程也是相同的,所以只需调用系统初始化接口即可。
主函数主要有四个函数
第一个SystemInit(),系统初始化
上边是关闭外设时钟,下边是配置系统时钟,为什么要先这么配置呢,关闭所有的外设时钟,可以降低不必要的功耗,用到谁就开启谁的时钟;因为校准时会改变系统时钟的设定,在此配置一下系统时钟。
在下边就是IO口初始化,哈原来mcu6050接口这么简单
I2C数据线P23,时钟线P24和一个串口线P31
这三个IO都是配置的普通IO状态,但是他实际的功能不是这样的,如果这样的话功能怎么会实现呢
接着往下看吧;第二个函数是uart0_init()串口初始化,由于要把数据打印出来,通过串口来看,所以得配置一下串口,开启时钟,设置波特率,使能发射接收。
第四个函数是中断的初始化,其中用到函数的回调,之前讲到过。
大家肯定说IO配置,系统初始化,串口配置,中断设定这些都是小case,确实重头好戏在后面呢
哈哈Duang出来了, MPU_Init,mpu6050的初始化
I2C初始化IIC_Init()这个函数,配置了引脚的功能,并且在规定地址开辟104字节的缓冲区
PWR_MGMT_1的寄存器
由程序可以看出最高为1,则是设备复位,也就是该语句的功能,使mcu6050复位,不过通过该寄存器还可以看出,在这个地址还可以配置为其他模式,这些很容易看出来的
下一句设置MPU_Set_Gyro_Fsr(3);设置陀螺仪传感器
3、4BIT为高既满量程为±2000dps
为什么直接写一个数就说他不是最低位,而是后边的呢,追踪进去看
哦哦,函数定义就是直接左移3位的
设置陀螺仪传感器的范围
设置加速度传感器
MPU6050的数据手册写得真详细,剩下的就不一一解释了,还是大家自己动手去看看吧,
这个例程写的也很好,
当mpu6050进入中断后,开始读取加速度值,读取陀螺仪的值,并打印出来。
啊,这个例程终于完了,可是mcu6050就是这点功能吗?他在我的心目中是那么的神秘,看来还得继续了解了。哈哈
恩恩,好的