省流
1、晶振电容焊错
2、BOOT0没有接地
背景
本来是一名嵌入式软件开发工程师,主要做嵌入式Linux开发的。奈何单位就我一个跟硬件相关的工程师。被领导陆续安排了一些硬件电路的设计。
去年根据讯为的资料,用嘉立创的EDA画了一个rk3568的底板,做了一些简单的驱动开发。感觉还不错。之后又陆续画了一些小板。
最近领导又安排了一个工作,要用STM32F407做开发。楼主又从网上找了一些资料,照猫画虎出了个原理图。因为课题经费问题,这次是找了一个贴片厂做的(嘉立创不够灵活,自己垫钱报销的话还挺好)。从PCB制板到元器件采购,再到SMT贴片焊接(之前都是嘉立创一条龙搞的)。厂家花了三周的时间终于把板子寄回来了(主要是钱太少,厂家不着急安排)。
经过
楼主想着抓紧时间写个硬件hello world(点个LED灯),跑一下试试。结果上电下载程序后,LED就是点不亮。先用万用表测量3.3V供电和接地,都没有问题。然后用示波器测了晶振,发现没有波形。想着终于找到问题了,对着电路图和板子排查,发现是晶振的一个电容焊错了(推测厂家是手焊的)。20pF的电容和旁边100nF的电容互换了位置。看了图纸是没有问题的,但是5块板子的电容都焊错了(可能是楼主的丝印离的有点远)。下班后加班把电容拆了调换位置重新焊上,然后上电等着见证奇迹。结果还是不行。楼主就一脸懵逼了。中间又写标书啥的,各种杂活拖了一周。今天想着放假前再找找原因,就百度了一下。如下图所示(图片来自百度搜索,侵删)。对着一条一条排查。
本来第四条我感觉是没有问题的,毕竟原理图检查了好几遍。但是楼主毕业后确实没搞过硬件,还是又逐条检查了一遍。检查到BOOT0的时候,用万用表测了一下,发现电压不是0。然后又看了原理图和PCB,发现自己愚蠢极了。BOOT0的电阻和电容居然没有接地(附上修改前后的原理图)。用一根导线手动把BOOT0接地,板子重新上电,灯终于亮了。写文章记录一下自己的愚蠢。
结果
还好板子上电容旁边就有地,赶紧用烙铁堆点锡。