본문 바로가기
전자/임베디드 시스템

STM32에서 MPU-6050 사용하기

by Begi 2022. 6. 9.
반응형

초기화

STM32에서 MPU-6050을 초기화하는 코드는 다음과 같다.

 

#define MPU6050_I2C_ADDRESS 0x68
#define MPU6050_ACCEL_XOUT_H 0x3B
#define MPU6050_PWR_MGMT_1 0x6B
#define MPU6050_PWR_MGMT_2 0x6C
#define MPU6050_WHO_AM_I 0x75
#define MPU6050_CONFIG 0x1A
#define MPU6050_GYRO_CONFIG 0x1B
#define MPU6050_ACCEL_CONFIG 0x1C

 

union accel_t_gyro_union
{
struct
{
byte x_accel_h;
byte x_accel_l;
byte y_accel_h;
byte y_accel_l;
byte z_accel_h;
byte z_accel_l;
byte temp_h;
byte temp_l;
byte x_gyro_h;
byte x_gyro_l;
byte y_gyro_h;
byte y_gyro_l;
byte z_gyro_h;
byte z_gyro_l;
} reg;

struct
{
short x_accel;
short y_accel;
short z_accel;
short temp;
short x_gyro;
short y_gyro;
short z_gyro;
} value;
};

 

// Reset
b = 0x80;
c = HAL_I2C_Mem_Write(&hi2c1, MPU6050_I2C_ADDRESS<<1, 0x6B, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
delay(100);
b = 0x07;
c = HAL_I2C_Mem_Write(&hi2c1, MPU6050_I2C_ADDRESS<<1, 0x68, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
delay(100);

// MPU6050_WHO_AM_I
c = HAL_I2C_Mem_Read(&hi2c1, MPU6050_I2C_ADDRESS<<1, MPU6050_WHO_AM_I, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);

// MPU6050_PWR_MGMT_2
c = HAL_I2C_Mem_Read(&hi2c1, MPU6050_I2C_ADDRESS<<1, MPU6050_PWR_MGMT_2, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
// MPU6050_PWR_MGMT_1
b = 0;
c = HAL_I2C_Mem_Write(&hi2c1, MPU6050_I2C_ADDRESS<<1, MPU6050_PWR_MGMT_1, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);

// FS_SEL
b = (0<<3);
c = HAL_I2C_Mem_Write(&hi2c1, MPU6050_I2C_ADDRESS<<1, MPU6050_GYRO_CONFIG, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);

 

// AFS_SEL
b = (0<<3);
c = HAL_I2C_Mem_Write(&hi2c1, MPU6050_I2C_ADDRESS<<1, MPU6050_ACCEL_CONFIG, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);

// CONFIG
// - DLPF_CFG
b = 0;
c = HAL_I2C_Mem_Write(&hi2c1, MPU6050_I2C_ADDRESS<<1, MPU6050_CONFIG, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);

 

데이터 읽기

MPU-6050의 데이터 값을 읽는 코드는 다음과 같다.

 

c = HAL_I2C_Mem_Read_IT(&hi2c1, MPU6050_I2C_ADDRESS<<1, MPU6050_ACCEL_XOUT_H, I2C_MEMADD_SIZE_8BIT, (u08*)&accel_t_gyro, 6);

 

 

반응형

'전자 > 임베디드 시스템' 카테고리의 다른 글

STM32 Ethernet 통신  (0) 2022.06.26
STM32 중국 짝퉁 칩  (0) 2022.06.14
키보드 회로  (0) 2022.05.25
STM32CubeIDE 디버깅 중 Watchdog 중지  (0) 2022.05.21
MCU 리셋 문제 해결방법  (0) 2022.05.18

댓글