简介:
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;
}