STM32单片机的核心板设计与总结

       相信对于电类专业的同学而言,甚至对于非电类专业的同学,都会遇到需要和嵌入式单片机,和硬件设备打交道的时候。那么,有时我们却不仅仅停留在“使用”的层面,尤其是当懂的一些电路基础知识之后。更有甚者,当我们需要一个能够非常恰切的实现相应功能的硬件支持的时候,也许我们就需要学会PCB设计了,设计属于自己带有“创造性”的电路板。

       在自动控制领域,很多时候需要一个控制器处理相应的逻辑,执行相应的算法。例如执行PID运算,执行图像处理、目标检测与识别等等。能充当控制器核心的东西有很多,而今天的主角便是微处理器---STM32单片机。在智能车中,四旋翼飞行器中,在电子设计竞赛中,都可以用到。

        ok,接下来便开始我的stm32f103核心板的设计过程,整个过程我们屏蔽很多技术细节,而更侧重是一种学习过程和设计历程。也许,你也迫不及待的想制作一款如下的cpu了吧。

图1

          那么,我们先要挪列一下设计到制作的整个流程,也许使得脉络会更为清晰一些。

         1>电路的原理图设计(schematic design)

         2>PCB设计

         3>将PCB图发给制版厂家制作pcb板

         4>为PCB板焊接元器件

         5>电路板测试

只需要经过上面的5个步骤,便可以设计出一个属于自己的电路板了。

一、电路的原理图设计

       在整个设计阶段中,我们采用Altium Designer软件。那么,我们就需要绘制电路的原理图了。这个原理图文件以.SchDoc为后缀。就是类似如下:


图2

也许看不清楚电路图,但没有关系,我们所要掌握的是方法。那么,我们如何使用AD软件绘制?如何选择对应的引脚封装?如何建立自己的原理图封装库?如何建立自己的PCB库?对于这些问题,都是固化的,我们只需要找相关资料、视频和有设计经验的人,很快便可以解决。对于建立自己的原理图库和封装库,有非常好的3条捷径可走一条就是从其它库中copy元器件过来;另一条就是从原理图中的菜单栏design下选择Make Schematic Library,在生成的库中再copy过来,PCB封装也是可以这样从PCB图中类似得来;再一条便是component wizard了。

       在STM32核心板原理图设计一环节,最重要的其实是了解芯片的原理。一个核心板要能够工作,我们需要针对该款单片机掌握四个方面的知识。1)单片机的电源供电模块  2)单片机的时钟模块 3)复位(reset)和启动(boot) 4)单片机的程序下载。 如果能够理解这四个方面的知识,不仅仅是STM32单片机,任何一款单片机都可以类似设计。

       那么,如何获取上面的知识呢?则需要阅读芯片的datasheet 和 reference manual ,以及针对相应单片机某个模块的更为具体的手册。这些手册都可以登入到官网上下载。

       读完和了解完后,我们就开始原理图设计了吗?其实不然,我们还可以在网上下载纷呈的原理参考,学习并吸纳他人的设计。

        最后,便可以自己的原理图设计了。

二、PCB设计

       当原理图设计好之后,我们便可以开始设计pcb图了。在新建pcb图中,有一个非常好的方法。那边是在Files下选择PCB Board Wizard下新建。

图3

         在pcb图设计中,非常重要的是元器件的整体布局和线路的布局。我们坚持以下几点原则:

1)线路粗细有致,电流的大小与线宽要做好匹配,过孔大小也是如此;2)元器件布局最好能够依照原理图来,尽量使得电流流向能够形成自己的回路,回路交错耦合尽可能小;3)两条线路不可长距离平行;

以上3点是所有PCB设计都应遵循的原则,在绘制stm32的核心板时,我们还应该遵循如下原则。

4)晶振尽可能靠近单片机引脚   5)下载口也尽可能靠近引脚

经过以上几条的原则约束,都是直接或者间接的减少电磁干扰等问题,使得使得单片机能够正常工作。在布线过程中,最理想的情况下应该是自然的,流畅的,能够让线路走起来如光滑的曲线一般,就好比我们开车,都喜欢路的拐弯能够是一个过渡自然的弧度,其实电子也是一样的。

       在PCB设计中,我们常常需要一些小技巧。1)统一更改标注字体大小,可以通过选中一个字体,然后右键选择Find Similar Objects...,然后在Object Kind选择same,之后在Altium Designer的右下角点击PCB,选择PCB Inspector,在这里便可以通过改变Text Height和Text Width而改变字体大小了。2)按shift+空格键可以改变线的类型,按空格键可以改变角度,在属性properties里也可设置rotation。3)按L键可以将线或者元器件在top layer和bottom layer之间切换。等等

       在经过设计之后,对于核心板,往往引脚上走的都是高速信号,因此我们可以通过敷铜,然后在将铜箔与地的网络(GND net)相连,能够起到一定的减小电磁干扰的作用。但是对于无用的铜箔,我们称之为“死铜”,需要在属性设置中勾选Remove Dead Copper,从而去除“死铜”。

图4 top layer
图5 bottom layer

最后,便可以设计成如上的pcb板了。

PCB设计完成后,需要进行整体的认真检查。以免由于失误而导致印制的PCB板出现问题。其中一个很重要的就是当线路很多时,可能某些飞线遗漏了而忘记布线,此时可以通过Reports,在General选项卡下点击Report,勾选Routing Information,再点击Report,就可以在报表的Routing一栏中看到总共有多少线,布了多少线,以此确保没有遗漏。有时,由于规则问题,编译总会报错,此时可以通过修改规则来解决,因为有些规则并不符合我们的要求,例如线距限制,线宽限制,元件距离限制等等。当然,有时需要在PCB上添加一些引脚时,可以通过edit nets解决。最后遇到确实无法解决的问题时,但又不想重新设计板子的形状尺寸,只能在class中删除所有的class,和netlist中删除所有的nets,之后重新从原理图中update到PCB来,这是无奈之举了。

检查无误之后,便可以送到制版厂商印制PCB板了。


三、将PCB图发给制版厂家制作PCB板

四、为PCB板焊接元器件

       在元器件焊接方面,有一些技巧。如何一个人焊贴片呢?如何一个人焊非常小而且密集的单片机引脚呢?焊错了如何将元器件重新取出来呢?

对于焊贴片,可以先在一个焊盘上点上一点焊锡,贴片的一头便可以先固定上了。

对于单片机引脚,虽然引脚众多,但是只要掌握方法,是非常容易的。首先先在各个焊盘上均匀抹上一点松香(越少越好),然后将单片机的引脚和焊盘对其,再用一点点焊锡,沿着引脚与焊盘接触的外侧边缘,一抹,就可以了。如果两个引脚粘在一起,可以再沾些松香抹开。其实对于这些有缝隙的金属面,焊锡在松香的作用下,会优先的流向缝隙处,如人的毛细血管一般。

对于孔堵上焊锡了,可以先预热,然后用嘴一吹,或者将电路板一振,焊锡就掉了。

对于元器件焊错了,但元器件有多个引脚,则可以采用“以退为进”的方法,将这些引脚用焊锡连成一片,然后只要在一处加热,然后再一振动或者一拔,就可以将元器件取出。

.................

........

五、电路板测试

       至此,终于将核心板制作好了,但是,上电前需要好好检查一番。需要检查的是VCC与GND是否导通,需要检查各个引脚之间的连通性.......经过严格的检查后,那么最终才可以上电。

驴儿先生笔记,不断更新中zzz...

推荐阅读更多精彩内容