嵌入式硬件从小工到专家(F103芯片之PCB调试)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        和软件一样,很多书籍只教会你如何编程,但是软件怎么debug,这方面的知识往往很少的人教你。硬件也差不多,最小电路是什么,总线是什么,怎么使用eda,怎么layout电路,怎么焊接,这方面的书籍不少,但是打板、贴片之后怎么debug调试,好像很少人提及。今天,我们可以借着学习F103或者类似芯片的机会,学习下如何调试pcb电路。

1、熟悉mcu、soc最小系统

        调试本身是非常考验使用者的技术功底。很多人常常把debug看成是经验的累积,发生了错误,习惯从经验主义去解决问题。对于销量比较大的商品,这么做是可以的。但是处于研发阶段的pcb,这么做是不合适的。一个嵌入式硬件要想跑起来,首先还是要明白mcu、soc能够起来的最小电路是什么,无非就是电源、晶振、复位、输入、输出这几个部分,扩展一点的话,还有启动模式、下载等等。所以如果发现mcu、soc无法正常启动,可以优先从这几个角度去分析。

2、软硬分开调试

        开发时,很多时候是先用买来的板子进行软件开发。软件开发ok了,再自己去做板子,此时将之前开发好的软件重新烧入到新做好的板子上面进行测试即可。这么做有一个好处,因为一旦出现问题,可以有先排除软件问题,毕竟这是之前开发板验证过的功能。无疑,这将会大大提高我们debug的效率。

3、学会使用测量设备

        调试过程当中,要学会使用很多测量设备。万用表和示波器,这些都是常用的测量设备。万用表保证系统电源、电压是不是ok的。而万用表则用来确认信号质量。除此之外,我们一般还要准备直流稳压电源、串口、led灯、面包板等工具。其中直流稳压电源主要是提供电源,串口是为了打印需要,而led灯和面包板则可以用来测试启动时间、启动流程,毕竟一开始芯片起来的时候,什么串口也不行,因此点灯就变成了非常不错的办法。

        当然除此之外,还有信号发生器、逻辑分析仪、频谱分析仪等等,我们通常不要贪多求快,用到哪个学哪个即可。

4、焊接出问题可能行最大

        一开始pcb调试的时候,我们会在pcb上面预留很多的test point,特别是第一版刚出来的时候。不仅如此,很多同学为了节约开支,前面几版都会选择自己焊接,甚至用钢网的机会都不多。对此,我倒是觉得,一开始pcb肯定会有各种问题,这个时候还不如花点钱贴片,或者买一个钢网来解决,毕竟节约下来的时间比虚焊本身要有意义得多。

5、优先测试电源

        拿到贴好片子的板子之后,我们一般先简单测量下,确保不要短路。电源是电路非常、非常重要的部分。不同元器件,对电源稳定性的容忍程度是非常不一样的。所以,这种情况下,一定先要保证芯片的电压都是ok的,对于mcu可能只要测试下5v和3.3v,soc则麻烦一点,需要测试2.5v、1.8v、1.2v等电压。

6、软硬结合调试

        保证电源没有问题之后,下面我们就可以依次确认晶振、复位、输入和输出。至少,需要先保证最小系统里面cpu是跑起来的。而确认cpu跑起来,有两点,一个是可以烧入;另外一个就是启动后有打印。实际调试的时候,除了cpu,还有其他外设,我们在硬件调试的过程中,要注意软硬结合的办法去进行调试,比如led点灯、串口打印、寄存器设置等等。这比单独的硬件调试,效率要高很多。

7、换件大法

        调试过程中,我们可以对硬件的一切进行怀疑,怀疑设计、怀疑pcb、怀疑贴片、怀疑元器件、怀疑软件等等。但是实际调试的时候,我们可以充分调用换件大法来帮助解决问题,比如更换mcu、更换晶振、更换电源、更换子系统芯片等等,特别是更换之前开发板的元器件。印象中,有一次调试的时候,系统烧入后反复启动不了,后来就是通过换件大法,确认是tf卡本身的原因导致的。

8、低概率错误的解决办法

        不管是软件,还是硬件,有一类问题最为麻烦,那就是低概率问题。要解决这种问题,除了细心观察、寻找线索之外,最为重要的事情,就是让想办法让低概率事件变成高概率事件。因为只有这样,不仅可以解决问题,而且可以确认我们是不是真的找到了问题的root cause。实际工作中,我们常常发现,很多低概率出现的问题为什么收敛不了,本质上还是没有找到root cause,因为只有找到了根本原因,才能确认我们是真的解决问题了,而不是那个看上去像问题的问题。

9、自己给自己做压力测试

        很多问题在日常使用中是测试不出来的,这个时候就要自己给自己做一些压力测试。简单的压力测试比如烤机测试,复杂一点的还有高低温测试、高湿环境测试、振动测试等等,这些都需要购买额外的设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-老费

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值