Skip to main content

STM32F4 硬件开发

本篇文章将会在以下几个方面展开讲解:

  • 电源
  • 时钟
  • 复位
  • 启动模式
  • 调试管理

电源#

STM32F4 的正常工作电压是 1.8-3.6 V(在某些情况下可降至 1.7 V 以下,在数据手册有说明),有内置稳压器提供内部 1.2 V 的数字电源。

当主电源 VDD 断电时,可通过 VBAT 的电压为 RTC 和备份寄存器供电。

各引脚的介绍#

ADC 电源和参考电压#

为了提高转换精度,ADC 配有独立的电源引脚,可单独滤波并屏蔽 PCB 上的噪声。

ADC 电压源从单独的 VDDA 引脚输入。在电路设计时,应该把 VSSA 接到同个供电地,而非 VSS。

如果芯片的封装是 100 引脚以上的,就会有 VREF+ 和 VREF- 引脚,它们的作用是给 ADC 输入外部参考电压。VREF- 要接至内部 VSSA。如果芯片引脚小于 100,那么这两个引脚没有引出,在内部接在了 VDDA 和 VSSA。

后备电池电源#

如果需要在 VDD 断电后保留备份寄存器内容,可将 VBAT 连到电池或其他电源。

VBAT 也可为 RTC 供电,由复位模块中内置的掉电复位 (PDR)电路进行控制。

内置稳压器#

内置稳压器在复位后始终处于使能态,有三种工作模式:

  • 运行:稳压器为 1.2 V 域(内核、存储器和数字外设)提供全功率电源供应。
  • 停止:稳压器为 1.2 V 域提供低功率电源供应,同时保留寄存器和 SRAM 中的内容。
  • 待机:稳压器掉电。除待机电路和备份域,寄存器和 SRAM 的内容都将丢失。

电路设计#

以下是电源引脚的设计方法:

  • VDD
    • 去耦电容:总的一个 10 μF 的陶瓷/钽电容,外加每个 VDD 引脚旁接一个 100 nF 陶瓷电容。
  • VDDA
    • 去耦电容:100 nF 陶瓷电容 + 1 µF 陶瓷/钽电容。
    • 过滤模拟噪声:可通过磁珠接至 VDD。
  • VREF+
    • 去耦电容:如果启用 VREF+ 功能,则需接一个 100 nF 和一个 1 µF 的电容。
    • 过滤模拟噪声:可通过 47 Ω 电阻连至 VDDA。
  • VBAT:接外部电池(1.65 V-3.6 V)。如果不需要电池电源,则接至 VDD 引脚。
  • VCAP1/VCAP2:各对地连接一个 2.2 µF 陶瓷电容(ESR < 2 Ω);如果只有 VCAP1,则连一个 4.7 µF 陶瓷电容(ESR < 1 Ω)。

复位与电源监控#

上电复位(POR)/ 掉电复位(PDR)#

STM32F4 芯片中集成 POR/PDR 电路,具体上电 / 掉电复位的特征见上图。如需禁用此功能,可通过 PDR_ON 引脚实现。

系统复位#

系统复位的触发条件:

  • NRST 引脚低电平(外部复位)
  • 窗口看门狗计数结束(WWDG 复位)
  • 独立看门狗计数结束(IWDG 复位)
  • 软件复位(SW 复位)
  • 低功耗管理复位

可通过查看控制 / 状态寄存器 (RCC_CSR)中的复位标志确定复位源。

即使不需要外部复位电路,也建议外加一个下拉电容以提高 EMS 性能。

时钟#

在 STM32F4 上,可使用三种不同的时钟源来驱动系统时钟(SYSCLK):

  • HSI(高速内部时钟信号)
  • HSE(高速外部时钟信号)
  • PLL 时钟

也有两种次级时钟源:

  • LSI RC(32 kHz 低速内部 RC),用于驱动独立看门狗,也可用于 RTC 停机 / 待机模式下自动唤醒。
  • LSE(32.768 kHz 低速外部晶振),用于驱动 RTC。

如果需要降低功耗,每个时钟在未使用时都可以单独关闭。

外部高速时钟(HSE)#

HSE 时钟源可以有两种提供方式:外部源(有源)、外部晶振 / 陶瓷谐振器(无源)。

外部源(HSE 旁路)#

如果选择有源外部时钟信号输入,则需提供 1-50 MHz 的时钟源,OSC_IN 连接占空比约为 50% 的外部时钟信号(方波、正弦波或三角波),OSC_OUT 保持高阻态。

外部晶振 / 陶瓷谐振器(HSE 晶振)#

如果选用外部晶振,那么频率范围为 4-26 MHz。设计电路时,谐振器和负载电容必须尽可能地靠近振荡器的引脚,以尽量减小输出失真和起振稳定时间。负载电容值必须根据所选振荡器的不同做适当调整。

CL1 和 CL2 应选用大小相同(5-25 pF,典型值 25 pF)的陶瓷电容。

外部低速时钟(LSE)#

LSE 时钟源可以有两种提供方式:外部源(有源)、外部晶振 / 陶瓷谐振器(无源)。

外部源 (LSE 旁路)#

如果选择有源外部时钟信号输入,则需提供 1 MHz 以下的时钟源,OSC32_IN 连接占空比约为 50% 的外部时钟信号(方波、正弦波或三角波),OSC32_OUT 保持高阻态。

外部晶振 / 陶瓷谐振器(LSE 晶振)#

如果选用外部晶振,那么频率范围为 32.768 kHz,可作为 RTC 的时钟源。设计电路时,谐振器和负载电容必须尽可能地靠近振荡器的引脚,以尽量减小输出失真和起振稳定时间。负载电容值必须根据所选振荡器的不同做适当调整。

启动模式#

启动模式也叫自举模式。可通过 BOOT0 和 BOOT1 引脚来共同选择三种不同的启动模式:从主闪存存储器启动、从系统存储器启动、从内置 SRAM 启动。

启动模式的详细介绍请见文章 STM32 的启动模式

一般情况下,我们在 BOOT0 串接 10 K 的下拉电阻,BOOT1 任意即可。如果需要模式切换,那么可以参照以下的设计:

调试管理#

STM32 一般使用 SWJ 协议进行下载调试。

SWJ 调试端口#

STM32F4 内置 SWJ(SW/JTAG)接口。其中,SW-DP 是 2 引脚(时钟 + 数据),JTAG-DP 是 5 引脚,他们有些引脚是复用的。详细区别请见文章 SWD 与 JTAG 的区别与联系

在 STM32F4 中,SWJ 的引脚分配如下:

JTAG 的内部上下拉#

JTAG 引脚不能悬空(因为他们直接连着用于模式调试控制的触发器),所以在芯片内部有集成了对他们的上下拉:

  • JNTRST:内部上拉
  • JTDI:内部上拉
  • JTMS/SWDIO:内部上拉
  • TCK/SWCLK:内部下拉

软件释放 JTAG 的 I/O 后,可以作为普通的 I/O 口使用。

连接标准 JTAG 座的硬件设计#

参考设计#

参考与致谢#

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

Last updated on