STM32에서 ADXL345 사용하기
ADXL345는 3축 가속도 IC이다.
ADXL345의 I2C 통신 레지스터는 다음과 같다.
0번지의 DEVID 값은 항상 0xE5이다.
I2C 주소는 ALT ADDRESS 핀이 High이면 0x1D이고 Low이면 0x53이다.
프로그램 코드
STM32에서 ADXL345를 사용하는 코드는 다음과 같다.
// 초기화
b = 0;
HAL_I2C_Mem_Write(&hi2c1, ADXL345_ADDRESS<<1, 0x2d, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
b = 0x08;
HAL_I2C_Mem_Write(&hi2c1, ADXL345_ADDRESS<<1, 0x2d, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
b = 0x08; // FULL_RES=1, +-2g
HAL_I2C_Mem_Write(&hi2c1, ADXL345_ADDRESS<<1, 0x31, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
b = 0x0b; // 200Hz
HAL_I2C_Mem_Write(&hi2c1, ADXL345_ADDRESS<<1, 0x2c, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
b = 0x80; // FIFO Stream mode
HAL_I2C_Mem_Write(&hi2c1, ADXL345_ADDRESS<<1, 0x38, I2C_MEMADD_SIZE_8BIT, &b, 1, 100);
// 가속도값 읽기
HAL_I2C_Mem_Read (&hi2c1, ADXL345_ADDRESS<<1, 0x32, 1, (uint8_t *)data, 6, 100);
x = ((data[1]<<8)|data[0]);
y = ((data[3]<<8)|data[2]);
z = ((data[5]<<8)|data[4]);
☞ I2C 통신