blob: 4fbaf342a14333936818af14fb4425d42843f66d [file] [log] [blame] [edit]
#include "i2c-lis3dh.h"
static void _i2c_send_8(I2C_HandleTypeDef *i2c_port, uint16_t address, uint8_t reg, uint8_t data);
void lis3dh_init(I2C_HandleTypeDef *i2c_port){
_i2c_send_8(i2c_port, LIS3DH_DEVICE_ADDRESS, LIS3DH_CTRL_REG5, 0b10000000); // Reset
HAL_Delay(10);
_i2c_send_8(i2c_port, LIS3DH_DEVICE_ADDRESS, LIS3DH_CTRL_REG1, 0b01010111); // Enable XYZ, 100Hz
_i2c_send_8(i2c_port, LIS3DH_DEVICE_ADDRESS, LIS3DH_CTRL_REG4, 0b10001000); // Enable high resolution mode & block data update
}
static void _i2c_send_8(I2C_HandleTypeDef *i2c_port, uint16_t address, uint8_t reg, uint8_t data){
uint8_t data_buffer[2];
data_buffer[0] = reg;
data_buffer[1] = data;
HAL_I2C_Master_Transmit(i2c_port, address, &data_buffer[0] , 2 ,HAL_TIMEOUT);
}