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 통신
'전자 > 임베디드 시스템' 카테고리의 다른 글
Task Overrun과 실행시간 (0) | 2022.03.22 |
---|---|
MPU-6050 I2C 통신 (0) | 2022.03.22 |
STM32 SPI 통신 절차 (0) | 2022.02.24 |
Eclipse에서 Perspective 자동 전환 (0) | 2022.02.24 |
STM32CubeIDE의 metadata 폴더 이동 (0) | 2022.01.10 |
댓글