11-09-2021 08:05 AM
当使用ACTIVITY_RECOGNITION功能时,如果不读取FIFO,Host Interrupt信号一直不会产生,需要一直读取FIFO,INT引脚才会发出中断信号。但是这样就无法通过INT引脚唤醒MCU,另外,ORIENTATION功能也是这种情况,无法在读FIFO之前发出Host Interrupt信号。
以下是配置代码:
if (bhy_install_sensor_callback(VS_TYPE_ACTIVITY_RECOGNITION, VS_WAKEUP, sensors_callback_basic))
{
return -GERRNO_INTER_M_ERR;
}
if (bhy_enable_virtual_sensor(VS_TYPE_ACTIVITY_RECOGNITION, VS_WAKEUP, 1, 0, VS_FLUSH_NONE, 0, 0))
{
return -GERRNO_INTER_M_ERR;
}
Solved! Go to Solution.
11-09-2021 09:44 AM
Hello zhouy,
中断信号的实际波形,方便用逻辑分析仪抓一下吗?
另外,你的MCU端配置的中断触发方式是什么样的?
11-09-2021 10:07 AM
您好!
固件为Bosch_PCB_7183_di03_BMI160_BMM150-7183_di03.2.1.11696_170103.h
MCU外部中断采用下降沿触发。
下图为上电后INT的波形,调用bhy_enable_virtual_sensor函数后INT引脚电平一直没有变化,维持在高电平。
11-09-2021 10:30 AM
您好!
我又测试了读FIFO和不读FIFO两种情况下INT引脚波形的对比图,不读FIFO时,INT引脚一直保持高电平;每10ms读一次FIFO时,INT大部分时间为低电平,当检测到运动后,会出现一个短暂的高电平。
11-10-2021 10:32 AM
Hello zhouy,
加载完固件后,中断引脚默认是低电平。当检测到VS_TYPE_ACTIVITY_RECOGNITION等事件时,中断信号会拉高,所以host MCU端的中断触发方式要设置为上升沿。当host MCU接收到中断信号时,需要读取FIFO数据以清空FIFO,这样中断信号才会被拉低。