STM32 单片机最小系统全解析

STM32 单片机最小系统全解析

本文详细介绍了 STM32 单片机最小系统,包括其各个组成部分及设计要点与注意事项。STM32 最小系统在嵌入式开发中至关重要,由电源、时钟、复位、调试接口和启动电路等组成。

在电源电路方面,采用 3.3V 直流电源供电,通常使用 AMS1117-3.3 电源芯片将 5V 电压转换为稳定的 3.3V 电压,多个滤波电容可有效去除电源中的杂波和干扰信号。

时钟电路中,晶振为单片机提供运行的时钟信号,STM32 有高速和低速两种晶振,高速晶振一般为主时钟晶振,常见频率为 8MHz,低速晶振通常为 RTC 时钟晶振,频率一般为 32.768kHz。晶振两端连接的电容可起到滤波和消除电感干扰的作用,通过选择合适的电容值,可与晶振形成并联谐振电路,使晶振输出的震荡频率更加稳定。

复位电路有手动复位和上电复位两种方式,手动复位通过按键实现,上电复位利用电容的充放电特性。STM32 是低电平复位,复位时初始化各个寄存器,但不包括 RAM。

调试接口电路中,常用的调试下载方式有 JTAG 和 SWD。SWD 调试接口结构简单,节省 I/O 口和板子空间,在高速模式下更加可靠。

启动电路有三种启动模式,由 BOOT0 和 BOOT1 引脚在复位时的状态决定。从主 Flash 启动是最常见的启动方式,代码存储在 STM32 的内置 Flash 中;从系统存储器启动时,内置 ROM 的起始地址将被重映射到 0x00000000 地址;从嵌入式 SRAM 中启动时,适合调试,但掉电丢失。

在设计要点方面,晶振电路设计要注意电阻、电容的选择和作用;复位电路采用手动复位的方式,通过按键实现;电源稳压电路要选用合适的稳压芯片。

注意事项包括走线要求、焊接技巧、检查引脚连接和通断的方法、芯片焊接步骤及注意事项、非正常短接的找错方法以及 PCB 绘制中的快捷键、注意事项和技巧。

总之,了解和掌握 STM32 单片机最小系统的组成、设计要点和注意事项,对于嵌入式开发人员来说至关重要。

一、STM32 最小系统概述

STM32 单片机最小系统在嵌入式开发中具有至关重要的地位,它是单片机稳定运行的基础。就如同一个人的身体系统需要各个器官协同工作才能保持健康,STM32 单片机也需要最小系统的各个组成部分共同作用才能正常运行。

最小系统主要由电源、时钟、复位、调试接口和启动电路等组成。电源是整个系统的动力来源,就像人的消化系统为身体提供能量一样。STM32 的工作电压一般为 1.8 - 3.3V,通常使用 3.3V 直流电源为其供电。为了保证电源的稳定性,电路中通常会加入多个滤波电容。

时钟电路犹如人的心脏,为单片机提供运行的节奏。STM32 有两组晶振,主时钟晶振一般为 8MHz,为单片机提供主时钟信号;RTC 时钟晶振通常为 32.768kHz,为实时时钟提供时钟信号。晶振两端通常会连接电容,起到滤波和稳定频率的作用。

复位电路则是单片机的免疫系统,当系统出现故障或混乱时,可通过复位让系统重新开始。STM32 是低电平复位,通常有手动复位和上电复位两种方式。上电复位利用电容的充放电特性,在上电瞬间使复位引脚为低电平,经过一段时间后电容充电完成,复位引脚变为高电平,单片机开始正常工作。手动复位则通过按键实现,按下按键时复位引脚接地为低电平,松开后恢复高电平。

调试接口是开发过程中不可或缺的部分,它方便开发者进行程序的下载和调试。常见的调试接口有 JTAG 和 SWD,现在 SWD 调试接口使用较为广泛,它只需两根线即可实现调试和下载功能。

启动电路则决定了单片机的启动方式。STM32 有三种启动模式,由 BOOT0 和 BOOT1 引脚在复位时的状态决定。一般情况下,如果想用串口下载代码,则必须配置 BOOT0 为 1,BOOT1 为 0;如果想让 STM32 按下复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设置都可以。

综上所述,STM32 最小系统的各个组成部分相互配合,共同为单片机的稳定运行提供了保障。

二、组成部分详解

(一)电源电路

STM32 的工作电压一般为 1.8 - 3.3V,通常使用 3.3V 直流电源为其供电。电源电路中,稳压芯片起到关键作用,如常见的 AMS1117-3.3 电源芯片,可将输入的 5V 电压转换为稳定的 3.3V 电压,为 STM32 及其他电路模块提供合适的工作电压。电容在电源电路中也非常重要,起到滤波的作用。多个滤波电容可以有效去除电源中的杂波和干扰信号,保证电源的稳定性。例如,当电源中出现高频噪声时,小容量的陶瓷电容可以快速充放电,将高频噪声滤除;而大容量的电解电容则可以对低频波动进行平滑处理,确保电源电压的稳定输出。

(二)时钟电路

晶振在 STM32 中起着至关重要的作用,就如同心脏为人体提供节奏一样,晶振为单片机提供运行的时钟信号。STM32 有高速和低速两种晶振。高速晶振一般为主时钟晶振,常见的频率为 8MHz,为单片机提供主时钟信号,使单片机能够高速运行各种程序和任务。低速晶振通常为 RTC 时钟晶振,频率一般为 32.768kHz,为实时时钟提供精确的时钟信号,保证时间的准确记录。在晶振两端连接的电容,一方面可以起到滤波的作用,减少外部干扰对晶振频率的影响;另一方面,还可以消除晶振的电感干扰。根据搜索到的资料,晶振在电气上可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,通过选择合适的电容值,可以与晶振形成并联谐振电路,从而使晶振输出的震荡频率更加稳定。

(三)复位电路

复位电路主要有手动复位和上电复位两种方式。手动复位是通过按键实现的,当按下按键时,复位引脚接地为低电平,松开后恢复高电平。这种方式在系统出现故障或需要重新启动时非常方便。上电复位则利用电容的充放电特性,在上电瞬间,由于电容两端电压不能突变,复位引脚为低电平,随着电容充电完成,复位引脚变为高电平,单片机开始正常工作。STM32 是低电平复位,当复位引脚为低电平时,系统进行复位操作,初始化各个寄存器,包括最重要的 PC 指针,但不包括 RAM。然后单片机从复位地址开始执行程序。

(四)调试接口电路

在程序开发过程中,常用的调试下载方式有 JTAG 和 SWD。JTAG(Joint Test Action Group)是一种国际标准测试协议,主要用于芯片内部测试。标准的 JTAG 接口是 4 线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。SWD(Serial Wire Debug)是一种和 JTAG 不同的调试模式,使用的调试协议也不一样。与 JTAG 的 20 个引脚相比,SWD 只需要 4 个(或者 5 个)引脚,结构简单,节省了 I/O 口和板子空间。例如,正常的 JTAG 需要 20 管脚,而 J-Link 的 SWD 只需要 2 根线(PA13/JTMS/SWDIO、PA14/JTCK/SWCLK)就够了(加上电源线也就 4 根)。SWD 在高速模式下面更加可靠,在大数据量的情况下面 JTAG 下载程序会失败,但是 SWD 发生的几率会小很多。

(五)启动电路

STM32 有三种启动模式,由 BOOT0 和 BOOT1 引脚在复位时的状态决定。一般情况下,如果想用串口下载代码,则必须配置 BOOT0 为 1,BOOT1 为 0;如果想让 STM32 按下复位键就开始跑代码,则需要配置 BOOT0 为 0,BOOT1 随便设置都可以。从主 Flash 启动是最常见的启动方式,代码存储在 STM32 的内置 Flash 中,启动时内置 Flash 的起始地址将被重映射到 0x00000000 地址,代码将在该处开始执行。从系统存储器启动时,内置 ROM 的起始地址将被重映射到 0x00000000 地址,代码在此处开始运行。ROM 中有一段出厂预置的代码,可通过 UART/CAN 或 USB 等将代码写入 STM32 的内置 Flash 中。从嵌入式 SRAM 中启动时,内置 SRAM 的起始地址将被重映射到 0x00000000 地址,代码在此处开始运行。这种模式适合调试,因为烧录程序过程中不需要擦写 Flash,速度较快,但掉电丢失。

三、设计要点与注意事项

(一)设计要点

  1. 晶振电路设计,包括电阻、电容的选择和作用。
    • 晶振选用 8MHz 的无源晶振,具有高精度、高频率稳定性、可靠性强等优良特性。晶振的输入输出端连接电阻,一般为 M 欧级,本系统中选用 1M 欧电阻,起到产生负反馈的作用,保证放大器能够工作在高增益的线性区。晶振两端的电容一般选择 10 - 40pF,起到使晶振两端的等效电容等于或接近于负载电容的作用,同时还能起到一定的滤波作用,滤除晶振波形中的高频杂波。一般情况下,增大电容会使振荡频率下降,而减小电容会使振荡频率升高。
  1. 复位电路采用手动复位的方式及原理。
    • 复位电路采用手动复位的方式,通过引入按键的使用达到手动复位的目的。STM32 是低电平复位,按键按下时,NRST 引脚和 GND 导通,从而在该引脚出产生一个低电平,从而实现单片机的复位。复位电路由一个按键、一个电容、一个上拉电阻组成。接上电源瞬间,电容等效于短路,此时 NRST 点为低电位接地,STM32 复位。当电容充电完成后,电容等效于开路,NRST 点电位回升为高电平。按下按键 KEY1,NRST 点接地变为低电平,STM32 复位。按键松开后,NRST 点回升为高电平。
  1. 电源稳压电路的分析,选用合适的稳压芯片。
    • 由于本系统所使用电源适配器提供的是 5V 的电压源,而系统所使用的 MCU 的正常工作电压是 3.3V,所以需要进行降压处理。该电路设计所采用的是 AMS1117 这一款正向低压降稳压器,选用的稳压 IC 是 AMS1117 系列的 3.3V 降压版本,其输出电压的精度为 1%,满足了降压精度的需求。同时由于其内部集成有过热保护和限流电路,所以在电源的使用过程中能够提供一定的安全保障。

(二)注意事项

  1. 走线要求,不走直角且尽量粗。
    • 走线不走直角可以减少信号反射和干扰,提高电路的稳定性。走线尽量粗可以降低电阻,减少电压降,提高电源的效率。
  1. 焊接技巧,温柔操作,及时上锡保护。
    • 焊接的时候要温柔,太大力会造成损坏。一小会不用焊笔就要上锡保护,防止焊笔氧化。
  1. 检查引脚连接、通断和排查问题的方法。
    • 先检查引脚是否接对,再检查通断,可使用万用表进行检测。然后逐个点的排查问题,如检查芯片引脚是否短接,可使用万用表来调试,不要相信肉眼。
  1. 芯片焊接步骤及注意事项。
    • 芯片焊接步骤为:粘锡拆引脚 - 粘锡分开引脚 - 对齐引脚再固定 - 放斜板子靠重力 - 引脚垂直焊笔来焊接 - 多的锡引到一起,用松香一点点除去。固定用的一排引脚锡也不要加太多,后面去掉很麻烦。一定要先确定好封装再去焊。
  1. 非正常短接的找错方法。
    • 用小刀割开导线,分段找问题。芯片的引脚拉长一点,有助于检查短接问题。
  1. PCB 绘制中的快捷键、注意事项和技巧。
    • 在 PCB 绘制中,合理设置铺铜和导线的间距可以宽一些,避免干扰。为自制的板子加入指示灯有助于调试。底层的墨擦掉,防止短路。输入线要粗,保证电源供应稳定。在焊盘上的 PCB 是转印纸上的镜像,绘制时要注意。原理图要让别人看得懂,方便后续维护和修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/881931.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(已解决)vscode如何传入argparse参数来调试/运行python程序

文章目录 前言调试传入参数运行传入参数延申 前言 以前,我都是用Pycharm专业版的,由于其好像在外网的时候,不能够通过VPN来连接内网服务器,我就改用了vscode。改用了之后,遇到一个问题,调试或者运行python…

解密.bixi、.baxia勒索病毒:如何安全恢复被加密数据

导言 在数字化时代,数据安全已成为个人和企业面临的重大挑战之一。随着网络攻击手段的不断演进,勒索病毒的出现尤为引人关注。其中,.bixi、.baxia勒索病毒是一种新型的恶意软件,它通过加密用户的重要文件,迫使受害者支…

redis基本数据结构-sorted set

1. sorted set的简单介绍 参考链接:https://mp.weixin.qq.com/s/srkd73bS2n3mjIADLVg72A Redis的Sorted Set(有序集合)是一种数据结构,它是一个不重复的字符串集合,每个元素都有一个对应的分数(score&…

科研入门学习

学习视频链接 为什么要读论文 读哪些论文 论文的分类 论文质量 如何找论文 根据领域大牛的名字进行搜索查看高水平论文引用的论文,高水平论文引用的论文很大程度也是高水平的论文 如何整理论文 如何读论文 读论文的困境 不同人群阅读差异 读论文的方式 论文的结构…

Day.js时间插件的安装引用与常用方法大全

🚀 个人简介:某大型国企资深软件研发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

BLE 设备丢包理解

前言 个人邮箱:zhangyixu02gmail.com在学习 BLE 过程中,总能听到 “丢包” 一词,但是我查阅资料又发现,有大佬说,ATT所有命令都是“必达”的,不存在所谓的“丢包”。而且我发现,在宣传 BLE 产品…

SpringBoot 整合 Caffeine 实现本地缓存

目录 1、Caffeine 简介1.1、Caffeine 简介1.2、对比 Guava cache 的性能主要优化项1.3、常见的缓存淘汰算法1.4、SpringBoot 集成 Caffeine 两种方式 2、SpringBoot 集成 Caffeine 方式一2.1、缓存加载策略2.1.1、手动加载2.1.2、自动加载【Loading Cache】2.1.3、异步加载【As…

Jboss 低版本JMX Console未授权

漏洞描述 此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进⼊到 jmx控制台,并在其中执⾏任何功能 影响范围 Jboss4.x以下 环境搭建 cd vulhub-master/jboss/CVE-2017-7504 doc…

Java笔试面试题AI答之单元测试JUnit(7)

文章目录 37. 请列举一些JUnit扩展 ?1. 参数化测试2. 条件测试执行3. 临时目录4. 时间测试5. 重复测试6. 前置/后置条件7. Mockito8. Spring Test9. JUnit Vintage10. Testcontainers11. 自定义注解和扩展12. 测试监听器(TestListener 和 RunListener&am…

WIFI路由器的套杆天线简谈

❝本次推文简单介绍下WIFI路由器的套杆天线。 路由器天线 路由器在这个万物互联的时代,想必大家对其都不陌生。随着科技的发展,常用的路由器上的天线也越来越多,那么问题来了:天线越多,信号越好吗?路由器…

智谱清影 - CogVideoX-2b-部署与使用

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 体验地址:[丹摩DAMODEL官网](https://www.damodel.com/console/overview) CogVideoX 简介本篇将详细介绍使用丹摩服务器部…

Codeforces Round 974 (Div. 3)

比赛地址 : Dashboard - Codeforces Round 974 (Div. 3) - Codeforceshttps://codeforces.com/contest/2014 A 模拟 #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); using namespace std;#define endl \n typedef long long …

Qt 模型视图(一):概述

文章目录 Qt 模型视图(一):概述1、模型/视图结构基本原理2、模型3、视图4、代理5、简单实例 Qt 模型视图(一):概述 ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方法。模型存储数据&#xff0c;视图组件显示模型中的数据&#xff0c;在视图组件里修改的数据会被自动…

MySQL练手题--体育馆的人流量(困难)

一、准备工作 Create table If Not Exists Stadium (id int, visit_date DATE NULL, people int); Truncate table Stadium; insert into Stadium (id, visit_date, people) values (1, 2017-01-01, 10); insert into Stadium (id, visit_date, people) values (2, 2017-01-02…

C++调用C# DLL之踩坑记录

C是非托管代码&#xff0c;C#则是托管代码&#xff0c;无法直接调用 CLR的介绍见CLR简介 MSDN提到了两种非托管-托管的交互技术&#xff1a;CLR Interop和COM Interop 后者要将C# 类库注册为COM组件&#xff0c;本文只探讨CLR&#xff0c;要通过C CLR写中间层代码 方式一&…

软件测试技术之 GPU 单元测试是什么!

1 背景 测试是开发的一个非常重要的方面&#xff0c;可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题&#xff0c;但较差的测试往往总是导致故障和停机。 单元测试用于测试各个代码组件&#xff0c;并确保代码按照预期的方式工作。单…

Cesium 绘制可编辑点

Cesium Point点 实现可编辑的pointEntity 实体 文章目录 Cesium Point点前言一、使用步骤二、使用方法二、具体实现1. 开始绘制2.绘制事件监听三、 完整代码前言 支持 鼠标按下 拖动修改点,释放修改完成。 一、使用步骤 1、点击 按钮 开始 绘制,单击地图 绘制完成 2、编辑…

java(3)数组的定义与使用

目录 1.前言 2.正文 2.1数组的概念 2.2数组的创建与初始化 2.2.1数组的创建 2.2.1数组的静态初始化 2.2.2数组的动态初始化 2.3数组是引用类型 2.3.1引用类型与基本类型区别 2.3.2认识NULL 2.4二维数组 2.5数组的基本运用 2.5.1数组的遍历 2.5.2数组转字符串 2.…

C#学习笔记(三)Visual Studio安装与使用

博主刚开始接触C#&#xff0c;本系列为学习记录&#xff0c;如有错误欢迎各位大佬指正&#xff01;期待互相交流&#xff01; 上一篇文章中安装了Visual Studio Code来编写调试C#程序&#xff0c;但是博主的目标是编写带窗口的应用程序&#xff0c;了解之后发现需要安装Visual …

基于SpringBoot+定时任务实现地图上绘制车辆实时运动轨迹图

目录 1. 项目结构 2. Maven依赖配置 (pom.xml) 3. 实现后端服务 4. 配置文件 (application.properties) 5. 启动项目 6. 访问页面 实现基于北斗卫星的车辆定位和轨迹图的Maven工程&#xff08;使用模拟数据&#xff09;&#xff0c;我们将使用以下技术&#xff1a; Spri…