一前言
入职新公司,最近被一个spi通讯问题搞得要死要活,这里总结下过程得失,毕竟高级工程师,不但要能解决问题,还要快速解决问题。
问题描述:mcu和flash通过spi进行通讯,测试往flash写参数概率性失败
二 排查思路
按照以往得经验,遇到这种通讯问题,一般是:
(1)梳理下代码流程,加打印做一些定位
(2)逻辑分析仪或者示波器抓取波形,看数据收发是否正确
(3)以上两步可以定位到排查方向,然后进一步排查即可
上面三步总体没毛病,但是还是遇到一些教训,导致浪费了大量时间:
1.代码其他人封装实现,没有带返回值,没有进一步深究
– 其实最终调用得spi接口是有返回值的
2.抓波形让硬件帮忙引线,引线前小概率出现异常,引线后100%异常,
–最终定位是硬件引线连在一起了,引入硬件差异,影响问题方向,这个过程花了三天半,浪费了大量时间
反思:初步测试后,就怀疑是否引线导致或者flash坏掉了,并且给硬件反馈;但是客观上由于设备比较难拆,刚入职没有影响力
主观上理由不够有条理,给出证据不能让硬件信服
导致又接着测了几天,实在没办法,硬件检查才暴露出来。
3.其他
逻辑分析仪实际上对波形做了整形,有些问题可能是波形失真导致,这个时候还要使用示波器进行对比。
三 经验总结
1.测试过程中引入新问题,新现象
ps:看前后做了什么操作—无论再觉得不可能,该操作必然是最大可能引入因素,要优先排查
2.这种怀疑别的领域问题的
ps: 就算你怀疑100%就是其他人的问题----如果你没有实验数据,别人也不会信服,科学验证,不要猜,数据说话