玩单片机的第一步,就是搭一个"最小系统"。什么叫最小系统?就是让一颗单片机芯片跑起来所需要的最少外围电路,电源、时钟、复位这三件事搞定,单片机就能点亮一个LED了。别看最小系统简单,它可是单片机开发的基础,很多新手入门第一个礼拜就在调这个。今天就从电源、时钟、复位、IO扩展四个部分,详细聊聊不同系列单片机的最小系统怎么搭,以及那些看似简单但容易踩的坑。
先说电源部分。不同单片机的工作电压不一样:51单片机(比如STC89C52)一般是5V供电;STM32是3.3V;PIC、AVR有的支持5V有的支持3.3V;ESP8266/ESP32是3.3V但对纹波特别敏感。电源的来源常见的有三种:USB口(5V,直接从电脑取电)、LDO稳压模块(把更高电压降到单片机需要的电压)、开发板自带的电源电路。新手做最小系统最方便的办法是买一块面包板电源模块,既能插在面包板上,又能同时输出3.3V和5V,不用自己焊接电源电路。注意一点:单片机的电源引脚附近要加一个0.1μF的陶瓷电容(去耦电容)和一个10μF的电解电容,这是教科书里反复强调但很多新手懒得加的东西,不加的话单片机容易受干扰跑飞。
时钟电路是单片机的"心脏",单片机所有指令的执行都靠时钟信号驱动。时钟源分两种:内部RC振荡器和外部晶振。内部RC振荡器在单片机芯片内部,精度一般(±1%到±5%),但不需要外围元件,很多单片机都内置,可以用程序配置选择内部还是外部时钟。外部晶振精度高(±0.01%甚至更好),需要在两个时钟引脚之间接一个晶振和两个负载电容。51单片机的经典电路就是用11.0592MHz的晶振(这个频率好算波特率),两个33pF的电容。STM32用8MHz的外部晶振,然后内部PLL倍频到更高频率(比如72MHz)。选内部还是外部?做简单的控制项目(点个灯、读个传感器)内部RC够用;做串口通信、USB、CAN这些对时序精度要求高的项目必须用外部晶振。
复位电路是让单片机恢复初始状态的。复位方式有两种:上电复位和手动复位。上电复位是利用电容充电特性:复位引脚(一般叫RST或RESET)通过一个电阻接VCC,同时接一个电容到GND,上电时电容两端电压为0,RST引脚处于低电平(或高电平,取决于单片机的复位电平逻辑),电容充电后RST引脚变成正常电平,单片机开始运行。手动复位就是在RST引脚加一个按钮,按下时把RST引脚接到复位电平,松开后电容重新充电。复位电路的阻容值要选对:51单片机(高电平复位)常用10kΩ电阻和10μF电容;STM32(低电平复位)电阻接GND、电容接VCC。很多新手做复位电路失败,就是因为搞反了复位电平的逻辑——到底是高电平复位还是低电平复位,一定要查datasheet。
搭好这三部分,单片机就能跑起来了。但要做实际应用,还得加些外围电路。最基础的就是IO口:接个LED(记得加限流电阻,一般330Ω到1kΩ)、接个按键(一般用上下拉电阻,10kΩ就行)。然后是下载器:51单片机用STC-ISP串口下载,STM32用ST-Link V2,PIC用PICkit 3,AVR用USBasp。还有串口通信:加个USB转TTL模块(CH340或CP2102芯片),就能通过电脑串口跟单片机通信了。新手的第一个程序永远是"点灯":让一个LED以1秒为周期闪烁。虽然简单,但能跑通这个程序,说明你的最小系统搭对了,开发环境也配好了,接下来就能往上学了。
最后说几个新手常见的坑。第一个是晶振不起振:晶振是有型号的,不是随便一个就能用,要匹配单片机的时钟电路参数(比如负载电容值),电容的容值差太多可能不起振。第二个是复位电平搞反:不同单片机复位极性不同,51是高电平复位,STM32是低电平复位,接反了单片机一直处于复位状态不跑。第三个是电源接反或电压超了:很多新手把VCC和GND接反,或者给3.3V的单片机上了5V,直接烧芯片,万用表测清楚电压再接。第四个是下载器连不上:大部分原因是地线没共地——下载器的GND必须跟单片机的GND连在一起,不然信号没有参考电平,肯定连不上。总的来说,最小系统不难,但要细心,一次搭不对也正常,多查datasheet多试,总有成功的时候。
上一篇:和平·inOPC社区首批企业入驻OPC开源协作大会同期举办
下一篇:没有了