ICM40607 六轴传感器简介和配置

ICM40607 六轴传感器


简介:
1.I2C和SPI同时支持,I2C 1MHZ,SPI 24MHZ最大。
2.2K byte FIFO buffer 缓存数据。
3.可读温度传感器,三轴陀螺仪,三轴加速度计。
4.-40°C to +85°C 工作温度。
5.有两个可编程中断引脚。

1 中断

中断功能是通过中断配置寄存器配置的。可配置的项目包括中断引脚配置、中断锁定和清除方法,以及中断的触发器。
可以触发中断的项目有
(1)时钟发生器锁定到新的参考振荡器(在切换时钟源时使用);
(2)新数据可被读取(从先进先出和数据寄存器);
(3)加速计事件中断(计步、倾斜检测、运动检测等产生的中断);
(4) FIFO wm;
(5) FIFO溢出。中断状态可以从中断状态寄存器读取。

2 碰撞检测

int inv_icm4x6xx_wom_enable()
{
int ret = 0;
uint8_t data = 0;

// if acc is not in streaming mode enable acc
if (!icm_dev.sensors[ACC].powered) {
    icm_dev.pwr_sta &= ~BIT_ACCEL_MODE_MASK;
    icm_dev.pwr_sta |= BIT_ACCEL_MODE_LN;
    ret += inv_write(REG_PWR_MGMT0, icm_dev.pwr_sta);
    inv_delay_us(200);
    inv_dbg_log("wom enable, acc on\n");
}

/* set X,Y,Z threshold */   
ret += inv_write(REG_BANK_SEL, 4);// Bank 4
ret += inv_write(REG_ACCEL_WOM_X_THR, DEFAULT_WOM_THS_MG);
ret += inv_write(REG_ACCEL_WOM_Y_THR, DEFAULT_WOM_THS_MG);
ret += inv_write(REG_ACCEL_WOM_Z_THR, DEFAULT_WOM_THS_MG);
ret += inv_write(REG_BANK_SEL, 0);// Bank 0

inv_delay_ms(5);
ret += inv_read(REG_INT_SOURCE1, 1, &data);
data |= (uint8_t)BIT_INT1_WOM_EN_MASK;
ret += inv_write(REG_INT_SOURCE1, data);

inv_delay_ms(60);

ret += inv_read(REG_SMD_CONFIG, 1, &data);
data &= (uint8_t)~BIT_SMD_MODE_MASK;
data |= (uint8_t)BIT_SMD_MODE_WOM;
data |= (uint8_t)BIT_WOM_MODE_COMPARE_PRE;
inv_dbg_log("SMD_CFG is 0x%x\n", data);
ret += inv_write(REG_SMD_CONFIG, data);

if (ret != 0)
    return WOM_ENABLE_ERROR;

icm_dev.sensors[WOM].powered = true;

#if SENSOR_REG_DUMP
inv_icm4x6xx_dumpRegs();
#endif

return ret;

}

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值