小学生
最后登录1970-1-1
在线时间 小时
注册时间2024-10-13
|
文章标签: 嵌入式硬件 c语言
编辑 版权
一、使用平台:F103霸道开发板V02
使用软件例程:A盘(资料盘)\4-配套模块资料\传感器\野火【姿态传感器_MPU6050】模块资料\1-MPU6050配套例程\ebf_sensor_mpu6050_code_stm32_20211011\F103_霸道开发板\2.软件STM32-MPU6050
二、现象:下次并执行例程后,串口助手显示
[16:54:33.996]收←◆MPU6050 dectected error!
检测不到MPU6050模块,请检查模块与开发板的接线
没有检测到MPU6050传感器!
三、问题分析:
3.1 以下是对应输出该错误提示的函数,可以看到当读取到的 ID !=0x68时会报该错误,但没有输出读到什么数据,那我们把读到的ID打印出来看看
/**
* @brief 读取MPU6050的ID
* @param
* @retval
*/
uint8_t MPU6050ReadID(void)
{
unsigned char Re = 0;
MPU6050_ReadData(MPU6050_RA_WHO_AM_I,&Re,1); //读器件地址
if(Re != 0x68)
{
printf("MPU6050 dectected error!\r\n检测不到MPU6050模块,请检查模块与开发板的接线");
return 0;
}
else
{
printf("MPU6050 ID = %d\r\n",Re);
return 1;
}
}
3.2 可以看到,实际读到的ID为0x98,而野火代码里是和0x68进行对比,故而报错
[17:03:45.616]收←◆
MPU6050 ID = 0x98
MPU6050 dectected error!
检测不到MPU6050模块,请检查模块与开发板的接线
没有检测到MPU6050传感器!
3.3 将 if(Re != 0x68) 改为 if(Re != 0x98) ;可以正常获取到MPU6050的数据,问题解决!
[17:07:24.371]收←◆MPU6050 ID = 0x98
欢迎使用野火 STM32 开发板。
这是一个MPU6050测试例程
[17:07:24.879]收←◆
加速度: 148 -76 16420 陀螺仪: 3 63 -5 温度: 45.92
[17:07:25.379]收←◆
加速度: 140 -48 16448 陀螺仪: 3 63 -5 温度: 45.91
四、修改例程
/**
* @brief 读取MPU6050的ID
* @param
* @retval
*/
uint8_t MPU6050ReadID(void)
{
unsigned char Re = 0;
MPU6050_ReadData(MPU6050_RA_WHO_AM_I,&Re,1); //读器件地址
if(Re != 0x98)
{
printf("\r\nReadD MPU6050 ID = 0x%x 与设定的ID值不同,请检查\r\n",Re);
return 0;
}
else
{
printf("MPU6050 ID = 0x%x\r\n",Re);
return 1;
}
}
|
|