单片机最小系统是每个嵌入式工程师必经的第一道关。所谓最小系统,就是让单片机能够正常工作的最简化电路——电源、晶振、复位、程序下载接口四部分。看似简单,但里面藏着不少坑,今天我带大家详细拆解一下。
最小系统的核心是电源。单片机一般要稳定的直流电压,51系列常用5V,STM32常用3.3V。电源设计看似简单,实际上有几个细节要注意:第一,电源入口要加去耦电容(一般100nF陶瓷电容加10μF电解电容),滤除电网干扰和高频噪声;第二,单片机每个VDD引脚旁边都要放一个100nF去耦电容,距离VDD引脚不超过5mm,防止电源波动导致单片机复位或跑飞;第三,多个GND引脚要直接连到大面积铺地,降低地线阻抗。
晶振是单片机的"心脏",提供时钟信号。没有晶振,单片机就无法按节奏执行指令。晶振电路的设计要点:晶振两端要各接一个负载电容(一般15-33pF),电容的另一端接地。负载电容的容值要严格按照推荐值选择,容值偏差太大会导致晶振频率偏移或者不起振。晶振要尽量靠近单片机的XTAL引脚,走线要等长且短,远离高频信号线(比如PWM输出、串口线),避免电磁干扰。
51单片机用12MHz或11.0592MHz晶振比较多。11.0592MHz的好处是能精确产生9600、19200等标准波特率,串口通信不容易出错。STM32一般用8MHz晶振,内部PLL倍频到72MHz或其他频率。STM32F103系列如果用内部8MHz RC振荡器,可以省掉外部晶振,但精度差一些(误差1%-2%),做串口通信可能会出错,所以对通信精度要求高的场合还是要用外部晶振。
复位电路是另一个关键。51单片机的复位引脚是低电平有效(保持20ms以上低电平),所以用一个10kΩ电阻上拉、一个10μF电容接地组成RC复位电路。上电瞬间电容两端电压不能突变,相当于短路,所以RST引脚是低电平;随着电容充电,电压逐渐升高,最终稳定在高电平,复位完成。这个RC时间常数要保证上电后RST保持低电平至少2个机器周期(一般20ms以上),才能可靠复位。
STM32的复位稍微复杂一些,它有NRST引脚(低电平复位),内部已经有上拉电阻,外部可以加一个按键手动复位(按键一端接NRST,另一端接地)。STM32还支持多种复位源:上电复位、掉电复位、看门狗复位、软件复位,复位后可以从状态寄存器读出复位原因,便于调试。
程序下载接口是单片机的"口粮",用来把写好的代码烧录进去。51单片机早期用并行编程器(要几十根数据线),现在基本都改成串口ISP(In-System Programming),通过UART下载。STM32用SWD(Serial Wire Debug)接口,只需要SWDIO、SWCLK、GND三根线(再加VCC给目标板供电),就能下载程序和在线调试,比JTAG省一半引脚。
画原理图的时候,下载接口的引脚顺序要特别注意。我经常看到新手画的电路,SWD接口的SWDIO和SWCLK接反了,导致下载器识别不到芯片。还有VCC和GND不能接错,否则可能烧坏下载器或目标板。下载接口的引脚定义是行业标准化的(比如SWD是2.54mm排针,VCC、SWDIO、SWCLK、GND顺序固定),照着画就不会错。
最小系统的PCB布局也很有讲究。晶振要放在单片机晶振引脚正下方,避免长走线引入干扰。复位电路的电阻、电容也要靠近RST引脚。电源去耦电容要均匀分布在各个VDD引脚旁边。整个单片机周围要保持良好的地平面铺铜,电源走线尽量粗(至少0.5mm),关键信号线(特别是晶振、复位、SWD)要做包地处理。
很多新手在调试最小系统时会遇到"晶振不起振"的问题。原因可能有几个:一是晶振两端的负载电容选错了(太大或太小);二是晶振本身质量不好(劣质晶振或假货);三是PCB布线太长或者靠近干扰源;四是单片机虚焊或损坏。排查方法:先用示波器看晶振引脚的波形,如果有正弦波但幅度小,可能是负载电容太大;如果完全没波形,先换晶振试试,再检查焊接。
现在很多厂商提供了单片机最小系统的开源原理图(比如STM32F103核心板,到处都是),新手可以直接拿来做参考。但理解每个元件的作用和设计要点更重要,否则照抄也容易出问题。掌握了最小系统的设计,再复杂的嵌入式系统都是在这个基础上加功能模块而已。
上一篇:为什么1美元大致可换7块人民币?这个汇率是通过什么算出来的?
下一篇:没有了