STM32/STM8技术论坛
直播中

阿飞

11年用户 124经验值
擅长:控制/MCU RF/无线
私信 关注
[经验]

【STM32F103试用体验】MPU9250九轴姿态测量显示及串口输出实验

实验名称:MPU9250九轴姿态测量显示及串口输出实验

实验目的:通过精英STM32F103开发板与MPU9250传感器连接,测量九轴姿态值,实时在LCD屏上显示并输出到串口显示

实验效果:

3.jpg
实验材料:

精英STM32F103开发板(含LCD屏)

MPU9250指南针磁场传感器模块

杜邦线

2.jpg
实验步骤:

1.连接传感器

将传感器的四个引脚VCC,GND,SCL,SDA分别连接至开发板的3.3V,GND,PE2,PE0引脚

1.jpg
2.开启读数

启动开发板电源,此时程序将MPU9250九轴数据循环读出并在LCD中显示,同时输出至PC串口

4.jpg
3.串口读数

PC端打开串口软件,可看到9姿态数据一直在刷新显示

5.jpg
总结:精英STM32F103开发板资源丰富, 结构精巧, 功能强大, 是学习STM32的非常好的一款开发板. 通过对此开发板的试用, 在STM32开发上有非常大的进步. 也还有很多功能没有使用到, 还需要持续学习和研究.

实验过程视频:

[media]http://v.youku.com/v_show/id_XMzg5NzEzODAzMg==.html?x&sharefrom=android&sharekey=e90a3006b5ce17c87f44fcd69d9bbf3f5[/media]
主要代码:

  1. int main(void)
  2. {       
  3.         delay_init();
  4.         GPIO_Configuration();                 //配置GPIO
  5.   USART1_Configuration();         //配置串口1
  6.   I2C_GPIO_Config();                 //配置IIC使用端口
  7.   Delayms(10);                                 //延时
  8.   Init_MPU9250();                     //初始化MPU9250
  9.         LCD_Init();
  10.         InitMainView();
  11.   while(1)
  12. {
  13.          READ_MPU9250_ACCEL();  //加速度
  14.         DATA_printf(TX_DATA,T_X);//转换X轴数据到数组
  15.         Send_data('A','X');                         //发送X轴数
  16.         Show_Str(120,110,WHITE,BLACK,TX_DATA,16,0);
  17.         DATA_printf(TX_DATA,T_Y);//转换Y轴数据到数组
  18.         Send_data('A','Y');                         //发送Y轴数
  19.         Show_Str(255,110,WHITE,BLACK,TX_DATA,16,0);
  20.         DATA_printf(TX_DATA,T_Z);//转换Z轴数据到数组
  21.         Send_data('A','Z');                         //发送Z轴数
  22.         Show_Str(390,110,WHITE,BLACK,TX_DATA,16,0);
  23.          
  24.         READ_MPU9250_GYRO();      //陀螺
  25.         DATA_printf(TX_DATA,T_X);//转换X轴数据到数组
  26.         Send_data('G','X');                         //发送X轴数
  27.         Show_Str(120,140,WHITE,BLACK,TX_DATA,16,0);
  28.         DATA_printf(TX_DATA,T_Y);//转换Y轴数据到数组
  29.         Send_data('G','Y');                         //发送Y轴数
  30.         Show_Str(255,140,WHITE,BLACK,TX_DATA,16,0);
  31.         DATA_printf(TX_DATA,T_Z);//转换Z轴数据到数组
  32.         Send_data('G','Z');                         //发送Z轴数
  33.         Show_Str(390,140,WHITE,BLACK,TX_DATA,16,0);
  34.          
  35.         READ_MPU9250_MAG();              //磁场
  36.   DATA_printf(TX_DATA,T_X);//转换X轴数据到数组
  37.         Send_data('M','X');                         //发送X轴数
  38.         Show_Str(120,170,WHITE,BLACK,TX_DATA,16,0);
  39.         DATA_printf(TX_DATA,T_Y);//转换Y轴数据到数组
  40.         Send_data('M','Y');                         //发送Y轴数
  41.         Show_Str(255,170,WHITE,BLACK,TX_DATA,16,0);
  42.         DATA_printf(TX_DATA,T_Z);//转换Z轴数据到数组
  43.         Send_data('M','Z');                         //发送Z轴数
  44.         Show_Str(390,170,WHITE,BLACK,TX_DATA,16,0);
  45.        
  46.         USART1_SendData(0X0D);         //换行
  47.         USART1_SendData(0X0A);         //回车
  48.         Delayms(10);                                 //延时
  49.   }
  50. }


回帖(16)

陈金海

2019-6-2 17:17:54
能分享一下源码吗
1 举报
  • 嵌入123: 链接:https://pan.baidu.com/s/1R_j4hpZkWOx7lfSmpfsmlw
    提取码:qlnm
    这个是STM32F407的MPU9250的代码,使用的是原子哥的列程来移植的,DMP的MPL库。我花了好几周的时间才弄出来,分享给大家,少走些弯路。

陈金海

2019-6-2 17:18:27
楼主大大 方便吗
1 举报
  • 阿飞: 嗨, 好久不逛论坛. 其实源码没什么, MPU9250的读数在它的硬件Demo中有, LCD显示的功能在它的Demo中也很充分. 上面贴出来的代码就是我自己的读数显示部分.
    需要源码的话在这里留个联系方式或者私信给我, 我找找发你.

tuffy

2019-7-15 19:20:20
1964623207@qq.com楼主可以发我一份吗
4 举报
  • 嵌入123: 链接:https://pan.baidu.com/s/1R_j4hpZkWOx7lfSmpfsmlw
    提取码:qlnm
    这个是STM32F407的MPU9250的代码,使用的是原子哥的列程来移植的,DMP的MPL库。我花了好几周的时间才弄出来,分享给大家,少走些弯路。
  • 秋水 回复 嵌入123: 133456
  • 秋水 回复 嵌入123: 122344352
  • tuffy: 11111

小菜鸟

2019-7-23 08:18:02
1323769659@qq.com  谢谢楼主,算了好长时间没有弄出来
举报

布拉

2019-7-24 14:16:37
楼主您好~可以发一份源码么 谢谢啦
1035842901@qq.com
举报

百年耕四季

2019-8-6 16:56:42
2845340804@qq.com谢谢楼主了
举报

Liqipeng

2019-8-9 14:48:37
请问楼主可以给我发一份吗?2294881484@qq.com。本人不甚感激。谢谢了~
举报

李维

2019-8-30 09:36:58
楼主大大能发一份给我嘛,我最近也在学习这个1720062823@qq.com十分感谢楼主大大
举报

一代天骄7

2019-9-9 09:05:15
楼主大大能发我一份吗?307192837@qq.com
举报

教练wen

2019-10-6 03:26:23
楼主你这个这个mpu程序能控制步进电机吗
举报

h1654155286.7058

2020-5-1 10:34:52
楼主可以发我一份吗,谢谢啦 1301358782@qq.com
举报

xie

2020-5-6 15:41:34
楼主能发我一份吗 393020657@qq.com  
举报

嵌入123

2020-6-28 21:04:30
链接:https://pan.baidu.com/s/1R_j4hpZkWOx7lfSmpfsmlw
提取码:qlnm
这个是STM32F407的MPU9250的代码,使用的是原子哥的列程来移植的,DMP的MPL库。我花了好几周的时间才弄出来,分享给大家,少走些弯路。
举报

火印冰薪

2020-6-29 10:31:34
你这个应该是按照ASCLL码发数据的,想问一下你这个通信的时候波特率在多少?然后以16进制发数据能行不?
2 举报
  • 阿飞: 好久没来论坛.
    Send_data函数是调用了stm32f10x_usart.c中的USART_SendData进行发送, 电脑端波特率应该是115200位/S.函数内容如下:
    void Send_data(uchar MAG,uchar axis)
    {
            uchar i;
            USART_SendData(USART1, MAG);
      USART_SendData(USART1, axis);
      USART_SendData(USART1, ':');
      for(i=0;i<4;i++)
             USART_SendData(USART1, TX_DATA);
      USART_SendData(USART1, ' ');
      USART_SendData(USART1, ' ');
    }
  • 阿飞: USART_SendData是发送uchar字符的,是8位.
    如需发送16进制, 查询得知需以DR寄存器, 查到的代码如下(未验证):
    USART1->DR=DB;
    while((USART1->SR&0x40)==0);

祖林禄

2020-10-23 14:52:26
麻烦楼主给发个源码吧,多谢了1025562355@qq.com
举报

赵平嘉

2021-5-7 22:03:48
2424880113@qq.com救救孩子吧,一直读不到磁力计
举报

更多回帖

×
20
完善资料,
赚取积分