【问题排查流程总结】tmd2635模块开发中断异常,排查心得
现在复盘发现,我在定位问题有严重错误:对于不是很容易定位原因的问题,需要我从头到尾进行排查,而不是东看看,西看看。
1.背景信息:由于项目需要,本人负责tmd2635传感器模块开发,利用传感器完成TWS耳机的出入耳检测功能。
首先是拿到demo样机之后,调节tmd2635模块使用的i2c通信。通过封装好的tonly i2c接口,来读写chip ID寄存器ID号,如果读取成功,则i2c read没有问题,同理测试i2c write操作。
2.中断异常问题:传感器中断触发异常,用手捏着耳机会不断触发中断(异常),耳机入耳只触发一次中断(正常),耳机出耳对着空气也只触发一次中断(正常)。
该传感器中断方式配置是:第二种–基于状态触发
3.定位问题:本人卡在定位问题好几天,连珍贵的周末休息时间都拿来排查问题,还是没有找到真正原因。在中断函数里排查,发现clear_interrupt();或clear_interrupt_flag位置也对中断触发结果有影响,其实这只是表面原因,并不是根本原因。
4.问题真正原因:是设定的阈值,在驱动code里面被改动了,导致写入阈值寄存器的值并不是我们预期所设定的值,导致中断触发异常情况。
5.解决问题:只需要把下面代码注释起来,就保障写入寄存器的值是符合我预期的值。
6.结果验证:最后验证结果符合我预期,tmd2635的中断触发正常,异常问题已经解决。