如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址

一、配置STM32cube工程。(这里我使用的是STM32F103C8T6型号的单片机)

1.首先,开启RCC时钟

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第1张图片

2.其次,开启SWD烧录模式

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第2张图片

3.开启I2C

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第3张图片

I2C引脚模式如下:

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第4张图片

4、配置时钟树

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第5张图片

到此Cube工程就已经配置好了。

二、搭建MPU6050模块的开发环境。

2.1 我用的MPU6050是一个设计好的模块,淘宝链接可在如下链接获取

https://detail.tmall.com/item.htm?spm=a230r.1.14.6.45de347bYUdvjv&id=21261751847&cm_id=140105335569ed55e27b&abbucket=12

2.2 到这里我们要搭建开发环境了,设计图如下

VCC用单片机上的3.3供电,SCL连接单片机的SCL,SDA连接对应的SDA。

三、编写控制代码

3.1 打开已生成的cube工程。添加串口重定向功能。(这里不细说,具体可参照我的其他文章或工程)

3.2 新建一个GROUP,命名为HardWare,这里面将会用来存放我们的硬件部分代码。然后新建一个I2c.c存放在该GROUP中,如图:

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第6张图片

在这个.c文件中将会用来存放我们和MPU通信的代码。

3.3 然后在I2c.c文件中添加如下代码

#include "I2c.h"

uint8_t MPU_Read_Byte(uint8_t reg)
{
  extern I2C_HandleTypeDef hi2c1;
  unsigned char R_Data=0;
  
  HAL_I2C_Mem_Read(&hi2c1, MPU_READ, reg, I2C_MEMADD_SIZE_8BIT, &R_Data, 1, 0xfff);
  HAL_Delay(100);
  printf("data: 0x%x\n", R_Data);
  return R_Data;		
}

在I2c.h中添加如下代码:

#include "stm32f1xx_hal.h"

#define MPU_READ    0XD3

uint8_t MPU_Read_Byte(uint8_t reg);

在main.c中添加如下代码:

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第7张图片

另外,记得在main.c中包含I2c.h文件。

然后烧录程序,程序运行后会读取到传感器的地址,并在串口中打印出来。

还可以用逻辑分析仪进行采集,采集到的数据如图:

如何使用 Stm32CubeMX 开发 STM32 并读取 MPU6050 的地址_第8张图片

该工程我已上传到csdn,点击链接“STM32cubeMX + keil开发,用 stm32f103 单片机读取 MPU6050 的地址”可得

你可能感兴趣的:(硬件开发)