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

2024-05-03 18:04

本文主要是介绍基于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文库

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

这篇关于基于STM32的最小系统电路设计(STM32F103C8T6为例)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

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

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

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

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

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方