项目上用到LIS2DH12检测震动告警,设备倾斜状态,原理图如下
要检测震动跟倾斜角度,配置LIS2DH12的相关寄存器即可,寄存器很多,这里只说明程序中使用到的
#define LIS2DH12_FROM_FS_2g_HR_TO_mg(lsb) (float)((int16_t)lsb>>4)* 1.0f
#define LIS2DH12_FROM_FS_4g_HR_TO_mg(lsb) (float)((int16_t)lsb>>4)* 2.0f
#define LIS2DH12_FROM_FS_8g_HR_TO_mg(lsb) (float)((int16_t)lsb>>4)* 4.0f
#define LIS2DH12_FROM_FS_16g_HR_TO_mg(lsb) (float)((int16_t)lsb>>4)*12.0f
#define LIS2DH12_FROM_LSB_TO_degC_HR(lsb) (float)((int16_t)lsb>>6)/4.0f+25.0f
/* iic 通讯相关操作 */
int32_t drv_lis2dh12_iic_write_byte(uint8_t addr, uint8_t data);
int32_t drv_lis2dh12_iic_read_byte(uint8_t addr, uint8_t* data);
/* lis2dh12 init 配置检测阈值与中断 */
int32_t drv_lis2dh12_init()
{
/* Initialization of sensor */
if(drv_lis2dh12_iic_write_byte(0x21, 0x01)) /* CTRL_REG2(21h): Filtered data and High-pass filter selection */