标题: STM32-MPU6050测试程序 简单地获取传感器数据 [打印本页]

作者: fhrfhrfhr    时间: 2017-5-2 00:32
标题: STM32-MPU6050测试程序 简单地获取传感器数据
/*********************************************************************************************/
【*】程序简介

-工程名称:陀螺仪—MPU6050
-实验平台: 秉火STM32 指南者  开发板
-MDK版本:5.16
-ST固件库版本:3.5

【 !】功能简介:

基本MPU6050驱动,简单地获取传感器数据。

【*】注意事项:

1.本工程使用硬件IIC,硬件IIC与液晶屏同时使用时会有冲突,所以本程序不包含液晶输出。

2.MPU6050的AD0引脚接GND时,地址为0x68 ,接3.3V时,地址为0x69,
  
  可在bsp_i2c.h文件修改宏MPU6050_SLAVE_ADDRESS的值来匹配硬件连接,默认AD0接地,使用0x68地址

  #define MPU6050_SLAVE_ADDRESS  (0x68<<1)      


【 !】实验操作:

步骤如下(步骤可参考配套的教程,有图片说明):

1.按照引脚分配说明连接好MPU6050模块和开发板。

2.确认开发板的USB TO USART接口已与电脑相连,确认电脑端能查看到该串口设备。

3..打开串口调试助手(波特率为115200),即可查看数据输出。




【*】 引脚分配
陀螺仪(MPU6050):
MPU6050芯片的I2C接口与STM32的I2C1相连,且已接上拉电阻。
        VCC <--->3.3或5V
        GND    <--->GND
        SCL    <--->PB6
        SDA    <--->PB7
        INT <--->PA11  传感器数据中断引脚
        AD0 <--->悬空或接地
        
串口(TTL-USB TO USART):
CH340的收发引脚与STM32的发收引脚相连。
    RX<--->PA9
    TX<--->PA10
                    

/*********************************************************************************************/

【*】 版本

-程序版本:1.0
-发布日期:2015-10

-版本更新说明:首次发布

/*********************************************************************************************/

/*********************************************************************************************/



stm32单片机源程序:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  LYC
  5.   * @version V1.0
  6.   * @date    2014-04-22
  7.   * @brief   MPU6050 硬件IIC测试
  8.   ******************************************************************************
  9.   * @attention
  10.   * 实验平台:秉火 指南者 STM32 开发板
  11.   ******************************************************************************
  12.   */
  13.   
  14. #include "stm32f10x.h"
  15. #include "stm32f10x_it.h"
  16. #include "./systick/bsp_SysTick.h"
  17. #include "./led/bsp_led.h"
  18. #include "./usart/bsp_usart.h"
  19. #include "./mpu6050/mpu6050.h"
  20. #include "./i2c/bsp_i2c.h"


  21. #define TASK_ENABLE 0
  22. extern unsigned int Task_Delay[NumOfTask];
  23. /*
  24. * t : 定时时间
  25. * Ticks : 多少个时钟周期产生一次中断
  26. * f : 时钟频率 72000000
  27. * t = Ticks * 1/f = (72000000/100000) * (1/72000000) = 10us
  28. */

  29. /**
  30.   * @brief  主函数
  31.   * @param  无  
  32.   * @retval 无
  33.   */
  34. int main(void)
  35. {
  36.         short Acel[3];
  37.         short Gyro[3];
  38.         float Temp;
  39.        
  40.         SysTick_Init();
  41.         SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
  42.         /* LED 端口初始化 */
  43.         LED_GPIO_Config();
  44.         /* 串口通信初始化 */
  45.         USART_Config();

  46.         //I2C初始化
  47.         I2C_Bus_Init();
  48.         //MPU6050初始化
  49.         MPU6050_Init();
  50.        
  51.         //检测MPU6050
  52.         if (MPU6050ReadID() == 1)
  53.         {       
  54.                 while(1)
  55.                 {
  56.                         if(Task_Delay[0]==TASK_ENABLE)
  57.                         {
  58.                                 LED2_TOGGLE;
  59.                                 Task_Delay[0]=1000;
  60.                         }
  61.                        
  62.                         if(Task_Delay[1]==0)
  63.                         {
  64.                                 MPU6050ReadAcc(Acel);
  65.                                 printf("加速度:%8d%8d%8d",Acel[0],Acel[1],Acel[2]);
  66.                                 MPU6050ReadGyro(Gyro);
  67.                                 printf("    陀螺仪%8d%8d%8d",Gyro[0],Gyro[1],Gyro[2]);
  68.                                 MPU6050_ReturnTemp(&Temp);
  69.                                 printf("    温度%8.2f\r\n",Temp);
  70.                                
  71.                                 Task_Delay[1]=500;//更新一次数据,可根据自己的需求,提高采样频率,如100ms采样一次
  72.                         }

  73.                         //*************************************        下面是增加任务的格式************************************//
  74.         //                if(Task_Delay[i]==0)
  75.         //                {
  76.         //                        Task(i);
  77.         //                        Task_Delay[i]=;
  78.         //                }

  79.                 }

  80.         }
  81.         else
  82.         {
  83.                 printf("\r\n没有检测到MPU6050传感器!\r\n");


  84. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
1.硬件STM32-MPU6050.zip (6.44 MB, 下载次数: 196)


作者: 法式油炸薯条    时间: 2018-4-10 20:23
下载下来学习一下!
作者: 1538762186    时间: 2018-5-1 15:00
下载资料学习学习
作者: 337252952    时间: 2018-7-1 11:00
很给力的一篇文张啊
作者: 337252952    时间: 2018-7-1 11:01
我觉得应该把单片机程序展示出来
作者: mycnxp    时间: 2018-7-22 12:23
我像知道附件里面是什么??
作者: mycnxp    时间: 2018-7-22 19:02
这个你自己测试过吗?
作者: Ray_96    时间: 2018-8-4 01:24
学习学习
作者: 小赵伟    时间: 2018-8-31 18:47
你这测得的是原始值啊,能打印出具体角度、加速度么
作者: tangwubing    时间: 2018-12-3 20:28
很给力的一篇文张啊
作者: niuyunbo    时间: 2019-2-1 15:09

下载下来学习一下!
作者: thinkingpadcui    时间: 2019-4-19 20:18
改成i2c2就不行了 啊
作者: terryrret    时间: 2019-6-28 01:30
最近在做这方面的仿真,正好学习一下。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1