作者:Power Lin
本文将基于 STM32 单片机(F1 系列)展开讲解。
背景
学嵌入式,我们一般从单片机学起。学单片机,不能只学软件,硬件知识也要跟上。软硬件相结合的设计,才是真正优秀的设计。
谈及单片机的硬件设计,我们会先将其浓缩为最小系统,即能实现最基础的功能的最简化设计。以 STM32(F1 系列)单片机为例,最小系统无非是这几部分:电源、复位、时钟、启动模式、下载调试。
电源
STM32 的电源有以下几种类型:
主电源(VDD / VSS)
主电源指的是标记为 VDD1、VDD2... 的引脚。
每个引脚必须加一个 100nF 的滤波电容,且尽量靠近引脚放置,此外需要一个 10uF 的钽电容公用。
后备电源(VBAT)
VBAT 引脚可用于电池供电。如果不用,可以与 VDD 连接在一起。VBAT 也需要一个 100nF 电容滤波。
可参考以下的电源选择电路:
ADC 电源(VDDA / VSSA)
为了提高转换精度,ADC 设备可以从这里取电。一般将 VDDA 通过一个电感后, 与 VDD 相连接。
若不用到 ADC,可将 VDD,VDDA,VREF+(如果有的话) 接在一起,并对地接 1uF 钽电容 + 10nF 陶瓷电容滤波。
复位
因为 STM32 内部有上拉电阻,所以外部只接 100nF 电容 + 按键即可:
上电时,CPU 处于复位状态,此时电容充电,NRST 引脚电位持续拉低,当电容充满电后,NRST 电位变为高电平,此时 CPU 退出复位模式,进入正常运行状态。当按钮被按下时,电容被短路清空电量,按钮松开后重新充电,触发复位。
根据官方设计指南,电容选取 100nF 即可,以保证 NRST 低电平持续的时间满足 CPU 复位的最小脉宽要求,能正常触发复位。
如果不需要手动复位功能,也可以略去按键。
时钟
如上图,STM32 的时钟分以下几种:
HSI:高速内部时钟,是内部的 RC 振荡器,频率为 8MHz
HSE:高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz
LSI:低速内部时钟,RC 振荡器,频率为 40kHz. 独立看门狗的时钟源只能是它,同时它也可以作为 RTC 的时钟源
LSE:低速外部时钟,接频率为 32.768kHz 的石英晶体。LSE 是给 RTC 用的时钟源
PLL:锁相环倍频输出,其时钟输入源可选择为 HSI/2,HSE 或 HSE/2. 倍频可为 2~16 倍,但是输出频率最大不得超过 72MHz
从稳定性上考虑,我们在设计的时候一般使用外部晶振作为时钟源。一般选取 8MHz 晶振作为 HSE,便于倍频(一般倍频到 72MHz);选取 32.768kHz 晶振作为 LSE,RTC 使用便于分频(32768 是 2 的 15 次方,可以得到精准的时间)。
至于晶振的选用,有源的精度高,无源的成本低,一般无源就足够了。
如果选用无源晶振,则需要在两端要加上起振电容,滤除晶振波形中的高频杂波。容值可选 10 ~ 40pF.
晶振输入输出引脚之间可加一个 1M 的电阻,产生负反馈,保证放大器工作在高增益的线性区。同时还起到限流作用,防止反相器驱动过载损坏晶振。
启动模式配置
一般将 BOOT0 引脚下拉(串接 10K 电阻再接地),BOOT1 任意即可。
如果需要模式切换,也可以参照以下的设计:
启动模式详见 STM32 的启动模式
下载调试接口
一般我们用 SWD 接口(接线少,方便),直接引出 SWDIO,SWCLK,VCC,GND 即可。
不需要添加外部上拉/下拉电阻,因为 STM32 内部已经有集成了。
总结
以上就是 STM32(F1 系列)最小系统的电路设计。