lis3dh 三轴加速度计 运动检测 中断配置实现

本文详细解析了LIS3DH加速度计的初始化过程,包括通过I2C接口设置寄存器,如CTRL_REG1至CTRL_REG5、INT1_THS等,以实现设备的工作模式、数据更新频率、测量范围、中断配置等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,LIS3DH的II2地址:

I2C Device Address 8 bit format if SA0=0 -> 0x31(30也可以) if SA0=1 -> 0x33 
 

void Init_LIS3DH( void )
{
    uint8_t temp = 0;

    if( HAL_I2C_Mem_Read(&hi2c2, DEVADDR, WHO_AM_I, I2C_MEMADD_SIZE_8BIT, &temp, 1, 10) == HAL_OK  )
    {
        if( temp == 0x33 )
        {
            temp = 0x2f;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, CTRL_REG1,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            temp = 0x3f;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, CTRL_REG2,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            temp = 0x40;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, CTRL_REG3,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            temp = 0xa0;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, CTRL_REG4,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            temp = 0x0a;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, CTRL_REG5,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            temp = 0x02;    
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, CTRL_REG6,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            temp = INACTIVITYVAL*10/625;;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, INT1_THS,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            temp = 0;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, INT1_DURATION,I2C_MEMADD_SIZE_8BIT, &temp,1,10);

            HAL_I2C_Mem_Read(&hi2c2, DEVADDR, REFERENCE, I2C_MEMADD_SIZE_8BIT, &temp, 1, 10);

            temp = 0x2A;
            HAL_I2C_Mem_Write(&hi2c2, DEVADDR, INT1_CFG,I2C_MEMADD_SIZE_8BIT, &temp,1,10);


// 清除中断信号,注意首次使用前一定要这样操作,不然后面的中断产生不了
            if( (GPIOE->IDR & 0x01 ) == 0 )
            {
                HAL_I2C_Mem_Read(&hi2c2, DEVADDR, INT1_SRC, I2C_MEMADD_SIZE_8BIT, &temp, 1, 10);
            }

        }
    }

}

上面的代码用到的寄存器不多,主要是 CTRL_REG1,CTRL_REG2,CTRL_REG3,CTRL_REG4,CTRL_REG5,INT1_THS,INT1_DURATION,REFERENCE,INT1_CFG,INT1_SRC,他们的作用分别:

CTRL_REG1 -- 设置工作模式 ,及数据更新频率

CTRL_REG2 -- 开启高通滤波器,这一点对运动检测很有必要,运动检测是检测信号的变化,直流信号不关注,所示开启开通滤波,关注交流信号

CTRL_REG3 -- 开启中断1

CTRL_REG4 -- 设置测量范围

CTRL_REG5 -- 锁存中断信号

INT1_THS -- 中断阈值设置

INT1_DURATION -- 中断检测时间间隔设置

REFERENCE -- 虚拟操作

INT1_CFG  --  中断1配置

INT1_SRC -- 中断状态读取,在配置时需先确清楚现有中断

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值