中断模式
1.说明:
-
SyncSample模式:
- CTRL7.bit7 (SyncSample) == 1 启用SyncSample模式。
- INT1:CTRL9握手信号、运动事件中断(Any Motion, No Motion, Significant Motion, Pedometer, Tap)。
- INT2:DRDY信号。
-
非SyncSample模式:
- CTRL7.bit7 (SyncSample) == 0 启用非SyncSample模式。
- INT1:CTRL8.bit6 = 1 配置运动事件中断或FIFO中断(如果CTRL1.bit2 = 1)。
- INT2:CTRL8.bit6 = 0 配置运动事件中断或FIFO中断(如果CTRL1.bit2 = 0)、DRDY信号(如果CTRL7.bit5 (DRDY_DIS) = 0)。
2.示例
// 配置SyncSample模式
void configure_sync_sample_mode() {
uint8_t ctrl7_val = read_register(CTRL7);
ctrl7_val |= (1 << 7); // 设置CTRL7.bit7 = 1,启用SyncSample模式
write_register(CTRL7, ctrl7_val);
// 配置运动事件中断到INT1
uint8_t ctrl8_val = read_register(CTRL8);
ctrl8_val |= (1 << 6); // 设置CTRL8.bit6 = 1
write_register(CTRL8, ctrl8_val);
}
// 配置非SyncSample模式
void configure_non_sync_sample_mode() {
uint8_t ctrl7_val = read_register(CTRL7);
ctrl7_val &= ~(1 << 7); // 清除CTRL7.bit7 = 0,启用非SyncSample模式
write_register(CTRL7, ctrl7_val);
// 配置运动事件中断到INT2
uint8_t ctrl8_val = read_register(CTRL8);
ctrl8_val &= ~(1 << 6); // 设置CTRL8.bit6 = 0
write_register(CTRL8, ctrl8_val);
// 配置DRDY信号到INT2
ctrl7_val = read_register(CTRL7);
ctrl7_val &= ~(1 << 5); // 清除CTRL7.bit5 (DRDY_DIS) = 0
write_register(CTRL7, ctrl7_val);
}
标签:Qmi8658a,DRDY,中断,模式,Motion,SyncSample,linux,CTRL7,心得
From: https://blog.csdn.net/m0_74962389/article/details/140544567