# 如何设计一款单片机的最小系统

本文将参照 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 的时钟分以下几种:

  1. HSI:高速内部时钟,是内部的 RC 振荡器,频率为 8MHz
  2. HSE:高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~16MHz
  3. LSI:低速内部时钟,RC 振荡器,频率为 40kHz. 独立看门狗的时钟源只能是它,同时它也可以作为 RTC 的时钟源
  4. LSE:低速外部时钟,接频率为 32.768kHz 的石英晶体。LSE 是给 RTC 用的时钟源
  5. 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 的启动模式 (opens new window)

# 下载调试接口

一般我们用 SWD 接口(接线少,方便),直接引出 SWDIO, SWCLK, VCC, GND 即可
不需要添加外部上拉/下拉电阻,因为 STM32 内部已经有集成了。

# 总结

以上就是 STM32(F1 系列)最小系统的电路设计。更加详细的内容,可以跳转下面的官方文档和相关文章。

# 参考与致谢



文章作者:Power Lin
原文地址:https://wiki-power.com (opens new window)
版权声明:文章采用 CC BY-NC-SA 4.0 (opens new window) 协议,转载请注明出处。

Last Updated: 2020/11/26 下午3:19:01