硬件作品3----STM32F103RCT6最小系统板MCU配置

news2025/1/23 5:08:04

参考文章:对stm32F103RCT6原理图解析(详细)-CSDN博客

        本想绘制稍微复杂一些的电路,但是出现很多问题,因此先绘制一块最小系统板进行原理、绘制方法的验证。

设计难度:★

适合人群:初学者

一、原理说明

1. 主控芯片及GPIO拓展电路

        主控采用STM32F103RCT6,STM32与STM8系列芯片型号各字母代表不同的含义。

        数据手册:High-density performance line ARM®-based 32-bit MCU with 256 to 512KB Flash, USB, CAN, 11 timers, 3 ADCs, 13 communication interfaces

        这里的电路原理图中只有电源3V3、晶振引脚、DP下载引脚、USB数据引脚、BOOT引脚使用,故只给定这些网络标签,其余GPIO引脚均引出至排针。

        芯片关于电源的引脚有很多,VDD VDD1 VDD2 VDD3均为芯片正供电端, 一般为3.3V。VSS VSS1 VSS2 VSS3均为芯片接地端。数据手册对供电电压有介绍,纽扣电池为RTC供电,与32kHz晶振搭配使用。

        实际电路设计如下图,未接纽扣电池,但是将VBAT引脚单独引到排针。

2. 复位引脚NRST

        NRST引脚是异步复位引脚,NRST置为低电平时MCU复位,重设所有内部寄存器及片内SRAM;当NRST从低电平变为高电平时,PC指针(程序计数器)从0开始。

上电复位

        上电复位是通过外部复位电路中的电容充放电来实现的,也就是通过电容给RST端输入一个短暂的高电平,此高电平随着Vcc对电容充电时间的增加而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。为保证单片机能可靠地复位,必须使RST引脚至少保持两个机器周期高电平,CPU 在第2个机器周期内执行内部复位操作,以后每一个机器周期重复一次, 直至RST端电平变低。

        单片机上电瞬间,由于电容的“隔直通交”,电容支路通过电流,NRST接地被置为低电平;电容充电需要一定时间,充电完成,NRST引脚被置为高电平,完成上电复位操作。

        上电复位是自动发生的,不需要外部干预,保证了每次电源开启时单片机都能从初始状态开始运行。

按键复位

        按键复位是指通过外部按钮手动触发单片机的复位过程。用户按下复位按钮时,会向单片机提供一个低电平信号,使单片机的寄存器和状态位重置到初始状态。

        按键复位通常通过一个简单的按钮开关实现,该开关连接到单片机的复位引脚。当按钮被按下时,复位引脚接收到低电平信号,触发复位。为了确保稳定性,通常会在按钮和复位引脚之间加入去抖动电路,以防止由于接触不良或操作失误导致的多次复位。

        按键复位提供了用户干预的可能性,允许在不关闭电源情况下重置单片机,适用于需要用户控制复位过程的场合。

        复位按键电路如下。

3. 晶振配置

STM32 外部晶振电路设计和匹配_stm32晶振电路-CSDN博客

        STM32系列有内部时钟源(依靠芯片内部的RC振荡器,内部高速时钟HSI,精度不高)与外部时钟源HSE。高精度定时的场合使用内部晶振有误差,需要使用外部晶振时钟(一般选用8MHz外部晶振),接在芯片OSC_IN与OSC_OUT引脚之间的外部晶振需要外接负载电容到地。一般取负载电容CL1=CL2,两个负载电容与晶振Q构成三点式电容振荡器。

        负载电容与晶振的参数CL(Load Capacitance,数据手册可查)匹配,晶振电容CL=20pF,电路板走线上的寄生电容(约为3~5pF)与芯片输入端的等效电容(STM32F103晶振输入电容为5pF)约为Cs=10pF。计算公式为CL-Cs=(CL1*CL2)/(CL1+CL2),取CL1=CL2,故匹配电容CL1=CL2=2*(CL-Cs)=2*(20pF-10pF)=20pF。

        晶振部分电路如下,这里选用4P引脚的贴片电容,32.768kHz的低速晶振与8MHz的高速晶振。其中,8MHz为外部晶振,32kHz晶振作为外部低速晶振最终到达RTC,纽扣电池为芯片RTC(real time clock,实时时钟)供电进而记录系统时间,若不需要此功能可以去掉纽扣电池与32kHz低速晶振。

4. 指示灯

        LED1为电源供电指示灯,LED2为PA0引脚高低电平指示灯。PA0=高电平,LED2两端无压差,灯不亮;PA0=低电平,LED2两端有压差,灯亮。

5. TYPE-C烧录接口与电源降压

        这里选用USB2.0协议的TYPE-C接口,根据其数据手册,原理图较为简单如下。但是由于TYPE-C接口从电脑端获得的电压为5V,直接给芯片工作容易烧坏芯片,故需要DC-DC电源转换。

        降压芯片选用AMS1117-3.3(低压差线性稳压器LDO),根据数据手册的固定电压输出的典型电路,将USB的5V电压转换为3.3V电压为芯片供电。C1 C2 C4 C5为滤波电容,一般为10uF与100nF(大电容与小电容)的组合,使得输出电压更稳定。

6. 烧录接口ST/DP

        GND与3V3引脚直接与芯片相连,SWDIO SWCLK引脚需要与芯片数据手册的引脚对应。

7. BOOT引脚

        关于BOOT引脚的配置,决定了芯片的启动模式。

STM32启动BOOT0 BOOT1设置方法 - zgc261 - 博客园

        总结来说,0X配置常见,从FLASH启动,一般程序下载模式;10配置通过出厂不可修改的boot loader下载程序,从ROM启动,使用麻烦,不常用;11模式从SRAM启动,程序调试用。

        为了能够实现三种模式,选用排针分别接3V3 BOOT GND引脚,用跳线帽连接。这里选择接两个保护电阻,防止配置错误直接烧坏引脚。

二、原理图与PCB绘制

        可开源,私信即可

三、调试过程

 电路已调试成功。烧写PA0端口的测试代码,能实现LED的闪烁。

		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);		
		GPIO_SetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);

随意选择两个GPIO端口,进行OLED显示测试,能够正常工作。

		GPIO_ResetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);		
		GPIO_SetBits(GPIOA,GPIO_Pin_0);
		Delay_ms(500);

存在问题:

BOOT0 BOOT1引脚均处于悬空状态下,程序能够正常烧录并运行,后查阅数据手册得知默认状态为从0x0800 0000H即FLASH烧录,故能正常工作,使用跳线帽将两个BOOT引脚接到高电平,程序能够正常烧录但无法正常运行。

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

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

相关文章

SparkSQL数据源与数据存储综合实践

文章目录 1. 打开项目2. 查看数据集2.1 查看JSON格式数据2.2 查看CSV格式数据2.3 查看TXT格式数据 3. 添加单元测试依赖4. 创建数据加载与保存对象4.1 创建Spark会话对象4.2 创建加载JSON数据方法4.3 创建加载CSV数据方法4.4 创建加载Text数据方法4.5 创建加载JSON数据扩展方法…

【回忆迷宫——处理方法+DFS】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 250; int g[N][N]; bool vis[N][N]; int dx[4] {0, 0, -1, 1}; int dy[4] {-1, 1, 0, 0}; int nx 999, ny 999, mx, my; int x 101, y 101; //0墙 (1空地 2远方) bool jud(int x, int y) {if…

项目中使用的是 FastJSON(com.alibaba:fastjson)JSON库

从你的 pom.xml 文件中可以看到&#xff0c;项目明确依赖了以下 JSON 库&#xff1a; FastJSON&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version> </depende…

高效安全文件传输新选择!群晖NAS如何实现无公网IP下的SFTP远程连接

文章目录 前言1. 开启群晖SFTP连接2. 群晖安装Cpolar工具3. 创建SFTP公网地址4. 群晖SFTP远程连接5. 固定SFTP公网地址6. SFTP固定地址连接 前言 随着远程办公和数据共享成为新常态&#xff0c;如何高效且安全地管理和传输文件成为了许多人的痛点。如果你正在寻找一个解决方案…

Windows第一次上手鸿蒙周边

端云一体所需装备 很重要&#xff1a;C/D/E/F盘要有二三十G的可用空间&#xff01; 硬件&#xff1a;华为鸿蒙实验箱&#xff08;基础版&#xff09;》飞机板核心板环境监测板 软件&#xff1a;Visual Studio Code写代码 终端编译 Hiburn烧录到开发板 MobaXterm &#xff08…

使用AI生成金融时间序列数据:解决股市场的数据稀缺问题并提升信噪比

“GENERATIVE MODELS FOR FINANCIAL TIME SERIES DATA: ENHANCING SIGNAL-TO-NOISE RATIO AND ADDRESSING DATA SCARCITY IN A-SHARE MARKET” 论文地址&#xff1a;https://arxiv.org/pdf/2501.00063 摘要 金融领域面临的数据稀缺与低信噪比问题&#xff0c;限制了深度学习在…

【Qt】05-菜单栏

做菜单 前言一、创建文件二、菜单栏 QMenuBar2.1 示例代码2.2 运行结果 三、工具栏 QToolBar3.1 运行代码3.2 结果分析 四、状态栏 QStatusBar4.1 运行代码4.2 运行结果 五、文本编辑框 QTextEdit5.1 运行代码5.2 运行结果 六、浮动窗口 addDockWidget6.1 运行代码6.2 运行结果…

细说STM32F407单片机电源低功耗StandbyMode待机模式及应用示例

目录 一、待机模式基础知识 1、进入待机模式 2、待机模式的状态 3、退出待机模式 二、待机模式应用示例 1、示例功能和CubeMX项目设置 &#xff08;1&#xff09; 时钟 &#xff08;2&#xff09; DEBUG、LED1、KeyRight、USART6、CodeGenerator &#xff08;3&#x…

中国综合算力指数(2024年)报告汇总PDF洞察(附原数据表)

原文链接&#xff1a; https://tecdat.cn/?p39061 在全球算力因数字化技术发展而竞争加剧&#xff0c;我国积极推进算力发展并将综合算力作为数字经济核心驱动力的背景下&#xff0c;该报告对我国综合算力进行研究。 中国算力大会发布的《中国综合算力指数&#xff08;2024年…

w-form-select.vue(自定义下拉框组件)(与后端字段直接相关性)

文章目录 1、w-form-select.vue 组件中每个属性的含义2、实例3、源代码 1、w-form-select.vue 组件中每个属性的含义 好的&#xff0c;我们来详细解释 w-form-select.vue 组件中每个属性的含义&#xff0c;并用表格列出它们是否与后端字段直接相关&#xff1a; 属性解释表格&…

前沿技术趋势洞察:2024年技术的崭新篇章与未来走向!

引言 时光飞逝&#xff0c;2024年已经来临&#xff0c;回顾过去一年&#xff0c;科技的迅猛进步简直让人目不暇接。 在人工智能&#xff08;AI&#xff09;越来越强大的今天&#xff0c;我们不再停留在幻想阶段&#xff0c;量子计算的雏形开始展示它的无穷潜力&#xff0c;Web …

消息队列篇--原理篇--RabbmitMQ(Exchange,消息转换器、docker部署,绑定和确认机制等)

RabbitMQ是一个基于AMQP协议的消息队列系统&#xff0c;支持多种消息传递模式&#xff0c;包括点对点&#xff08;P2P&#xff09;、发布/订阅&#xff08;Pub/Sub&#xff09;和路由模式。RabbitMQ 的设计目标是提供高可用性、可扩展性和可靠性&#xff0c;适用于企业级应用集…

C++入门 详细版

欢迎来到干货小仓库&#xff01;&#xff01; 一分耕耘一分收获&#xff0c;离自己的目标越来越近。 passion&#xff01;passion&#xff01;&#xff01;passion&#xff01;&#xff01;&#xff01; 1.命名空间 由于C语言无法避免名字或者函数重复等问题&#xff0c;当有多…

一文大白话讲清楚webpack基本使用——9——预加载之prefetch和preload以及webpackChunkName的使用

文章目录 一文大白话讲清楚webpack基本使用——9——预加载之prefetch和preload1. 建议按文章顺序从头看&#xff0c;一看到底&#xff0c;豁然开朗2. preload和prefetch的区别2. prefetch的使用3. preload的使用4. webpackChunkName 一文大白话讲清楚webpack基本使用——9——…

Android AutoMotive --CarService

1、AAOS概述 Android AutoMotive OS是谷歌针对车机使用场景打造的操作系统&#xff0c;它是基于现有Android系统的基础上增加了新特性&#xff0c;最主要的就是增加了CarService&#xff08;汽车服务&#xff09;模块。我们很容易把Android AutoMotive和Android Auto搞混&…

(三)线性代数之二阶和三阶行列式详解

在前端开发中&#xff0c;尤其是在WebGL、图形渲染、或是与地图、模型计算相关的应用场景里&#xff0c;行列式的概念常常在计算变换矩阵、进行坐标变换或进行图形学算法时被使用。理解二阶和三阶行列式对于理解矩阵运算、旋转、平移等操作至关重要。下面&#xff0c;我将结合具…

Linux Bash 中使用重定向运算符的 5 种方法

注&#xff1a;机翻&#xff0c;未校。 Five ways to use redirect operators in Bash Posted: January 22, 2021 | by Damon Garn Redirect operators are a basic but essential part of working at the Bash command line. See how to safely redirect input and output t…

蓝桥杯算法日常|c\c++常用竞赛函数总结备用

一、字符处理相关函数 大小写判断函数 islower和isupper&#xff1a;是C标准库中的字符分类函数&#xff0c;用于检查一个字符是否为小写字母或大写字母&#xff0c;需包含头文件cctype.h&#xff08;也可用万能头文件包含&#xff09;。返回布尔类型值。例如&#xff1a; #…

MySQL(4)多表查询

引言&#xff1a;为什么需要多表的查询&#xff1f; A&#xff1a;提高效率&#xff0c;多线进行。 高内聚、低耦合。 一、多表查询的条件 1、错误的多表查询&#xff1a; SELECT employee_id,department_name FROM employees,departments; SELECT employee_id,department…

‘list‘ object has no attribute ‘mul‘

原来运行得好好的&#xff0c;突然出现错误&#xff1a;list object has no attribute mul &#xff0c;更换一个输入路径&#xff0c;又没问题&#xff0c;改一个路径&#xff0c;还是出现错误&#xff0c;很奇怪&#xff0c;后来又没有问题&#xff0c;记录一下。 参考这文…