【学习笔记】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

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1