在实际的项目过程中,我发现电路和代码可以在很短的时间内完成,大部分的时间都花在了排查故障上,搞了好几天也找不到故障原因的情况很常见。
因此掌握必要的调试技巧是非常必要的,根据我的工作经验,我总结了七条调试规则。
1. 联系FAE
FAE 是 Field Application Engineer 的缩写,又称现场技术支持工程师、售前售后服务工程师。是芯片或模块厂商为了方便开发者使用产品而设置的岗位。他们长年处理客户反馈的问题。如果能联系到他们,对开发者定位问题会很有帮助。
比如我曾经用过合泰的一款单片机,在更新程序的时候发现有时候可以正常烧录程序,有时候却烧录不进去,排除了软件版本问题、焊接问题、接触不良问题等,但是问题依旧。
后来我联系了和泰的FAE,把实际情况告诉他,不到两分钟他就帮我找到原因,原来是下载用的杜邦线太长了,如果没有他的帮助,我要花更长的时间才能解决这个问题,甚至根本解决不了。
二、熟悉调试工具
如果熟悉了调试工具,对定位问题会很有帮助,相反,如果不熟悉工具,不仅工具不能发挥应有的作用,甚至可能引发新的问题。
比如我曾经调试过一个串口通信功能,我通过电脑上的串口助手软件给单片机发送数据,调试了好久,单片机还是不能正确的处理我发送的数据。
找了好久才发现串口助手软件里有一个选项——“发送新行”,勾选这个选项后,发送的数据末尾会加上“0x0d”和“0x0a”,所以实际发送的数据并不是我设置的数据,单片机当然没法正确处理。
因此你必须对常用工具非常熟悉。
第三,找人讨论
即使别人不能帮助解决问题,和别人商量一下也是很有价值的。
例如,我曾经调试过一款单片机的I2C通信,由于对单片机和I2C协议不熟悉,调试了很久都无法实现正常的数据通信,心里越来越焦急和担心,始终找不到故障原因。
我和同事讨论了一下,他当时也没搞清楚问题所在,但是他建议用串口通信代替I2C,后来顺利完成了任务,节省了时间。
当你遇到问题时,尤其是在时间紧迫的情况下,打破常规可能会让人感到压力很大。如果你能与他人讨论,即使无法解决问题,你也会有不同的看法。
四、检查焊接
正常的硬件是产品正常工作的前提,从正规渠道购买的器件、芯片在出厂前都经过了测试,一般不会出现问题。如果设计时也采用了厂家推荐的设计方案,那么硬件故障就很有可能发生在焊接上。
这就需要保证电路板表面的清洁,焊点处没有凸起物等,可以用万用表检查焊接是否正常,用洗板水清洁电路板表面。
5. 逐一击败他们
我在接项目的时候发现很多客户都喜欢把功能做的很全面,比如我最近接的一个电炉项目,客户在电炉上添加了蓝牙音箱、手机充电、手机APP控制等功能。
当功能越来越多的时候,整个设备就会变得臃肿,定位问题会变得更加困难,这就需要将产品划分成小部分,每个部分尽量独立,接口清晰。
当整个系统出现问题时,先定位是哪个小部分出现了问题,然后再解决这个部分的问题。这样就把大问题分解成小问题,更利于解决。
6.了解基本原理
为了顺利解决产品故障,必须了解各部件的基本工作原理,否则,即使通过更换或反复尝试解决问题,也只是暂时的解决办法,问题可能再次发生。
比如我在调试某单片机的ADC功能时,发现输出的数据和理论值不一致,因为我知道ADC的原理,所以第一时间想到是参考电压的问题。
设备那么多,手册那么厚,不可能看完所有资料,学完所有知识,如何才能抓住重点,快速理解基本原理?
我的经验是,至少要了解一些器件的常用技术参数的含义,比如运算放大器的共模抑制比,三极管的集电极电流,电源的开关频率等等。
7.阅读手册
很多人遇到技术问题时喜欢用搜索引擎寻找答案,但搜索结果质量参差不齐,有的甚至是错误的。
比如我曾经用过一个Atmega单片机,在烧写过程中出现问题,通过百度查了很多资料,但很多都很笼统,比如检查接线,检查电源是否正常等等。
后来我看了AVR ISP编程器的技术手册,里面介绍了各个指示灯的具体功能,闪烁次数代表什么,各个错误可能出现的原因等,非常权威详细,让我很快定位到了问题,比用搜索引擎快多了。
结论
总之,调试能力是一名工程师必备的基本功,只有总结调试经验,不断提升解决问题的能力,才能在职业发展的道路上走得越来越远。
欢迎各位朋友投稿,请联系客服yingshi_mm