查看原文
其他

AD学习—STM32F103最小系统板制作

高峰 电子开发学习 2021-01-31

https://v.qq.com/txp/iframe/player.html?vid=z0542anurlk&width=500&height=375&auto=0


前言篇  

从漫长的考研路结束之后,来不及喘息,便着手学习曾经期盼已久的四轴飞行器,为了集中时间,于是把毕业设计的题目改为了四轴飞行器的开发。然后义无反顾地一头扎进小马哥工作室,准备如饥似渴的奔赴在第一生产线上。但是从没做过PCB板硬件设计的弱点瞬间就被暴露。技不如人,只好从头开始,从开始接触AD,原理图,到PCB库的封装,在到PCB板子的布局布线,整整花6天的时间完成一个STM32开发板的PCB设计。在板子的第二版回来之后,感慨万千,写下这篇回忆录与大家分享。希望可以以此鼓励正要从事这个行业并且因为刚开始而感到山高水远的小伙伴,与君共勉。

  这里简单的阐述一下自己的大学的单片机的学习经历。大二的上学期期末开始知道有单片机这个东西,接着在在寒假自学,在大二的第二学期便开始用单片机开发去参加各种比赛和项目,后来9月份之后开始放下单片机立地考研。直到后来来到这里,我才明白,在之前的比赛或者所谓的项目的过程中,我所做的大部分单片机上的开发,只是涉及到软件层面的开发。至于所谓的硬件开发,就是按照需要,去某宝购买到相应模块,焊接好排针之后。然乎使用杜邦线去将单片机的引脚和模块的硬件进行连接。接下来就是软件调试的时间。所以项目开发的过程当中有90%的时间是在写驱动。但是对一个完整的项目开发而言,首先要明确的是项目的需求分析,也就是这个项目的成品最终需要完成那些功能,进而确定这个项目使用的硬件资源,需要什么样的主控芯片,哪些其他模块,等等。接下来是硬件的设计,此时先要做的是根据各个模块与单片机的接口,确定单片机给各个模块的IO口分配。最后进入重头戏,也就是PCB板的设计。在PCB板子回来之后再去编写驱动。


Altium Designer  

12月26号的晚上,我来到马哥的工作室。于是我接到的第一项任务就是用一款国产的32位单片机为主控芯片,来完成一个四轴飞行器的PCB板设计。但是我当时从来没有画出过一块完整的PCB板。没办法,只要硬着头皮从头开始。开始知道有元件库和原理图文件,还有PCB库和PCB文件,当时一下子没有明白这个四个文件到底谁是谁,于是我只好猜测,顾名思义的去想,此时在我面前有两个库而且有两个文件,而且每一个库的名字,和另外一个文件的名字那么相似。于是我就是记忆在四个东西的顺序,元件库、原理图文件、PCB库和PCB文件。后来我明白,在认识一项事物的开始,我们大多数接触的事物的名词,然后把它记忆下来,名词多了就需要有一种记忆的方法,比如联想这些名称可能的关系,并且编排顺序。而一个所谓的新手就是对一个行业里面大多数有所了解的人而言,就是最基本的名词都不懂的人。当然这个是每一个都是必须经历的一个过程而已。

于是在接下来的时间里,我按照工作室的哥们的讲解,首先新建了一个工程,然后在这个工程里面依次添加了元件库和原理图文件,PCB库和PCB文件。接着开始在原理图库文件里面创建一个元件,一个电容,就是两条竖的短杠。然后是创建一个ADC08200元件,画出一个像淡淡蓝色的框子上,插上两排引脚,一个一个给引脚标注名字,于是就完成的一个元件的创建,接着也创建了其它的一些芯片。在大量重复的引脚命名之后,于是我直接把书跳到了原理图的设计,在AD界面的右边的窗口里面,找到我新建的库文件,然后就从里面按住一个元件,把它拖到了原理图文件里面,然乎开始连线。在连线的过程中知道还有一个叫做网络表标号的东西,它的神奇之处在于原来需要用蓝色的线条连接的各个引脚,只要标上两个相同的网络标号,就会以一种神秘而且无形的力量连接在一起。于是通过网络标号,省去了大量的连线工作。所以在一些项目的原理图文件当中是看不到大量的密密麻麻的连线的。


项目需求分析 

  2017年即将过去,在跨年的前一晚上,马哥于是看来视察我的学习情况后,于是以一种沉重的语气告诉我,你还是先别做四轴的板子。按照你的基础,是无法在规定的时间完成的,这样吧,你还是先做一个开发板。于是至今我还记得那时候是的尴尬和难堪心情。在接下来的时间里面,马哥在工作室的白板上,迅速给我列出了几条一个STM32开发板的具体要求。(1)板子的尺寸大小是DIP40(2)1个复位按键、1个电源指示灯(3)1个用户按键,1个用户LED灯。(4)可以用USB口供电(5)使用SWD接口给板子下载程序。(6)剩余的IO口全部引出。其实我清楚的明白,这是一个非常普通的小项目,因为对于这样一个成熟的产品,在某宝的价格只是十几块RMB。而在大学的学习单片机的过程当中,在我手上至少经手过3块大同小异的板子。


小白板上的项目需求


原理图设计 

  于是在2017年的最后一天,似乎为了证明什么,我早早就来马哥的工作室。从早上的八点到晚上十一点左右,我终于完成了原理图的设计。但是对于接下来PCB的封装,依然是知之甚少


STM32F103C8最小系统原理图


PCB库封装

2018年的第一天,我开始向PCB库进军。翻开书本,按目录找到PCB库的页码,发现只是有一个手工创建TPS54550的PCB封装的例子。就是按照电子元器件的数据手册的封装尺寸大小,在PCB库里面去画出焊盘的数量,以及尺寸大小。但记得当时第一次见到数据手册的密密麻麻的数据,然后再看电脑上PCB库,简直是一头雾水,因为不知道在这些数据里面有哪些是真正需要的。而我隐隐约约的感觉到,既然这里的尺寸对应着每一个元器件,那么一旦某一个数据搞错之后,可能就让这个元器件是无法焊接。这个时候,刚好边上有一个哥们也在做一个项目,正在调试手里的自己的PCB。在聊天中,于是他告诉,在他这块焊接的密密麻麻的电子元器件的PCB板子上,由于但是工期时间紧,不小心少数了一个元器件的引脚,于是导致板子上的一个功能彻底无法实现,这个板子也几近报废。于是我怀着非常谨慎的态度,开始接触焊盘,过孔,丝印。手拿着马哥给我的一个SWD的接口端子,百度几个可能的关键字,没找到。于是上神奇的某宝,费了好长时间找到了相似的产品,知道这个元件叫做SH1.0_P5,然后下载数据手册,查看关于元件封装尺寸的数据。但是对于有些数据不是很放心,就用游标卡尺去测量手上的小端子,经过耐心的对比之后,记下几个重要的数据,于是就开始画下我的第一个封装。最终用一个晚上的时间画完一个SWD的封装。由此,再一次感受到万事开头难,虽然厚积薄发,但是为了快速完成项目,于是我在网上找到了之前买过的板子的资料,幸运的是,在下载的资料里面,找到了一块STM32开发板一些必备的封装。如STM32F103C8T6的QFN,USB,按键,LED灯,还有一些电阻电容的封装。后来,马哥给了我一个常用的电子元器件的封装。

   最终花了两天的时间,原理图的所有元件就都对应上了各自的封装。


SH1.0 5P端子PCB封装


PCB布局  

       在搞定四个文件的三个之后,只剩下最后一个PCB文件。通过原理图文件上design-updatapcb Document,所有的元器件相应的封装尺寸都出现在了PCB文件里面,放大后一看,它们之间隐隐约约的有一天白色的线段连着,按住一元件拖动,发现这段连线依旧藕断丝连。

        第四天开始给PCB布局,按照PID40的尺寸大小给板子规定了形状,将所有元件都拖入这个黑色的小框里面。于是开始随心所欲的摆放元件。以最快的速度,刷刷地完成了这个貌似很简单的步骤。


PCB布线 

        接下来,开始布线。虽然只有简单的几个元器件,但是板子的面积很小,所有元器件都是在正面摆放。在不知道布线的规则情况下第一次开始布线。这是非常繁琐步骤,并且十分考验制板人项目的经验,布局作为布线的铺垫工作,很高成分的技巧和经验,可以说布局的好坏是直接影响布线的。在看书基本了解要布线要尽量走直线,而且不能走锐角。所以就一根一根把元器件用线连接起来,开始面积比较大,比较好布,但是过来一会就觉得枯燥乏味,于是想起AD上还有一个自动布线的功能,然后就尝试了一下,发现页面瞬间就多了还几根红色和蓝色的线条,感觉软件还会是很智能的,但是好景不长,自动布线依然在进行,但是线好像走不动。于是我不得不关闭自动布线,开始换上手动,但是布了几根简单的线之后,发现有些线是怎么也布不过去了,这个情况持续一个下午。而且是最困的时候,于是身心俱惫之下,只好合上电脑趴下来。

        休息半个小时之后,继续布线,当时不知道,其实之前潦草的布局找已经将布线置于死地,自己还是不断尝试,不断懊恼,开始郁闷,然后沮丧,最后简直奔溃。这时候天渐渐黑了下来,工作室的朋友开始准备出去吃饭。于是就告诉他们的我的这些问题。在和工作室许多有经验的朋友的口中,我了解到几乎每一个人在硬件设计的初期基本都经历过这样的阶段。靠着时间一点一点解决问题的。有个哥们告诉我,就他之前大学期间做的一个飞控的板子,从布局到布线,至少做了三次左右,看这他手上板子密密麻麻的元件,我于是开始慢慢释怀。回来之后,我静下心来,将PCB重新导入,然后一边思考下午布线时候所遇到的问题,就近将元器件摆放在连线处。然后仔细斟酌放下这个元件之后其他元件的布线。最终在这一天结束之前,将元件重新布局。

        第五天一来,就开始全力布线,在布完大约90%线的时候,感觉终于松了一口气,此时我告诉我旁边的哥们说,你看我已经布完大部分的线了,马上就要结束了。但是他说,你感觉你已经布完了90%,其实你只是完成了10%。后来,我才知道,他说的没错,因为最后的几根线都是非常不好走的,为了走完这根线,可能需要改掉之前的布完的很多的线,最终才可以把一根线走完。于是我修修改改,终于在天黑之前将线布完。最后信心满满的把完成后的文件给马哥看,马哥打开PCB上的3D视图,脸上的表情瞬间拧成一团。这个,***太丑了吧。原来我当时只是考虑到布线的方便,基本上没有想到这个布局之后,板子上整体的元器件的美观程度,结果板子上的元器件的摆放大多数不是对称的。在经历了尴尬的空气之后。一个好心的哥们耐心的告诉我应该如何把这个布局做的对称一些,比如一些布局的命令。


只顾布线不顾布局


打样  

        接下来的第六天,修改了布局之后,总算做出了一个看的过去的板子。然就开始打样,于是淘宝上去找打样的厂家,询问价格,就像我的板子1.8cm*5.2cm的面积,一个51单片机DIP40封装大小的板子,毕竟是第一次打,感觉5片实在太少,于是就10片。最终包括快递费用一次就需50多,这还是最便宜的。然后就把PCB板子通过旺旺上传给淘宝卖家了。


焊接  

        板子发出去是1月6号,最后收到板子的时间是1月14号。兴奋的拆开快递包装,小袋子里装着黑亮的几片小板子。


STM32F103最小系统板正面


STM32F103最小系统板背面


        那既然板子已经到了,那就焊接测试吧。然后就在马哥工作室的焊接室里面开始焊接元器件。第一次焊接一个贴片的stm32QFN48引脚封装的单片机完全不知所措,因为之前我只是焊接过排针之类的东西,然后找到工作室的各位哥们们,于是他们依次过来给我演示如何把这种贴片的单片机固定到焊盘上面,然后如何把多余的锡吸掉,将被锡连接在一起的引脚全部分开,看完他们眼花缭乱的操作之后,最后留下一边交个给我自己来操作,但是无论我尝试多少次,却始终无法将引脚上的锡给吸掉。结果还把焊盘给搞坏了。然后又重新换了一个板子。

后来,才知道要想把多余的锡吸掉,必须要用尽量烙铁头擦的光亮,确保将烙铁头上的氧化层去掉,这样去接触焊锡,焊锡才会心甘情愿的依附上去。最后才将焊锡给吸掉。掌握这个技巧之后于是就焊接单片机上的最小系统,晶振,下载接口,复位电路。再插上SWD口,下载程序,程序下载成功,第一个点灯程序成功运行。


STM32F103最小系统板焊接完成


带着些许成就感继续焊接USB供电模块。然后插上USB线供电,但是突然发现电源指示灯没有亮起来,顺手去摸了一下降压芯片,直接烫手,于是马上拔下USB线。后来在工作室小伙伴的帮助之下,仔细检查PCB文件的电源模块,发现降压芯片的引脚给接错了,原来从左边往右分别是GND、VIN、VOU,但是我PCB上的顺序是VIN、GND、VOU。于是宣布,这个板子的USB功能供电已经彻底失败,于是板子上的降压芯片的地方只好空着,通过其他引脚的供电连接,勉强可以使用。

既然找到出现的问题,为了追求完美,毅然下定决心去做第二版。


STM32最小系统板V2.0  

后来发现,第一版除了USB电源供电无法使用之外,还有许许多多的问题,比如BOOT的默认连的引脚接的高低电平错误,导致无法使用串口下载程序,还有上面两个按键的间距太小,排针的引脚一次顺序连接了5个GND等等这些。为了再次练习PCB设计最精髓的步骤,于是我把PCB重新导入,重新布局,花了一天的时间完成了布线。后来的几天又请教工作室的大神帮我检查了好几遍,最后终于再一次将PCB板发出。


STM32F103最小系统板V2.0PCB图


         第二版交出去的时间是1月18号,收到板子的时间是1月26号。是在淘宝随便找的板子,好处就是便宜,而且免费加颜色的油。于是第二版就是这样红色的板子。拿回来的焊接测试,之前最担心的USB供电部分成功运行。然后烧写点灯程序。看着蓝色用户LED灯,一秒一秒的闪烁。有一种默默的感动。然而马哥拿着我的板子端详了一会,还是提出了一些改进的意见,比如板子上的BOOT插针可以改到边上的插排里面去。后来我还看到诸如顶层引脚边上丝印太小,导致辨识吃力的情况。虽然大体上没有问题,但是还是有瑕疵,本着折腾的美德和没有最好只有更好理念。

         期待在不久的将来可以在第三版上可以将板子改进的更完美一些。


STM32F103最小系统板V2.0PCB正面


STM32F103最小系统板V2.0PCB背面


测试程序  


点灯测试程序1

点灯测试程序2


结语  

最后谈一下整个过程的心得。自从来到马哥工作室的时候,马哥教给我的理念是,学习并不是一种目的,而是一种思维。这就是这个时代的所谓的学习能力,因为学习的具体知识和内容是日新月异的,只有具备学习能力的人才可以在这个充满竞争的世界里面占据一席之地。的确,网络的出现,一些基本的知识已经不再具备知识原本的含义沦为常识,在我PCB板设计的时候,90%遇到的问题都是在百度上解决的,大家都很忙,实在不得已才去询问人家。其实做开发,以后的路都是需要自己走的,做开发首先具备的能力就是遇见问题可以自己解决。

感谢在这段时间内小马哥团队中给我技术支持的每一个人。


两版最小系统对比图(左侧为V1,右侧为V2.0)



感谢您阅读“电子开发学习”的文章,如果您觉得图文能帮助您学习,欢迎关注我们。请点击右上角按钮,选择“查看公众号”,再点击关注即可。或者可以通过搜索公众号的方式关注: electricstudy  。您可以通过扫码下面的二位码关注我们。如果您想阅读往期文章,可点击“查看历史消息”。




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存