基于STM32的最小系统电路设计(STM32F103C8T6为例)

前言:本篇博客为嵌入式硬件领域的文章,对 STM32 的最小系统电路设计进行教学。本篇博客以嘉立创 EDA(标准版)进行绘制 STM32F103C8T6 的最小系统电路 PCB 板,STM32 的最小系统通常包括:微控制器、时钟电路、电源电路、复位电路以及程序下载端口。本篇博客对 STM32F103C8T6 的最小系统进行介绍并强调绘制 PCB 过程中的注意事项!(PCB绘制图见篇末)

最小系统电路:

PCB绘图:

 

一、最小系统电路概述

最小系统电路通常指的是能够维持一个微控制器(MCU)的电路,包括以下几个基本部分:

1、微控制器(MCU): 最小系统电路的核心,负责处理数据和运行程序;

2、时钟电路: 提供MCU运行所需的时钟信号,通常包括晶体振荡器和相关的电容;

3、电源: 为MCU和其他电路提供稳定的电源。可能包括电压调节器、滤波电容等;

4、复位电路: 确保MCU在上电或需要时能够正确地启动和复位;

5、程序下载端口: 允许程序员将代码烧录到MCU中,并在开发过程中进行调试。这通常包括JTAG、SWD、ISP等接口;

这个最小系统电路是构建更复杂系统的基础,可以根据具体的应用需求进行扩展和修改。在设计时,需要考虑MCU的规格、功耗、工作电压、接口需求等因素,以确保系统的稳定运行。

二、最小系统电路设计

2.1 微控制器(MCU)

微控制器(Microcontroller,简称MCU)是一种集成电路,它集成了中央处理单元(CPU)、内存、输入/输出(I/O)接口和部分外设功能,用于控制电子设备的一个或多个功能。本篇博客的最小系统板使用 STM32F103C8T6 作为 MCU 进行操作,STM32F103C8T6拥有非常多的外设功能,包括:GPIO、UART、USB、SPI、I2C以及CAN等,可以制造出各种样式的电子产品。

微控制器电路中的去耦电容(作者是拆分下来画的),如下图所示:

去耦电容核心作用是来滤除杂波的,保持引脚电压的稳定。这些电容也尽量离芯片相关引脚近一点。分布在芯片四周即可。

2.2 时钟电路

STM32 最小系统板的时钟电路又称为 “晶振电路”。晶振电路,全称为晶体振荡电路,是电子设备中用于产生稳定、准确的频率信号的电路。晶振电路广泛应用于各种电子产品中,如计算机、手机、通信设备等,其主要作用是提供精确的时间基准和稳定的系统时钟。

时钟电路(晶振电路)用来给芯片提供时钟信号,原理图如下:

PCB绘制需要注意的点:

1、画板时晶振尽量离芯片近一点;
2、晶振底部尽量不要穿过其他支路,防止信号串扰;
3、不同型号的晶振可能需要不同的电路设计,根据自己使用的晶振型号设计;

2.3 电源

该STM32最小系统板上的电源电路使用了AMS1117-3.3V模块,属于典型的降压电源电路。将输入的 5V 电压进行降压,最终输出需要使用的 3.3V 电压。

电源电路中使用的两种不同的电容?

(1)、 输入滤波电容的作用:

输入电压,当接入电源,其幅值是从零起始的,波动非常大,加入足够容量的电容进行滤波后,因电容的充放电效应,该脉动直流变成纹波不大的直流电,这是输入滤波的作用。

(2)、输出滤波电容的作用:

稳压电路的工作过程需要从输出采样,然后根据其反馈值调节输出以达稳压的目的。如果此时没有输出滤波电容,只要因负载变化带来的电压波动频率恰好与稳压电路的调节速率差不多就会产生振荡效应,导致输出失控,所以稳压输出也必须加滤波电容,而且增加滤波电容也可以进一步增加稳压输出的稳定性。

★大电容和小电容并联的作用:

至于与大容量电解电容并联的小电容,其作用在于旁路频率较高的波动电压,因为铝电解电容的制造工艺导致其具有较大的ESL(等效电感),无法滤除高频成份,故需加个小电容。

2.4 复位电路

STM32 有三种复位方式:电源复位、系统复位和后备域复位;

电源复位时,当RESET引脚被拉低(KEY1被按下),产生外部复位,并产生复位脉冲,从而使系统复位。

2.5 程序下载端口

程序下载电路包括:BOOT电路和程序下载接口

★BOOT电路

启动方式BOOT0BOOT1
从主闪存存储器启动0x
从系统存储器启动10
从内置SRAM启动11

程序下载接口,如下图所示(型号:HEADER_1*4P):

三、启动方式

一般来说就是指我们下好程序后,重启芯片时,SYSCLK 的第4个上升沿,BOOT 引脚的值将被锁存。用户可以通过设置 BOOT1 和 BOOT0 引脚的状态,来选择在复位后的启动模式。

3.1 主闪存存储器启动

1、第一种方式(boot0 = 0):Flash memory启动方式

启动地址:0x08000000 是 STM32 内置的 Flash,一般我们使用 JTAG 或者 SWD 模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。基本上都是采用这种模式。

3.2 系统存储器启动

2、第二种方式(boot0 = 1;boot1 = 0):System memory启动方式

启动地址:0x1FFF0000从系统存储器启动,这种模式启动的程序功能是由厂家设置的。一般来说,这种启动方式用的比较少。系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader 中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:

1、将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
2、最后在BootLoader的帮助下,通过串口下载程序到Flash中
3、程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动可以看到, 利用串口下载程序还是比较的麻烦,需要跳帽跳来跳去的,非常的不注重用户体验。

3.3 内置SRAM启动

3、第三种方式(boot0 = 1;boot1 = 1):SRAM启动方式

启动地址:0x20000000 内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了代码中一个小小的 地方,然后就需要重新擦除整个Flash,比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,在将程序下载到SRAM中。

四、PCB绘制的注意事项

以下内容是作者自己总结的需要注意点,后续如果还有,作者还会继续补充到这里。

1.PCB的边缘层是机械层。
2.要注意走电源的线要画的尽量粗一些。(容易被忽略的点)
3.PCB覆铜的过程中,没有导线的地方都是空白的,只有有导线连接的地方会被附上铜。
4.器件在画PCB的时,要尽可能的短一些,减少环境噪声等干扰(带来相应的问题是器件之间存在些许的干扰)。
5.可以使用局部覆铜,可以增强散热。
6.原理图空脚不能只空着,要么接地,要么就标上×的引脚符号。
7.有USB的情况下,要尽量在前面加上一个保险丝。(作用:起静电放电防护。)
8.PCB中GND引脚可以不接,最后直接对地覆铜即可。
9.局部铺铜的话,不用选去除死铜那个选项,直接快捷键P+R即可。
10.PCB要测距离的话,就按ctrl+m
11.在PCB画图的工程中,连线尽量不要走直角,应该选择大90°的角度进行连线,从PCB加工生产的角度来说,最好不要直角走线,而是采用弧形走线或钝角走线(避免电磁影响、频率影响、腐蚀度影响、美观性影响)

五、PCB绘制图分享

绘制图地址: STM32F103C8T6的PCB绘制图资源资源-CSDN文库

如果积分不够的朋友,点波关注评论区留下邮箱作者无偿提供源码和后续问题解答。求求啦关注一波吧 !!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python从0开始学习

目录 前言 1、print函数 2、input函数 3、保留字和标识符 总结 前言 本篇文章我们开辟一个新的学习模块:python。python是一个十分简洁实用的编程语言,我们将从0开始学习python 1、print函数 print(*args, sep , end\n, fileNone, flushFalse) pytho…

ESP-01/01S 烧录固件

目录 一、ESP-01 与 ESP-01S 的区别二、ESP-01 与 ESP-01S 烧录 AT 固件1、模块接线a、管脚功能定义b、模组启动模式c、模块接线 2、下载 AT 固件3、下载固件烧录工具4、固件烧录步骤5、模块快速烧录 AT 固件 三、ESP-01 与 ESP-01S 发送 AT 指令1、模块接线2、上电信息3、发送…

硅片和SOI哪个研究方向更好?

知识星球(星球名:芯片制造与封测社区,星球号:63559049)里的学员问:我研一将要结束,即将进入课题组。我们课题组方向有硅片和soi两种方向,这两种方向该如何选择呢? 硅片与…

PHP的类型比较运算符有哪些

在PHP中,类型比较运算符主要用于检查变量的类型或比较两个变量是否属于同一类型。以下是PHP中常用的类型比较运算符: (恒等运算符):当且仅当两个变量具有相同的类型和相同的值时,返回true。 $a 5; $b &qu…

【数值优化基础 (自动驾驶)】—— 知识点(方便回顾)

笔记&#xff1a;机器人学中的数值优化基础 数值优化简介 1.优化问题 min f(x) s.t.g(x)<0 h(x)0 假设&#xff1a;&#xff08;1&#xff09;目标函数有下界&#xff08;2&#xff09;下水平集不能无界 2.凸包问题&#xff1a;给定点集&#xff0c;求构成凸包的点 3.常见…

MYSQL三个日志

undo log(回滚日志)&#xff1a;是 Innodb 存储引擎层生成的日志&#xff0c;实现了事务中的原子性&#xff0c;主要用于事务回滚和 MVCC。 redo log(重做日志)&#xff1a;是 Innodb 存储引擎层生成的日志&#xff0c;实现了事务中的持久性&#xff0c;主要用于掉电等故障恢复…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 &#xff1f;二、编写Shell脚本1. 基本规则2. shell 变量&#xff08;1&#xff09;创建变量&#xff08;2&#xff09;引用变量&#xff08;3&#xff09;删除变量&#xff08;4&#xff09;从键盘读取变量&#xff08;5&#xff09;特殊变…

Vulnhub-DIGITALWORLD.LOCAL: VENGEANCE渗透

文章目录 前言1、靶机ip配置2、渗透目标3、渗透概括 开始实战一、信息获取二、smb下载线索三、制作字典四、爆破压缩包密码五、线索分析六、提权&#xff01;&#xff01;&#xff01; Vulnhub靶机&#xff1a;DIGITALWORLD.LOCAL: VENGEANCE ( digitalworld.local: VENGEANCE …

【linux】初步认识文件系统

初步认识文件系统 前置知识的简单了解简单回顾C语言的文件操作stdin&stdout&stderr 系统文件IOopen函数的返回值文件描述符fd打开文件背后的操作文件描述符的分配规则 前置知识的简单了解 文件包括了文件内容和文件属性两个部分(文件内容顾名思义就是文件里面的数据等…

算法===二分查找

文章目录 概要定义代码Python小结 概要 二分&#xff0c;很常用&#xff0c;不管是日常生活&#xff0c;还是工作&#xff0c;学习&#xff1b;哪怕是使用计算机查下哪块占了硬盘空间&#xff0c;都用的上。 二分&#xff0c;太常用了。比如&#xff0c;我的电脑某一个盘慢了&…

tomcat启动闪退问题解决方法

文章目录 Tomcat启动闪退的常见问题及解决方法Tomcat是什么启动闪退的常见问题及解决方法1. 内存不足问题描述&#xff1a;案例分析&#xff1a;解决方法&#xff1a; 2. 端口冲突问题描述&#xff1a;解决方法&#xff1a; 3. 日志错误问题描述&#xff1a;解决方法&#xff1…

冰蓄冷系统基础知识

冰蓄冷是将水制成冰储存冷量&#xff0c;它是潜热蓄冷的一种方式。当压力保持不变时&#xff0c;物质在相变过程中保持恒定温度并吸收或释放热量&#xff0c;通常把这个温度称为相变温度(即溶解温度或凝固温度)&#xff0c;把吸收或释放的热量称相变潜热。在常压下&#xff0c;…

基于Python的LSTM网络实现单特征预测回归任务(TensorFlow)

目录 一、数据集 二、任务目标 三、代码实现 1、从本地路径中读取数据文件 2、数据归一化 3、创建配置类&#xff0c;将LSTM的各个超参数声明为变量&#xff0c;便于后续使用 4、创建时间序列数据 5、划分数据集 6、定义LSTM网络 &#xff08;1&#xff09;创建顺序模…

一、初识VUE

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 Vue Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c…

MySQL常见问题解决和自动化安装脚本

常见问题 MySQL密码正确但无法登录的情况 这种情况一般都是因为缓存&#xff0c;使用mysql -u root -p123456直到成功登陆为止&#xff0c;并且进入之后重新修改密码&#xff0c;多次重复修改密码的命令并且再一次清除缓存后退出。 ALTER USER rootlocalhost IDENTIFIED WIT…

JRE与JDK:内在关联与核心区别探析

标题&#xff1a;JRE与JDK&#xff1a;内在关联与核心区别探析 引言 在软件开发领域&#xff0c;Java以其独特的跨平台特性和丰富的开源生态赢得了广泛的赞誉和应用。而在Java技术栈中&#xff0c;Java Runtime Environment (JRE) 和 Java Development Kit (JDK) 是两个不可或…

C++之operator

1、operator operator是C关键字之一, 称为重载运算符&#xff08;也称“重载操作符”&#xff09;。所谓重载&#xff0c;就是赋予新的含义。函数重载&#xff08;Function Overloading&#xff09;可以让一个函数名有多种功能&#xff0c;在不同情况下进行不同的操作。运算符重…

基于Unity+Vue通信交互的WebGL项目实践

unity-webgl 是无法直接向vue项目进行通信的&#xff0c;需要一个中间者 jslib 文件 jslib当作中间者&#xff0c;unity与它通信&#xff0c;前端也与它通信&#xff0c;在此基础上三者之间进行了通信对接 看过很多例子&#xff1a;介绍的都不是很详细&#xff0c;不如自己写&…

【MATLAB源码-第199期】基于MATLAB的深度学习(CNN)数字、模拟调制识别仿真,输出识别率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 基于深度学习的调制识别系统利用复杂的数学模型和算法来识别和分类从不同来源接收到的无线信号的调制类型。这种技术的应用广泛&#xff0c;特别是在无线通信、电子战、频谱监测和认知无线电等领域中具有重要价值。调制识别系…

算法导论 总结索引 | 第三部分 第十二章:二叉搜索树

1、搜索树数据结构 支持 许多动态集合操作&#xff0c;包括 SEARCH、MINIMUM、MAXIMUM、PREDECESSOR、SUCCESSOR、INSERT 和 DELETE 等。使用搜索树 既可以作为一个字典 又可以作为一个优先队列 2、二叉搜索树上的基本操作 所花费的时间 与这棵树的高度成正比。对于有n个结点的…