新来的一块板子,之前的历史遗留问题先不说了,包括10pF晶振换成了20pF,焊接调节电阻等等,都一一改正。
然后比较自信,直接上ST-LINK烧写,发现找不到芯片。并且st-link的指示灯,插上去的时候是亮着的,一旦打开keil中的option,进行芯片读写时,指示灯就灭了。使用示波器测量晶振,没有起振。仔细观察了芯片,发现竟然焊反了180度!!!(以为找到了问题点)这也难怪,正常芯片上有个小圆点,表示1脚所在位置,PCB设计中也是这样, Top-layer画了个圆点表示起始位置。但是这款芯片上有一大一小两个圆点,小的表示起始位置,大的并不是。结果焊接的时候可能不确定哪个,选了大的,结果焊反了。比较了另一批次同样的芯片,圆点在左下角的时候,芯片丝印字符是正的。这个芯片同样,小圆点在左下角的时候,丝印字符是正的。同时也比较了其它几种芯片,当小圆点在左下角的时候,丝印字符正的。今后可以拿这作为基础判断依据。
把芯片重新焊接,当一切都改正完厚,拿示波器测试里发现晶振依然不起振!然后,痛苦的时刻来了,我把所有引脚电平都测量了一遍,满足要求,把PCB板反复对照,满足要求,但是晶振就是不工作啊!!!没办法上网求助,然后就看到了一篇文章:
读完以后,才知道,空的stm芯片,晶振会大概率不起振!要是像一开始就那么自信,直接上st-link烧写,这一两个小时就不用白忙活了。重新接上烧写器,download,成功,工作指示灯开始闪烁,示波器测量,晶振也正常工作了。两块都是。
2018.09.18补充
晶振的两片接地电阻,设计的是10pF,由于BOM错误,错焊成一个10pF一个1uF,结果也导致晶振不起振,引以为戒!!
另,如果MCU程序中使用内部晶振,没有把外部晶振打开,也会导致晶振不起振。