学单片机的朋友肯定都听过"最小系统"这个词。什么叫最小系统?就是让单片机能跑起来的最少电路,多一个元件多余,少一个元件不干活。别看最小系统简单,它是所有单片机项目的基础,搞懂了它,后面做复杂项目心里就有底了。
单片机最小系统一般由三部分组成:电源电路、复位电路、时钟电路(晶振)。这三个就像单片机的"衣食住行",缺一不可。电源给芯片供电,复位让芯片从一个确定的状态开始运行,晶振提供心跳时钟。有些单片机还需要一个下载调试接口,但那不算最小系统的必要组成,只是方便开发而已。
先聊电源电路。单片机的供电电压一般是3.3V或5V,具体看芯片型号。电源输入通常要加一个10μF到100μF的电解电容做滤波,再并联一个0.1μF的瓷片电容滤高频噪声。这两个电容要尽量靠近芯片的VCC和GND引脚,走线越短越好。很多新手画板子时把滤波电容放得老远,结果单片机跑起来各种莫名其妙的死机,多半就是电源没滤干净。
复位电路的作用是在上电时给单片机一个复位信号,让它从初始状态开始执行程序。最经典的复位电路是一个电阻加一个电容:电阻上拉到VCC,电容下拉到GND,中间节点接复位引脚。上电瞬间电容两端电压不能突变,复位引脚是低电平,随着电容充电电压逐渐升高,超过阈值后单片机退出复位开始运行。电阻一般选10kΩ,电容选10μF,这个组合能保证复位时间足够。现在很多单片机内部已经集成了上电复位电路,外部复位电路可以简化甚至省掉,但建议还是留着,调试时手动复位很方便。
晶振电路是单片机的"心跳"。晶振接在单片机的XTAL1和XTAL2引脚之间,旁边各接一个20pF到30pF的负载电容到地。晶振的频率决定了单片机的运行速度,常用的有8MHz、11.0592MHz、12MHz。选11.0592MHz是因为它能精确分频出标准的串口波特率(比如9600、115200),用其他频率的晶振做串口通信时波特率会有误差。晶振下面最好不要走线,避免干扰。
画最小系统电路图时还有几个细节要注意。第一个是去耦电容,每个VCC引脚旁边都要放一个0.1μF的去耦电容,不能偷懒只放一个。第二个是BOOT引脚,有些单片机(比如STM32)有BOOT0和BOOT1引脚,用来选择启动模式,要根据需要接上拉或下拉电阻,别悬空。第三个是下载接口,建议留一个SWD或JTAG接口,调试时方便,量产时可以不焊。
实际调试中常见的问题:单片机上电没反应,先量VCC引脚电压对不对,再看复位引脚电平,最后用示波器测晶振有没有起振。晶振不起振多半是负载电容选错了或者晶振本身坏了。还有一个容易忽略的点是EA引脚,51单片机的EA引脚要接高电平才能从内部Flash启动程序,接低电平就跑去读外部ROM了,结果就是程序跑不起来。
下一篇:没有了