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

STM32에서 ADXL345 사용하기

by Begi 2022. 3. 4.
반응형

ADXL345는 3축 가속도 IC이다.

 

ADXL345 보드

 

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

댓글