对stm32F103RCT6原理图解析(详细)

news2024/11/22 11:45:54

最近想了解一下原理图为什么这样设计,又发现网上虽然有相关的解析,但是不全面,所以唉还是自己动手,丰衣足食吧。

MCU部分

核心芯片STM32F103RCT6

(8条消息) stm32命名规则_BachelorTse的博客-CSDN博客

这里有芯片相关的命名规则

左下角供电部分:

VDD:D=device 表示器件的意思, 即器件内部的工作电压;

 VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压
VEE:负电压供电;场效应管的源极(S)
VBAT:当使用电池或其他电源连接到VBAT脚上时,当VDD 断电时,可以保存备份寄存器的内容和维持RTC的功能。如果应用中没有使用外部电池,VBAT引脚应接到VDD引脚上。

 参考:(8条消息) 电源符号:VCC、VDD、VEE、VSS、VBAT_vdd在电路中代表什么_桂花很香,旭很美的博客-CSDN博客

一、LED模块

 所以如果我们想要让LED灯亮起,首先要经过连接在LED上的二极管,所以我们要让该二极管工作,从输入源里输入一个低电平,即可让二极管的负极一端引脚工作,相反输入高电平则二极管的负极一端不会产生任何作用!

二、复位引脚NRST原理图

外围电路          引脚连接处

STM32F的NRST是异步复位脚。 复位就是让单片机重启,使其恢复到一个缺省的状态。当NRST输入低电平的时候,MCU处于复位状态,重设所有的内部寄存器,及片内几十KB的SRAM。 当NRST从低电平变高时,PC指针从0开始。 但是复位的时候不会将STM32F片内RTC的寄存器以及后备存储器重置,因为它们是用电池通过专门的VBAT脚供电。 STM32中的NRST有施密特功能。大概在输入电压低于1.V的时候将芯片复位。

上电的瞬间,电容C12两端电压可以认为是0,刚上电的时候电流会通过R12和C12到地,为C20充电RESET会输出低电平,stm32处于复位状态,VCC3.3通过电阻R3给电容充电,当电容C12的电压升高到0.8V以上,stm32退出复位状态进入运行状态

可以参考这里:  STM32 复位电路设计

三、晶振引脚原理图

8Mhz晶振

高速晶振 8MHz 作为系统时钟的来源,可以由芯片内部的 HSI RC 时钟源或芯片外部的 独立时钟源 提供。
在STM32最小系统板上,8M晶振是用于提供系统时钟的外部晶体振荡电路之一。

高速晶振 8MHz 作为系统时钟的来源,可以由芯片内部的 HSI RC 时钟源或芯片外部的 独立时钟源 提供。由于芯片内部的 HSI RC 时钟源不够精准,我们通常采用外部独立时钟源来来为芯片提供系统时钟。
具体计算方法如下:

晶振频率 = 8MHz

晶振周期 = 1 / 晶振频率 = 0.125us

如果需要一个1秒的周期,需要多少个晶振周期?

1s / 0.125us = 8000000个周期

因此,如果使用8MHz晶振,系统需要运行8000000个晶振周期才能完成一个1秒的周期。

32.768K晶振

低速晶振 32.768kHz 连接LSE(low-speed external clock signal),最终到达RTC(real-time clock)。

RTC 是一个独立的定时器 1 。从 real-time clock(实时时钟)四字可以理解,RTC可以为系统实时记录当前系统时间和日期,不管芯片有没有掉电。如果想要使用 RTC 实时记录系统时间,芯片需要接入额外备用电源,通常为纽扣电池。这样以来,RTC 在芯片掉电后,可以由电池供电继续运行 2 。

对于掉电后不需要记录系统时间的电路板,我们将低速晶振 32.768kHz 舍去,节约板子空间,精简电路设计。 

2的15次方正好等于32768,反过来讲,如果要把32.768K的时钟频率经过15次分频的话,得到的频率正好是1Hz。

晶振旁的俩个电容到底有啥作用
主要作用是平衡晶振引脚的电感的。因为晶振在高频工作时有寄生电感,为了平衡电感,起到谐振的作用。所以要用两个小电容来平衡电感。一般电容的选20pf–30pf的就可以了。具体的大小请参看晶振厂家提供的数据手册。
芯片晶振引脚的内部通常是一个反相器,芯片晶振的两个引脚之间还需要连接一个电阻,使反相器在振荡初始时处与线性状态,但这个电阻一般集成在芯片的内部,反相器就好像一个有很大增益的放大器,为了方便起振,晶振连接在芯片晶振引脚的输入和输出之间,等效为一个并联谐振回路, 振荡的频率就是石英晶振的并联谐振频率。

晶振旁边的两个电容需要接地,,其实就是电容三点式电路的分压电容,接地点就是分压点,以分压点为参考点,振荡引脚的输入和输出是反相的,但从晶振两端来看,形成一个正反馈来保证电路能够持续振荡。

芯片设计的时候,其实这两个电容就已经形成了,一般是两个的容量相等,但容量比较小,不一定适合很宽的振荡频率范围,所以需要外接两个负载电容。

晶振旁边的负载电容怎么选择
负载电容需要根据晶振的规格来选择,晶振的规格书都会标示出负载电容的大小,一般都是几pF到几十pF。

假如晶振规格要求用20pF的负载电容,因为两个负载电容是串联的,理论上需要选择两个40pF的负载电容。

实际上MCU内部和PCB的线路上都会有一定的寄生电容,晶振的负载电容=[(C1*C2)/(C1+C2)]+Cic+△C,Cic+△C 为MCU内部电容和PCB线路的寄生电容,一般是35pF,所以,在实际应用中会考虑用30pF36pF的负载电容。

晶振和负载电容布线注意事项

为了让晶振能够可靠、稳定的起振,我们在布线时,需要让晶振和负载电容尽量的靠近芯片的晶振引脚。

在这里插入图片描述

四、电源转换电路

 我们可以发现电源转换电路是由一个稳压芯片AMS1117-3.3V、两个电解电容和两个贴片电容组成。

   设计原因:STM32芯片的工作电压为2.0~3.6V,我们一般取3.3V。而通过USB接口输出的电源为5V,为防止STM32芯片损坏,需要我们通过该电源转换电路,把5V的输入电压降低到3.3V工作电压。

   电容作用:C4和C5是输出滤波电容,作用是抑制自激振荡,如果不接这两个电容,通常线性稳压器的输出会是个振荡波形。C6和C7是输入电容,对于交流电压整流输入,它们的第一个作用是把单向脉动电压转换成直流电压,在本图中输入已经是+5V直流电源了,它们的作用就是防止断电后出现电压倒置,因此通常输入电容的容量应该大于输出电容。概括性地说,输出的电容的作用是把输出信号的干扰作为滤除。输入电容的作用就是把输入信号中的高频噪声作为滤除对象,把前级携带的高频杂波滤除。

五、SW接口

外围电路与芯片连接

探索者F4%20资料盘(A盘)/【正点原子】STM32F103最小系统板资料/8,STM32参考资料/8,STM32参考资料/STM32中文参考手册_V10.pdf

在这里面的

 有对这个接口详细的描述

 SWDIO,在芯片内部已经有上拉,但在电路板上必须再一次上拉(100k或者10k电阻)
SWCLK,在芯片内部已经有下拉,在电路板上没有特殊要求进一步下拉。

参考:(8条消息) STM32F407-学习STM32的SW与JTAG调试与下载电路的设计_stm32jtag接口电路图_Wallace Zhang的博客-CSDN博客

 (8条消息) stm32使用SWD烧录_stm32swd烧录_梦屿_千寻的博客-CSDN博客

六、BOOT0和BOOT1

外围电路与芯片相接引脚

BOOT决定的模式

 (8条消息) STM32---BOOT0和BOOT1_stm32boot0和boot1接线图_bit er的博客-CSDN博客

 这里原理比较复杂,如果想深入了解的话上面的链接有比较详细的介绍

七、LCD外围电路

外围电路与芯片引脚

 

 

       最小系统板原理图如下图,LCD与STM32接线如下。

八、串口一键下载电路(CH340)

 

 直接看这里就好,这个博主说的很清楚透彻了

以后有时间再回来补全细节。

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

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

相关文章

在Windows中,matplotlibcpp的使用

0 前言 本篇文章记录一个c库的使用:matplotlib-cpp,其作用是在c中调用python的matplotlib,实现绘图操作。 对于Windows环境下使用该库的文章,发现文章依然存在一些问题,总是存在报错不能解决,花费了较多的…

QT的TcpServer

Server服务器端 QT版本5.6.1 界面设计 工程文件&#xff1a; 添加 network 模块 头文件引入TcpServer类和TcpSocket&#xff1a;QTcpServer和QTcpSocket #include <QTcpServer> #include <QTcpSocket>创建server对象并实例化&#xff1a; /*h文件中*/QTcpServer…

Python根据预设txt生成“你画我猜”题目PPT(素拓活动小工具)

Python根据预设txt生成“你画我猜”题目PPT&#xff08;素拓活动小工具&#xff09; 场景来源 去年单位内部的一次素拓活动&#xff0c;分工负责策划设置其中的“你画我猜”环节&#xff0c;网络上搜集到题目文字后&#xff0c;想着如何快速做成对应一页一页的PPT。第一时间想…

观察者模式实战:解密最热门的设计模式之一

文章目录 前言一、什么是观察者模式二、Java实现观察者模式2.1 观察者接口2.2 具体观察者2.3 基础发布者2.4 具体发布者2.5 消息发送 三、Spring实现观察者模式3.1 定义事件类3.2 具体观察者3.3 具体发布者3.4 消息发送 总结 前言 随着系统的复杂度变高&#xff0c;我们就会采…

Google 发布 CodeGemma 7B,8K上下文,性能超CodeLlama 13B

CodeGemma简介 CodeGemma模型是谷歌的社区开放编程模型&#xff0c;专门针对代码领域进行优化。一系列功能强大的轻量级模型&#xff0c;能够执行多种编程任务&#xff0c;如中间代码填充、代码生成、自然语言理解、数学推理和指令遵循。CodeGemma模型是在大约500B个主要为英语…

【算法入门教育赛1D】环形密码 - 字符串 | C++题解与代码

题目链接&#xff1a;https://www.starrycoding.com/problem/161 题目描述 小 e e e有一个宝箱&#xff0c;这个宝箱有一个长度为 n n n的密码&#xff0c;但是这个密码校验器是一个环形&#xff0c;意思是只要密码从任意一位开始读&#xff08;读到最后一位回到第一位继续&a…

每日OJ题_贪心算法二⑤_力扣870. 优势洗牌(田忌赛马)

目录 力扣870. 优势洗牌&#xff08;田忌赛马&#xff09; 解析代码 力扣870. 优势洗牌&#xff08;田忌赛马&#xff09; 870. 优势洗牌 难度 中等 给定两个长度相等的数组 nums1 和 nums2&#xff0c;nums1 相对于 nums2 的优势可以用满足 nums1[i] > nums2[i] 的索引…

Redis - Zset 有序集合

前言 它保留了集合不能有重复成员的特点&#xff0c;但与集合不同的是&#xff0c;有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数&#xff08;score&#xff09;与之关联&#xff0c;有序集合中的元素是可以维护有序性的&#xff0c;但这个有序不是⽤下标作为排序依据⽽是…

笔记13-OSError: [Errno 24] Too many open files

文章目录 参考文献失败尝试系列查看发现&#xff0c;似乎是因为线程数有限制 修改配置先查查看 增加文件数限制&#xff0c;然后使用命令运行&#xff08;成功&#xff09; 参考文献 Linux 最大可以打开多少文件描述符&#xff1f; OSError: [Errno 24] Too many open files错…

Redis-单机安装

试图从官网注册不了我也不知道什么情况。 网盘自取吧&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1KERBQaH9gCT10AGt9z0_jg?pwdyjen 安装比较简单&#xff0c;照着敲就完了每一步都试过了&#xff0c;先单机安装&#xff0c;后面搭建集群。 1.将安装包放到/usr/…

一文带你了解MySQL的索引分类

文章目录 ☃️分类☃️演示图☃️思考☃️总结 欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开…

C++之set/map相关实现

看着上面的图片&#xff0c;你可能对set和map的多样变化产生疑惑&#xff0c;下面我们就来详细讲解他们的区别以及实现 一.set/map 首先&#xff0c;在这里我们要声明&#xff0c;如果你对二叉搜索树一点都不了解的话&#xff0c;建议你先去将搜索二叉树学会再来学习这里的内…

MFC 列表控件删除实例(源码下载)

1、本程序基于前期我的博客文章《MFC下拉菜单打钩图标存取实例&#xff08;源码下载) 》 2、程序功能选中列表控件某一项&#xff0c;删除按钮由禁止变为可用&#xff0c;点击删除按钮&#xff0c;选中的项将删除。 3、首先在主界面添加一个删除参数按钮。 4、在myDlg.cpp 文件…

Python语言零基础入门——文件

目录 一、文件的基本概念 1.文件 2.绝对路径与相对路径 3.打开文件的模式 二、文件的读取 三、文件的追加 四、文件的写入 五、with语句 六、csv文件 1.csv文件的读取 2.csv文件的写入 七、练习题&#xff1a;实现日记本 一、文件的基本概念 1.文件 文件是以计算…

win10禁止自动更新的终极方法

添加注册表值 1.运行&#xff0c;输入regedit 2.打开注册表编辑器依次进入以下路径“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings”。 3.在Settings项中&#xff0c;新建DWORD&#xff08;32位&#xff09;值(D)&#xff0c;重命名为以下命名“Fl…

python判断大图中包含小图并输出位置总结

python判断大图中包含小图并输出位置总结 没啥可说的&#xff0c;项目遇到了就直接上代码&#xff0c;可以减轻劳动力&#xff0c;花最少得时间实现应用功能。 import cv2 # 读取大图片和小图片的路径 img_big cv2.imread(big_image.png) img_small cv2.imread(small_image…

使用protoc-jar-maven-plugin生成grpc项目

在《使用protobuf-maven-plugin生成grpc项目》中我们使用protobuf-maven-plugin完成了grpc代码的翻译。本文我们将只是替换pom.xml中的部分内容&#xff0c;使用protoc-jar-maven-plugin来完成相同的功能。总体来说protoc-jar-maven-plugin方案更加简便。 环境 见《使用proto…

数据结构--顺序表经典OJ题

例1&#xff1a;合并有序顺序表 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&#xff…

R可视化:分组频率分布直方图和密度图

介绍 ggplot2绘制分组频率分布直方图和密度图 加载R包 knitr::opts_chunk$set(message FALSE, warning FALSE) library(tidyverse) library(patchwork) library(ggpubr) library(rstatix)# rm(list ls()) options(stringsAsFactors F) options(future.globals.maxSize …

数据结构与算法---树

数据结构可视化网址 Structure Visualization: https://www.cs.usfca.edu/~galles/visualization/Totuma: https://www.totuma.cn/Algorithm Visualizer: https://algorithm-visualizer.org/ 构建二叉树 // C#include<stdio.h> #include<stdlib.h>typedef char T…