【学习笔记】STM32F407探索者HAL库开发(二)STM32F4最小系统设计

embedded/2024/12/22 12:14:13/

学习笔记】STM32F407探索者HAL库开发(二)STM32F4最小系统设计

  • 0 什么是最小系统
  • 1 电源电路
    • 1.1 数字部分电源
    • 1.2 模拟部分电源
    • 1.3 参考电压
    • 1.4 VBAT
  • 2 复位电路
  • 3 BOOT启动电路(F4)
  • 4 晶振电路
    • 4.1 低速晶振
    • 4.2 高速晶振
  • 5 下载调试电路
  • 6 串口一键下载电路
  • 7 最小系统的设计意义
    • 7.1 降低开发成本和风险
    • 7.2 提高开发效率
    • 7.3 便于故障排查和调试

在这里插入图片描述

0 什么是最小系统

最小系统就是保证MCU正常运行的最低要求(最小电路组成单元),一般是指 MCU的供电、复位、晶振、 BOOT等部分。 最小系统的作用是为电子设备或系统的开发和调试提供一个基础平台。在设计和开发复杂的电子系统时,通常先构建最小系统,确保核心部分能够正常工作,然后再逐步添加其他功能模块和外设,以实现完整的系统功能。这样可以降低开发难度,提高开发效率,并且便于进行故障排查和调试。

STM32F407的最小系统需求如下表所示:

类型引脚名称说明
电源VDD/VSS(数字部分)电源正(VDD)/负(VSS)引脚,给 STM32 供电
电源VDDA/VSSA模拟部分电源正/负引脚,给 STM32 内部模拟部分供电
电源VREF+/VREF-参考电压正/负引脚,给 STM32 内部 ADC/DAC 提供参考电压100脚及以上的STM32F407 型号才有这两个脚
电源VBATRTC&后备区域供电引脚,给RTC 和后备区域供电。一般VBAT接电池,用于断电维持 RTC 工作,如不需要,直接将VBAT接 VDD 即可
复位NRST复位引脚,用于复位 STM32,低电平复位
启动BOOT0/BOOT1启动选择引脚,一般这两个脚各接一个下拉电阻即可,其他启动配置说明详见后续分析
晶振OSC_IN /OSC_OU外部HSE 晶振引脚,用于给 STM32提供高精度系统时钟,如果使用内部HSI 能满足使用需求,这两个脚可以不接晶振
晶振OSC32_IN / OSC32_OUT外部LSE 晶振引脚,用于给 STM32 内部 RTC 提供时钟,如果使用内部LSI 能满足使用需求,这两个脚可以不接晶振
调试SWCLK/SWDIOSWD 调试引脚,用于调试 STM32 程序,同时 STM32 还支持JTAG 调试,不过不推荐使用!因为 SWD 省 IO!

1 电源电路

为整个系统提供稳定的电力。这可能包括直流电源(如电池、电源适配器等)或交流电源经过整流、滤波和稳压等处理后得到的直流电源。可增加电源管理:确保电源的稳定性和可靠性,可能包括过压保护、过流保护、欠压保护等功能。

1.1 数字部分电源

在这里插入图片描述

VCC5进入(例如USB接口),通过AMS1117稳压器,输出VCC3.3,给STM32供电,芯片需求电源是2.0V ~ 3.6V供电。R56/R57是为了维修方便而增加的2个电阻,大家实际设计电路板时候,可以不加这两个电阻.VCC3.3M直接连接3.3V即可。

VCC3.3M为芯片上所有的VDD供电,VSS全部接到GND。

1.2 模拟部分电源

在这里插入图片描述

模拟部分的电源也是由数字电源VCC3.3获取的,经过一个RC低通滤波器,把3.3V中高频的部分过滤掉,保留低频的部分,给模拟部分的VDDC和VSSA供电。

1.3 参考电压

在这里插入图片描述

参考电压Vref+,也是来自于模拟部分电源,通过排针的方式引入,使用短路帽连接至VDDA(3.3V模拟电源),Vref-一般就是GND。如果不想使用VDDA,也可以通过排针,从外部接入一个参考电压。

1.4 VBAT

在这里插入图片描述

3.3V通过二极管给VBAT供电,当开发板断电时,没有3.3V后,通过BAT纽扣电池(3V)通过二极管给VBAT引脚供电,是的RTC和后备区域的数据保存下来。

2 复位电路

在这里插入图片描述

STM32复位引脚NRST保持低电平状态时间1~4.5ms即可复位。

3 BOOT启动电路(F4)

在这里插入图片描述

开发板默认状态,接线帽将35连接,46连接,通过两个下拉电阻将BOOT0和BOOT1接地。

4 晶振电路

4.1 低速晶振

在这里插入图片描述

4.2 高速晶振

在这里插入图片描述

5 下载调试电路

在这里插入图片描述

6 串口一键下载电路

在这里插入图片描述

PA9和PA10通过排针13引出,可通过外部的USB-TTL的模块或RS232电平转换连入。
开发板也提供了转换芯片CH340

在这里插入图片描述

右侧为USB接口,连接至电脑,通过CH340 D+/D-输入至CH340芯片,可以将USB的信号转换为TTL电平,通过TXD/RXD引脚输出给USART1的24排针,使用短路帽供给13。

7 最小系统的设计意义

7.1 降低开发成本和风险

  1. 资源聚焦:通过只包含最基本的组件,最小系统可以在开发初期以较低的成本进行设计和验证。这避免了在不确定整个系统需求的情况下投入大量资源到全面的设计中,降低了不必要的成本支出。
  2. 早期验证:在项目早期构建最小系统,可以快速验证核心功能和关键技术的可行性。如果在这个阶段发现问题,可以及时调整设计方向,避免在后续开发中投入更多资源后才发现不可行,从而降低项目失败的风险。

7.2 提高开发效率

  1. 简化设计流程:最小系统的简洁性使得设计过程更加清晰和直接。开发人员可以专注于核心功能的实现,减少了复杂系统中可能出现的干扰因素,加快了设计进度。
  2. 快速迭代:由于最小系统相对简单,对其进行修改和优化也更加容易。这使得开发人员可以快速进行迭代开发,根据测试结果和用户反馈及时调整设计,提高产品的质量和性能。

7.3 便于故障排查和调试

  1. 缩小问题范围:当系统出现故障时,最小系统的简单结构有助于快速定位问题所在。由于组件较少,排查故障的范围也相应缩小,提高了故障排查的效率。
  2. 独立测试:最小系统可以作为一个独立的单元进行测试,与其他部分的系统相对隔离。这使得测试过程更加简单和可控,能够更准确地发现和解决问题。
    7.4 为系统扩展提供基础
  3. 明确核心需求:通过设计最小系统,开发人员可以更好地理解系统的核心需求和关键功能。这为后续的系统扩展提供了明确的方向和基础,确保扩展的部分与核心功能相协调。
  4. 逐步扩展:在最小系统的基础上,可以逐步添加其他功能模块和外设,实现系统的逐步扩展。这种渐进式的开发方式可以更好地控制开发过程,降低系统复杂性带来的风险。

总之,最小系统的设计在硬件电路开发中具有重要的意义和作用。它不仅可以降低开发成本和风险,提高开发效率,还便于故障排查和调试,为系统的扩展提供了坚实的基础。

在这里插入图片描述

注:笔记内容来自正点原子官方HAL库开发教程,配合STM32F407探索者开发板

注:最小系统的设计本质上是实现功能的最基本单元,在前期设计工作中作为基础架构而存在。为了便于调试,可以添加诸如 CAN 通信等模块,以更好地验证硬件电路的功能特性。这样的设计策略能够在项目初期快速构建一个可测试的平台,通过逐步添加功能模块和进行调试,确保硬件电路的稳定性和可靠性,为后续的系统扩展和优化提供坚实的基础。同时,CAN 通信模块等的引入可以实现更高效的数据传输和系统监控,有助于及时发现和解决潜在的问题,提高整个系统的开发效率和质量。


http://www.ppmy.cn/embedded/99558.html

相关文章

使用Virtio Driver实现一个计算阶乘的小程序——QEMU平台

目录 一、概述 二、代码部分 1、Virtio 前端 (1) User Space (2) Kernel Space 2、Virtio 后端 三、运行 QEMU Version:qemu-7.2.0 Linux Version:linux-5.4.239 一、概述 本篇文章的主要内容是使用Virtio前后端数据传输的机制实现一个计算阶乘的…

计算机网络——TCP协议与UDP协议详解(下)

一、TCP协议 1.1 TCP协议的报文 TCP全称为 "传输控制协议(Transmission Control Protocol")。人如其名,要对数据的传输进行一个详细的控制。我们先看其报文格式,如下图: TCP报文由以下几个字段组成: 源端口号和目标端口…

两张图理解ARP原理

同一网段 不同网段

Eureka原理与实践:构建高效的微服务架构

Eureka原理与实践:构建高效的微服务架构 Eureka的核心原理Eureka Server:服务注册中心Eureka Client:服务提供者与服务消费者 Eureka的实践应用集成Eureka到Spring Cloud项目中创建Eureka Server创建Eureka Client(服务提供者&…

追问试面试系列:分布式事务

hi 你好 感谢您的围观,本篇文章主要是分享分布式事务相关的问题。面试题一共整理19道,从分布式事务的一些理论开始,最后道项目中的分布式事务问题。 话不多说,我们直接进入正文。 面试官:什么是分布式事务? 其实嘛,分布式事务从实质上看与数据库事务的概念是一致的,…

Linux下获取文件或目录的状态信息

一.概述 在Linux下进行文件、目录编程时经常需要获取指定文件的属性信息,比如: 文件类型、大小、创建日期、修改日期等属性信息。 获取这些属性信息非常有用,比如: 打开一个设备文件时,为了防止未知错误,可以提前判断打开的设备文件是否是正确…

绕过检测与持久化的无文件攻击(第二篇)

1. 绕过防御机制的策略 混淆技术:使用 PowerShell 的混淆技术,例如 Base64 编码,来绕过防病毒软件的检测。内存混淆:通过动态分配和释放内存,扰乱内存扫描工具。 2. 无文件持久化技术 WMI 事件订阅:利用…

如何保证每次生成的都同一张人脸?AI绘画Stable Diffusion的Reference only插件人物一致性教程

Ai绘画有一个很现实的问题,要保证每次画出的都是同一个人物的话,很费劲。 Midjourney就不必说了,人物的高度一致性一直得不到很好的解决。而在Stable Diffusion(SD)中,常用办法是通过同一个Seed值&#xf…