本次项目的核心其实就是读取加速度计的数值,然后进行训练。下面来完成一下加速度计的数值读取。
LIS3DHTR支持I2C/SPI/GPIO ADC这三种接口,本次使用I2C1进行通信。
为了方便接线,使用CN10的PB6和PB7,设置如下:

使用STLINK对应的串口USART2

初始化流程大概如下:
1、读取 WHO_AM_I 寄存器 0x0F;
2、确认返回值为 0x33;
3、配置 CTRL_REG1;
4、配置 CTRL_REG4。
hal_status_t LIS3DH_ReadID(hal_i2c_handle_t *hi2c, uint8_t *id)
{
hal_status_t ret;
uint8_t reg = LIS3DH_REG_WHO_AM_I;
ret = HAL_I2C_MASTER_Transmit(hi2c, LIS3DH_ADDR_8BIT, ®, 1, 100);
if(ret != HAL_OK) return ret;
ret = HAL_I2C_MASTER_Receive(hi2c, LIS3DH_ADDR_8BIT, id, 1, 100);
return ret;
}
hal_status_t LIS3DH_Init(hal_i2c_handle_t *hi2c)
{
hal_status_t ret;
uint8_t buf[2];
// CTRL1: ODR=100Hz, X Y Z enable --> 0x57
buf[0] = LIS3DH_REG_CTRL1;
buf[1] = 0x57;
ret = HAL_I2C_MASTER_Transmit(hi2c, LIS3DH_ADDR_8BIT, buf, 2, 100);
if(ret != HAL_OK) return ret;
// CTRL4: ±2g, HR=1 --> 0x08
buf[0] = LIS3DH_REG_CTRL4;
buf[1] = 0x08;
ret = HAL_I2C_MASTER_Transmit(hi2c, LIS3DH_ADDR_8BIT, buf, 2, 100);
return ret;
}编译烧录,就可以看到读数了

我要赚赏金
