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

本文主要是介绍【学习笔记】STM32F407探索者HAL库开发(二)STM32F4最小系统设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【学习笔记】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 通信模块等的引入可以实现更高效的数据传输和系统监控,有助于及时发现和解决潜在的问题,提高整个系统的开发效率和质量。

这篇关于【学习笔记】STM32F407探索者HAL库开发(二)STM32F4最小系统设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101331

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

linux系统中java的cacerts的优先级详解

《linux系统中java的cacerts的优先级详解》文章讲解了Java信任库(cacerts)的优先级与管理方式,指出JDK自带的cacerts默认优先级更高,系统级cacerts需手动同步或显式... 目录Java 默认使用哪个?如何检查当前使用的信任库?简要了解Java的信任库总结了解 Java 信

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Oracle数据库在windows系统上重启步骤

《Oracle数据库在windows系统上重启步骤》有时候在服务中重启了oracle之后,数据库并不能正常访问,下面:本文主要介绍Oracle数据库在windows系统上重启的相关资料,文中通过代... oracle数据库在Windows上重启的方法我这里是使用oracle自带的sqlplus工具实现的方

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom