找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 199|回复: 2
打印 上一主题 下一主题
收起左侧

求助大神:MPU6050接收无数据

[复制链接]
跳转到指定楼层
楼主
本帖最后由 face-v 于 2025-4-8 23:37 编辑

问题如题,是mpu6050打开串口接收数据无显示



跪求大佬帮忙,整了一天了快
改过I2C地址,弄过boot0跳线帽,改过程序,换过串口助手,还是不行

---------------------------------------------------------------------------------------
问题描述
代码是看的一个up主的(stm32使用IIC读取MPU6050的数据_哔哩哔哩_bilibili) (CubeMX设置也如视频一样,SYS、RCC、I2C1、USART1)如下(原本I2C地址为0xD1,后来我改成了0x68)
  1. void MPU6050_INIT ()
  2. {
  3. HAL_Delay(100);
  4. uint8_t SendAddress = 0x68;
  5. uint8_t SendData = 0x00; //解除休眠
  6. HAL_I2C_Mem_Write (&hi2c1,0x68, SendAddress, 1, &SendData, 1, 0xff) ;

  7. SendAddress = 0x19;
  8. SendData = 0x07; //采样率分频器
  9. HAL_I2C_Mem_Write (&hi2c1,0x68, SendAddress, 1, &SendData, 1,0xff);

  10. SendAddress = 0x1A; //低通滤波器
  11. SendData = 0x06;
  12. HAL_I2C_Mem_Write (&hi2c1, 0x68,SendAddress, 1, &SendData, 1, 0xff);

  13. SendAddress = 0x1B; //陀螺仪
  14. SendData = 0x08;//±500°/s
  15. HAL_I2C_Mem_Write (&hi2c1,0x68, SendAddress,1, &SendData, 1,0xff);

  16. SendAddress = 0x1C; //加速度计
  17. SendData = 0x00;//±2g
  18. HAL_I2C_Mem_Write(&hi2c1, 0x68, SendAddress, 1, &SendData, 1, 0xff);

  19. }


  20. int main(void)
  21. {

  22. ...

  23. MX_GPIO_Init();
  24. MX_I2C1_Init();
  25. HAL_Delay(200);
  26. MX_USART1_UART_Init();
  27. /* USER CODE BEGIN 2 */

  28. uint8_t MPU_DATA[14]={0};
  29. uint8_t StartAddress=0x3B;
  30. double ACCEL_XOUT = 0.0,ACCEL_YOUT=0.0,ACCEL_ZOUT=0.0;
  31. double GYR0_XOUT = 0.0,GYR0_YOUT = 0.0,GYR0_ZOUT = 0.0;
  32. MPU6050_INIT();
  33. /* USER CODE END 2 */

  34. /* Infinite loop */
  35. /* USER CODE BEGIN WHILE */
  36. while (1)
  37. {
  38. /* USER CODE END WHILE */
  39. HAL_I2C_Mem_Read (&hi2c1, 0x68, StartAddress, I2C_MEMADD_SIZE_8BIT,MPU_DATA, 14, 50);
  40. float Temp = (MPU_DATA[6]<<8)|MPU_DATA[7];
  41. if(Temp >32768) Temp-=65536;
  42. Temp = (36.53+ Temp/340);

  43. short int ACCEL_XOUT1 = (( MPU_DATA[0]<<8) | MPU_DATA[1]);ACCEL_XOUT = (double)ACCEL_XOUT1/16384;
  44. short int ACCEL_YOUT1 = (( MPU_DATA[2]<<8) | MPU_DATA[3]);ACCEL_XOUT =(double)ACCEL_YOUT1/16384;
  45. short int ACCEL_ZOUT1 = (( MPU_DATA[4]<<8) | MPU_DATA[5]);ACCEL_ZOUT = (double)ACCEL_ZOUT1/16384;

  46. short int GYRO_XOUT1= ((MPU_DATA[8]<<8) | MPU_DATA[9]);GYR0_XOUT = (double)GYRO_XOUT1/65.5;
  47. short int GYRO_YOUT1=((MPU_DATA[10]<<8) | MPU_DATA[11]);GYR0_YOUT = (double)GYRO_YOUT1/65.5;
  48. short int GYRO_ZOUT1= ((MPU_DATA[12]<<8) | MPU_DATA[13]);GYR0_ZOUT = (double)GYRO_ZOUT1/65.5;


  49. printf("temp= %0.2f" ,Temp);
  50. printf("X= %0.2f,y=%0.2f,z=%0.2f," ,ACCEL_XOUT,ACCEL_YOUT,ACCEL_ZOUT);
  51. printf("X= %0.2f,y=%0.2f,z=%0.2f," ,GYR0_XOUT,GYR0_YOUT,GYR0_ZOUT);
  52. printf("\r\n");
  53. HAL_Delay(200);
复制代码


板子是正点原子精英
mpu6050引脚



硬件连接




操作时,下载程序boot0为0,下载好后关电源将boot0为1,然后再开电源打开串口调试助手。
应该不是这样原因吧......

下载程序时看着是好的
但串口调试助手打开串口,无数据显示








分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:375559 发表于 2025-4-9 15:12 | 只看该作者
OXD0才是写
回复

使用道具 举报

板凳
ID:375559 发表于 2025-4-9 15:13 | 只看该作者
oxD0才是写入,0XD1才是读
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表