基于STM32的流水灯嵌入式硬件设计实例:原理图和PCB设计
最近本来在忙别的事,大约忙到五一以后吧,没有时间研究一些深入的知识。本来想停更的,但是刚刚申请到博客专家,想想还是得更新点文章。这里就把一些以前我做过的一些简单的硬件设计拿来出来复习一下。
本篇文章就来介绍一下,一个简单的STM32流水灯的开发板的原理图和PCB的设计流程和注意事项。
文章目录
1 目标和需求
这篇文章就来实现一个简单的流水灯的硬件设计。
(1)主控芯片:STM32F103
由于只需要实现一个流水灯,只要有GPIO就可以实现了,这里我们选择STM32的芯片,具体哪一个型号,我建议去看看哪个型号的芯片便宜,就选哪个。
(2)电路组成
电路组成实际上就是STM32最小系统,再加上8个LED灯。
2 原理图
2.1 电源部分
一个硬件电路板最重要的就是电源部分,我们来分析一下需要什么:
2.1.1 电源座子
这里我有一个12V的适配器:
所以我就选择使用DC12的圆孔封装:
我没有搜到这个座子的实物图,但是我的原理图库有3D模型,就来看一下这个插座的模型。左图就是正面的圆孔插头了,右图是从下往上看,这个封装有3个引脚,实际上1个是12V,2个是GND。
所以对于原理图库来说,设计如下:
实际的电路如下:
系统地电源就从引脚1进来。
2.1.2 Buck电路
对于STM32芯片来说,系统的电压是3.3V的,所以需要一个降压电路。简单地介绍一下Buck电路。
2.1.2.1 原理
Buck电路是一种常见的降压型(step-down
)直流-直流(DC-DC
)转换器电路。它的主要作用是将一个较高的直流电压转换为一个较低的直流电压。Buck电路的工作原理基于电感和开关元件的组合,通过周期性地打开和关闭电路中的开关元件来实现电压的降低。
假设输入为15V,要降压为5V,中间是一个开关,输出连接一个电容。控制开关,闭合开关,将电容充电到6V时断开,到4V时再闭合开关。但刚开始电容相当于短路,此时电流非常大,会损坏电容,所以要在前面再串一个电阻。但电阻会消耗功率,所以不太合适。现在又不希望刚开始电容电流无限大,又不希望前面消耗功率。而电感可以阻碍电流的增大,它是BUCK电路中最核心的器件。
刚开始电感的阻抗无穷大,两端电压就等于输入电压,接着电感的压降越来越小,电流逐步增大,这样电流正好就满足了电容缓慢充电。电感的电流不会突变,但电压会突变,而这有后面的电容限制这个突变。
开关断开时,由于15V还存在着,电感产生的感生电动势会到开关左端,从而产生电弧。所以要给电感一个回路。
(1)开关闭合,电容短路,电感上电压等于15V,K=15/L
(2)电感对电容充电,假设电容电压上升到2V,K=13/L
(3)电感对电容充电,假设电容电压上升到5V,K=10/L
(4)刚闭合就断开,电容短路,电感两端压降被二极管钳位为0.7V,K=0.7/L
(5)电容充电到2V时断开,K=2.7/L
(6)电容充电到5V时断开,K=5.7/L
2.1.2.2 Buck电路设计
首先就是选择一个Buck降压芯片了,选型就不介绍了,这里我推荐使用MP2359。打开MP2359的手册,首先来看Package reference:
我们就在AD中把这个封装画出来,原理图库设计如下:
接下来我们再来看一下手册中给的典型设计:
其中:
现在我们就来参考这个设计图来设计自己的原理图:
使能引脚就默认使能了,其它基本上一致。至于这里的肖特基二极管的型号还是根据实际供货和价格来决定,不一定要使用B230A。
至此我们就得到了3.3V的电压。
2.2 STM32最小系统
这里我选择的型号为STM32F103VET6,同样地根据官方的数据手册画出原理图,我这里就分为两个部分了,一个为系统电源部分,一个为其它的引脚部分。
电源:
其它引脚:
接着就来添加晶振和调试引脚:
对于晶振来说,STM32中有两种:
实际上在我们这个这么简单的应用中,完全可以不接任何晶振,直接使用内部的晶振就可以了。
对于复位引脚NRST的电容,主要是防止由于开关或其他外部因素引起的短时噪声或干扰对NRST引脚的误触发。
如果接了一个按键用于复位的话,那电容还可以调整复位脉冲的上升时间,防止快速或突发的电平变化触发不必要的复位。
2.3 流水灯
如下图所示,原理图很简单,当GPIO输出高电平时,LED点亮,反之熄灭。至于电阻的大小,取决于你选择的LED的数据手册。
这么多引脚可以都可以使用,随便连,但是我这样连是有目的的,稍后画PCB的时候就知道了。
3 PCB设计
由于原理图非常简单,二层板足以。由于这部分设计更多地还是需要经验,这里我仅仅介绍一些值得注意的细节。
3.1 封装选择
对于PCB来说,首先当然是选择封装了。
3.2 电源滤波考虑
前面的原理图还差了一步,就是一般我们会在电源附近放一个阻值为104的滤波电容。这主要是为了提供电源稳定性、抑制高频噪声和过滤电源线上的尖峰。这是很多手册和很多有经验的硬件工程师都建议的。目的如下:
所以在设计PCB的时候,会根据STM32芯片,或者其它的,如一些射频芯片的封装布局,来看一下有多少个104电容需要加上。接着在原理图中加上电容,更新到PCB中。然后布局的时候放在这个电源附近!
这里我加了6个104滤波电容:
对应放在STM32的几个电源附近,如下图绿框所示:
其中左下角那个引脚21和22的两个3.3V电源就共用一个就行了。
3.3 Buck电路布局和布线
一个系统重最重要的就是电源了,除了我们需要尽可能地将电源线弄宽之外,我们主要来看一下Buck电路的布局,这部分的布局和布线都很有讲究。我们来一下MP2359的手册:
实际上所有的Buck电路芯片都需要这样布局:
EMC
)另外,对于6号开关引脚SW来说,由于频率十分高,建议把连在这个引脚的电容、肖特基二极管和电感直接敷铜。
3.4 LED部分设计
由于是做流水灯,所以LED当然是要放在一起了,那如果两个引脚之间离得很远,就会影响布线了。所以在原理图中,如果引脚足够用的话,我们会根据布线的难易程度,尽可能地将物理上要放在一起的器件所对应的引脚放在一起。
这里就知道前面LED原理图中引脚分配的用心良苦了,可以看到是连在一起的。
3.5 3D演示
这个板子都是我刚学嵌入式的时候画的了,没有实物,3D图如下:
4 总结
本篇文章简单地介绍了一下嵌入式单片机的一个简单的最小系统的设计,其中涉及的知识还是很多的,如果做更复杂的PCB的话,如高频、强弱电、EMC,还有电容电阻的参数,阻值大小,容值大小等方面都需要有一些考虑。后面有空的话,我会再写一篇我以前画的强电高频FOC电机的四层板的文章,会涉及更多一些的硬件知识。
作者:tilblackout