这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 过程贴:读取LIS3DHTR3轴加速度计

共1条 1/1 1 跳转至页

过程贴:读取LIS3DHTR3轴加速度计

高工
2026-11-08 23:47:38     打赏

本次项目的核心其实就是读取加速度计的数值,然后进行训练。下面来完成一下加速度计的数值读取。

LIS3DHTR支持I2C/SPI/GPIO ADC这三种接口,本次使用I2C1进行通信。

为了方便接线,使用CN10的PB6和PB7,设置如下:

image.png

使用STLINK对应的串口USART2

image.png

初始化流程大概如下:

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, &reg, 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;
}

编译烧录,就可以看到读数了

image.png



共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]