초기화
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 |
댓글