序言
我们大多数人在学习stm32过程中都会陷入这样一个误区————只关注软件代码层面而忽视了硬件层面,简单来说就是只会用开发板,一旦需要设计自己的stm32系统就无从下手。本文旨在完成stm32最小系统的设计,stm32最小系统包括:电源、复位电路、晶振、程序下载电路四个部分,简单来记就是吃饭、睡觉、到点、起床工作。
电源
电就是MCU要吃的饭,不吃饭,stm32芯片肯定不能工作。
stm32最小系统板需要5v和3.3v两种电压,一般可以直接通过USB提供5v电压,也可以用电源适配器提供5V电压。而3.3v电压可以通过稳压芯片如ASM1117-3.3v等,把5v电压降为3.3v输出。
参考电源电路如下:
图中J1是USB接口,提供的5v电压经过ASM1117-3.3v后降为3v3,C1,C2(10*10^4pF=0.1u)用于电源滤波,高频滤波用小电容,低频滤波用大电容。D3是一个led用以指示电源工况,其上的R1 510R即510.0Ω用以限流,防止led灯烧坏。
J3也是一个USB接口,提供5v电压,同时它也是一个模拟串口,其D-和D+引脚与ch340相应引脚连接构成一个串口设备。
stm32吃的是3v3将其VDD和VSS引脚分别连接到3v3和GND,就解决了stm32的吃饭问题。
复位电路
人工作久了容易自闭、精神恍惚,这时需要睡一觉就以重新焕发活力。stm32工作久了也容易“精神恍惚”————程序跑飞,也需要复位。
stm32的NRST引脚是复位信号接收引脚与RESET相连,芯片低电平复位。如上图所示,当芯片刚上电时,电容充电导通,此时RESET=0,芯片复位;当按下复位按钮时,RESET接地,芯片复位。
晶振电路
晶振是芯片的心跳,每一次脉冲激励芯片执行一条指令,因此晶振的重要性不言而喻。
上图是stm32的晶振电路,8M无源晶振,其中R9(1M)用于稳定晶振的脉冲波形,C8(20P)和C9(20P)一方面构成晶振起振的必要回路,另一方面匹配电容,同时还具有调节晶振电路频率的作用。
程序下载电路
搭建stm32最小系统的目的当然是希望其按照我们的想法(即编写的程序)进行工作,程序下载接口就是为MCU注入灵魂的法门。
- stm32程序下载方式
- Link
- ULink
- STLink
- JLink包括:SWD模式(三线制)和JTAG模式
- 串口下载
不准确地说(错误滴说),Link就是把C语言翻译为芯片能懂的语言的器件,而在串口下载中是通过下载软件(如FlyMCU)将C语言翻译为芯片能听得懂的语言,二值殊途同归。
- stm32启动方式
stm芯片复位时即NRST引脚处于低电位时,BOOT0和BOOT1的电平状态,决定复位后芯片的启动方式。
BOOT0 | BOOT1 | 启动方式 | 程序下载方式 |
---|---|---|---|
0 | x | flash | Link(ICP) |
1 | 0 | ROM&BootLoader | 串口下载(ISP) |
1 | 1 | RAM | ???(IAP) |
- 题外话FLASH、RAM、ROM、内存、外存、缓存
(不写了,。。。)