经过漫长的考研之路,我已经没有时间喘息了,于是我开始学习我期待已久的四轴飞行器。 为了集中时间,我把毕业设计的主题改为四轴飞行器的开发。 然后没有任何犹豫,冲进了小马的工作室,准备急切地冲向第一条生产线。 但从未做过PCB板硬件设计的弱点瞬间就暴露出来了。 我的技术不如别人,只好从头开始,从开始接触AD、原理图,到PCB库的封装,再到PCB板的布局布线。 我花了6天时间完成了一块STM32开发板的PCB设计。 第二版板回来后,我感慨万千,写下这篇回忆录与大家分享。 希望这可以给即将进入这个行业,因为刚刚起步而觉得山高水远的朋友们一些鼓励,我们可以给你们鼓励。
这里简单说一下我自己大学的单片机学习经历。 我是大二上学期末开始了解单片机的,然后寒假自学。 大二下学期,我开始使用单片机进行开发并参加各种比赛和项目。 后来9月份之后,我开始放下单片机,考研。 直到后来来到这里,我才明白,在之前的比赛或者所谓项目的过程中,我在单片机上做的大部分开发都只涉及到软件层面的开发。 至于所谓的硬件开发,则需要去一定的商店购买相应的模块并焊接排针。 Ranhu使用杜邦线连接单片机的引脚和模块的硬件。 接下来就是软件调试的时间了。 因此,项目开发过程中90%的时间都是在编写驱动程序。 但对于一个完整的项目开发,首先要明确的是项目需求分析,即项目的成品需要完成什么功能,然后确定项目使用的硬件资源,什么样的主控需要什么芯片,还有哪些模块等等。接下来是硬件的设计。 这时首先要做的就是根据各个模块与单片机的接口,确定单片机给各个模块的IO口分配。 最后我们进入重头戏,就是PCB板的设计。 PCB板回来后写驱动程序。
Altium设计师
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口全部引出。 其实我清楚的明白,这是一个很普通的小项目,因为这么成熟的产品,在猫宝上的价格也就十几块钱。 在大学学习单片机的过程中,我至少处理过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文档,所有元件对应的封装尺寸出现在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最小系统板背面
现在板子已经到了,让我们进行焊接测试。 然后我开始在Marco工作室的焊接室里焊接组件。 第一次焊接stm32QFN 48脚封装的SMT单片机,完全不知所措,因为之前只焊过排针之类的。 然后我就找到了工作室里的哥们,他们就纷纷过来教我怎么焊接。 这种贴片单片机固定在焊盘上,然后如何吸收多余的锡并将锡连接的所有引脚分开。 看完他们眼花缭乱的操作,我终于给自己留了一边。 想要做到这一点,但无论我尝试多少次,我都无法将罐子从销钉上取下来。 结果,焊盘被损坏。 然后又更换了一块板子。
后来我了解到,为了吸收多余的锡,必须将烙铁头擦拭得尽可能光亮,以确保烙铁头上的氧化层被去除,这样当你触摸焊锡时,焊锡就会心甘情愿地坚持下去。 最后,吸掉焊料。 掌握了这个技巧后,我就在单片机、晶振、下载接口、复位电路上焊接了最小系统。 然后插入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.0 PCB图
1月18日交付第二版,1月26日收到板子。 这个板子是我在淘宝上偶然发现的。 优点是价格便宜,可以免费添加色油。 所以第二个版本有这个红板。 拿回来后进行焊接测试,之前最担心的USB供电部分跑成功了。 然后烧录并编写照明程序。 观察蓝色用户 LED 灯每秒闪烁。 有一种沉默的感觉。 不过马哥拿着我的板子看了一会儿,还是提出了一些改进的建议。 例如,可以将板上的BOOT引脚改为侧面的插座。 后来我也看到过顶针侧的丝印太小,难以识别的情况。 虽然总体上没有问题,但还是存在缺陷。 本着折腾的美德和没有最好,只有更好的理念。
我们期待在不久的将来在第三个版本中改进主板。
STM32F103最小系统板V2.0 PCB正面
STM32F103最小系统板V2.0 PCB背面
测试程序
照明测试程序1
照明测试方案2
结论
最后说一下我整个过程的经历。 自从来到马格工作室,马格教会我的理念是:学习不是目的,而是一种思维方式。 这就是这个时代所谓的学习能力,因为学习的具体知识和内容日新月异,只有具备学习能力的人才能在这个竞争激烈的世界中占据一席之地。 确实,随着互联网的出现,一些基础知识不再具有知识原本的意义,已经成为常识。 我在设计PCB板的时候,遇到的问题90%都是在百度上解决的。 每个人都很忙。 事实上,我不得不向人们询问,作为最后的手段。 其实在发展中,未来需要走自己的路。 开发首先要具备的能力就是能够自己解决问题。
感谢小马哥团队的各位在这段时间为我提供的技术支持。
两个版本最小系统对比图(左为V1,右为V2.0)
感谢您阅读《电子开发学习》文章。 如果您觉得图文对您学习有帮助,请关注我们。 请点击右上角按钮,选择“查看公众号”,然后点击关注。 或者搜索公众号:electricstudy 也可以关注。 您可以扫描下方二维码关注我们。 如果您想阅读往期文章,可以点击“查看历史消息”。