STM32F103简介

news/2024/11/17 12:56:01/文章来源:https://www.cnblogs.com/zyly/p/18550432

自从大学毕业之后,已经很久没有接触STM32控制器了,最近打算学习一下LVGL,控制芯片计划使用STM32,因此这里我们会简单介绍有关STM32的知识。

一、STM32F103RTC6介绍

1.1 命名规则

我从网上买了一块STM32F103RTC6开发板,STM32F103RCT6 各个字段的含义:

  • STM32(芯片系列):STM32代表ARM Cortex-M内核的32位微控制器;
  • 103(芯片子系列):101基本型,102USB基本型(USB2.0),103代表增强型系列,105107互联型;
  • F(产品类型):F代表通用系列 ;
  • R(引脚数量):T=36, C=48, R=64, V=100 ,Z =144
  • C(闪存容量):4=16K6=32K8=64KB=128KC=256KD=384KE=512K
  • T(表封装): H代表BGA封装、T代表LQFP封装 、U代表VFQFPN封装 、Y代表WLCSP64
  • 6(工作温度范围):6代表-40~85℃7代表-40~105℃

更多细节可以参考下图:

1.2 原理图

接下来我们看一下这块开发板的完整电路原理图,后续我们会一一介绍各个组成部分;

STM32F103RCT6核心板丝印尺寸图:

1.2.1 MCU部分

MCU采用的STM32F103RTC6,一共64个引脚;

由于引脚比较多,我们不可能一一介绍,这里我们仅仅介绍比较重要的引脚;

  • 电源引脚,包括:
    • VDD1319324864):供电电源引脚,D=device表示器件的意思,即器件内部的工作电压,通常连接到3.3V电源;
    • VSS1218314763):接地引脚,S=series表示公共连接的意思,通常指电路公共接地端电压;
    • VBAT1):RTC的电池供电引脚,当使用电池或其他电源连接到VBAT脚上时,当VDD断电时,可以保存备份寄存器的内容和维持RTC的功能。如果应用中没有使用外部电池,VBAT引脚应接到VDD引脚上;
  • 复位与时钟引脚,包括:
    • NRST7):复位引脚,外部低电平触发复位。若外部复位被激活,MCU会重新启动;
    • BOOT0/12860):启动引脚,选择MCU启动方式,用于选择从闪存或外部设备启动;
  • RTC引脚:
    • RTC2):RTC实时时钟的输出引脚,可以配置为1Hz信号输出,通常用于提供精确的时间基准;
  • 通信引脚,STM32F103RTC6提供了多种通信接口,其中包括:
    • USART(通用同步异步收发器,424316172930):例如,TX(发送)和RX(接收)引脚;
    • SPI(串行外设接口,212223):例如,MOSI(主输出从输入)、MISO(主输入从输出)等引脚;
    • I2C5253):SCL(时钟线)、SDA(数据线)引脚。
  • GPIO引脚:STM32F103RTC6提供了多个通用输入输出引脚(GPIO),这些引脚可以用于多种不同的外设功能,如数字输入、输出、高低电平控制、外部中断等;
  • 外部中断引脚:EXTI(外部中断)引脚,用于从外部设备(如按钮、传感器等)接收中断信号;
  • 模拟引脚:ADC(模拟数字转换器)引脚,用于接收模拟信号并进行数字化处理。这些引脚通常与外部传感器连接;
  • 调试引脚:SWDIO46)和 SWCLK49):用于调试的串行线(Serial Wire Debug)接口引脚,用于与调试器连接;
  • PWM输出引脚:
    • TIMx:定时器模块的输出引脚,用于生成脉宽调制(PWM)信号,通常用于电机控制、亮度调节等应用。
1.2.2 复位引脚NRST原理图

STM32NRST是异步复位脚。 复位就是让单片机重启,使其恢复到一个缺省的状态。

  • NRST输入低电平的时候,MCU处于复位状态,重设所有的内部寄存器,及片内几十KBSRAM。;
  • NRST从低电平变高时,PC指针从0开始。 但是复位的时候不会将STM32F片内RTC的寄存器以及后备存储器重置,因为它们是用电池通过专门的VBAT脚供电。

STM32中的NRST有施密特功能。大概在输入电压低于1.V的时候将芯片复位。

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

1.2.3 晶振引脚原理图

1.2.3.1 8MHz晶振

高速晶振8MHz作为系统时钟的来源,可以由芯片内部的HSI RC时钟源或芯片外部的独立时钟源提供。

STM32最小系统板上,8M晶振是用于提供系统时钟的外部晶体振荡电路之一。

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

\[晶振频率 = 8MHz \]

\[晶振周期 = 1 / 晶振频率 = 0.125us \]

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

\[1s / 0.125us = 8000000个周期 \]

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

1.2.3.2 32.768k晶振

低速晶振32.768kHz连接LSElow-speed external clock signal),最终到达RTCreal-time clock)。

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

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

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

1.2.3.3 电容介绍

晶振旁的俩个电容到底有啥作用?

主要作用是平衡晶振引脚的电感的。因为晶振在高频工作时有寄生电感,为了平衡电感起到谐振的作用。所以要用两个小电容来平衡电感。一般电容的选20pf–30pf的就可以了。具体的大小请参看晶振厂家提供的数据手册。

芯片晶振引脚的内部通常是一个反相器,芯片晶振的两个引脚之间还需要连接一个电阻,使反相器在振荡初始时处与线性状态,但这个电阻一般集成在芯片的内部,反相器就好像一个有很大增益的放大器,为了方便起振,晶振连接在芯片晶振引脚的输入和输出之间,等效为一个并联谐振回路, 振荡的频率就是石英晶振的并联谐振频率。

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

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

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

1.3 电源转换电路

我们可以发现电源转换电路是由一个稳压芯片AMS1117-3.3V、两个电解电容(C21C22)组成。实际上C21C22两侧还应该各接一个104的贴片电容;比如这种:

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

电容作用:

  • C4C5是输出滤波电容,作用是抑制自激振荡,如果不接这两个电容,通常线性稳压器的输出会是个振荡波形;
  • C6C7是输入电容,对于交流电压整流输入,它们的第一个作用是把单向脉动电压转换成直流电压,在本图中输入已经是+5V直流电源了,它们的作用就是防止断电后出现电压倒置,因此通常输入电容的容量应该大于输出电容。

概括性地说,输出的电容的作用是把输出信号的干扰作为滤除。输入电容的作用就是把输入信号中的高频噪声作为滤除对象,把前级携带的高频杂波滤除。

1.4 调试接口

众所周知,SWDJTAG是单片机下载程序与调试的常用接口。其共同之处:

  • 供电电压范围: 1.2 V - 5.5 V
  • 时钟速率: 可配置高达10 MHz
  • SWO跟踪捕获: 数据速率高达50 Mbit/sUART/NRZ模式);
  • 隔离电压: 1 kV
  • 热插拔:支持;
1.4.1 JTAG

JTAG,全名为Joint Test Action Group(联合测试行动小组)。截至本文最新的标准为IEEE Standard 1149.1-1990。其拓扑图如下:

JTAG 一般使用5个引脚:

  • TDITest Data In):串行输入引脚;
  • TDOTest Data Out):串行输出引脚;
  • TCKTest Clock):时钟引脚,一般附加100k下拉电阻;
  • TMSTest Mode Select):模式选择(控制信号)引脚;
  • TRSTTest Reset):复位引脚;

JTAG的优势:

  • 不限于ARM系列芯片;
  • 具有更多用于编程,调试和生产测试的用途。
1.4.2 SWD

全称为Serial Wire Debug(串行线调试),是ARM专门设计的协议,仅支持ARM(所以在ARM系列单片机中性能表现较佳)。

SWD一般使用 2 个引脚:

  • SWDIOSerial Wire Data Input Output):串行数据输入输出引脚;
  • SWCLKSerial Wire Clock):串行线时钟引脚;

SWD的优势:

  • 使用引脚更少,只需SWDIOSWCLK两个引脚;
  • SWD具有特殊功能,例如打印调试信息;
  • JTAG相比,SWD在速度上具有更好的整体性能;

我们使用的开发板就使用了SWD接口,电路原理图如下:

SWDIO:在芯片内部已经有上拉,但在电路板上必须再一次上拉(100k或者10k电阻);不过我们这个开发板原理图并没有接上拉电阻,如果我们设计原理图,最好接上上拉电阻;

SWCLK,在芯片内部已经有下拉,在电路板上没有特殊要求进一步下拉。

1.4.3 JTAGSWD的兼容性

一般来说,单片机板子上会有以下这些烧录座,可同时兼容JTAGSWD

其中:

  • TCK兼容SWCLK
  • TMS兼容SWDIO
  • TDO兼容SWO;

选用SWD而非JTAG的理由:

  • 电路原理图设计需要足够简单,且可以在没有JTAG功能的情况下进行测试;
  • PCB在尺寸方面有限制,SWD可以节省空间;
  • MCU已经没有多余的引脚给 JTAG用了。

1.5 BOOT0/1

BOOT决定的模式:

BOOT1 BOOT0 启动方式 说明
X 0 主闪存存储器 主闪存存储器被选为启动区域
0 1 系统存储器 系统存储器被选为启动区域
1 1 内置SRAM 内置SRAM被选为启动区域
1.5.1 主闪存存储器

STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。

1.5.2 系统存储器

从系统存储器启动,这种模式启动的程序功能是由厂家设置的。一般来说,这种启动方式用的比较少。

系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader,也就是我们常说的ISP程序,这是一块ROM,出厂后无法修改。

一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤:

  • BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader
  • 最后在BootLoader的帮助下,通过串口下载程序到Flash中;
  • 程序下载完成后,又有需要将BOOT0设置为0,手动复位,这样,STM32才可以从Flash中启动。
1.5.3 内置SRAM

内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。

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

1.6 LCD外围电路

开发板支持外接一块I2C通信的OLED的屏幕,比如可以连接与开发板配套的128*128 TFT_LCD液晶屏;

1.7 串口一键下载电路(CH340

参考文章

[1] 对stm32F103RCT6原理图解析

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

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

相关文章

高级语言程序设计第七次个人作业(102400106刘鑫语)

这个作业属于哪个课程: https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400106 姓名:刘鑫语 作业内容: 编写并运行博客园的八道题。 1,定义一个二维数组和指向该数组的指针,分别以数组…

20222312 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容及要求 本实践目标是掌握metasploit的用法。 指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容。 (1)前期渗透 ①主机发现(可用Aux中的arp_sweep,s…

解决 PbootCMS 网站转移后无法打开报错提示“No input file specified”的问题

确保所有文件路径正确无误。检查 index.php 文件确保 index.php 文件存在于网站根目录中,并且路径正确。检查其他配置文件确保 config.php 和其他配置文件路径正确。查看错误日志 查看服务器日志,获取更多详细的错误信息。PHP 错误日志通常位于 /var/log/php7.x-fpm.log 或 /…

织梦dedecms无法登录后台,提示用户名或密码错误怎么办

问题描述:无法登录后台,提示用户名或密码错误。 解决方案:检查用户名和密码:确保输入的用户名和密码正确。 清除Cookie:清除浏览器的Cookie,重新尝试登录。 检查数据库:确保数据库中的管理员账户信息正确。 检查文件权限:确保后台目录和文件的权限设置正确。 检查配置文…

网站数据库如何修改config.php,如何在网站配置文件中修改数据库连接信息

修改网站的数据库连接信息可以确保网站能够正确连接到数据库。以下是具体步骤:备份文件:在修改前,备份当前的config.php文件,确保数据安全。 使用FTP工具(如FileZilla)下载config.php文件到本地。编辑文件:使用代码编辑器(如Sublime Text、Visual Studio Code)打开con…

修改公司网站 插件,如何在公司网站后台安装和管理插件

插件可以扩展网站的功能,提升用户体验。以下是具体步骤:登录后台:打开浏览器,输入网站的后台地址,例如 http://yourdomain.com/admin。 输入管理员账号和密码,点击“登录”。进入插件管理:登录后,点击顶部菜单栏中的“插件”或“扩展”。 选择“插件管理”或“扩展管理…

网站首页修改标题描述,如何在网站后台或代码编辑器中修改首页标题和描述

修改首页标题和描述可以提升搜索引擎优化(SEO)。以下是修改首页标题和描述的步骤:登录网站后台:打开浏览器,输入网站的后台地址,例如 http://yourdomain.com/admin。 输入管理员账号和密码,点击“登录”。进入SEO设置:登录后,点击顶部菜单栏中的“SEO”或“设置”。 选…

腾讯在线文档去掉底色

现在在线文档在单位使用范围比较广泛,前两天领导给我一个问题,在线文档标黄了部分文字,需要保留格式的情况下把底色去掉。当时在领导电脑上没解决,后面自己弄了个文档来测试解决了。分享给需要的人一个参考。 觉得过程麻烦的直接看最后解决方法,前面是过程。 1、在线文档导…

《计算机基础与程序设计》第九周

作业信息 这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计) 这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业) 这个作业的目标 <写上具体方面> 作业正文 ... 本博客链接 教材学习内容总结 《计算…

Java面试之多线程并发篇(5)

前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!常用的线程池有哪些?简述一下你对线程池的理解?Java程序是如何执行的?锁的优化机制了解吗?说说进程和线程的区别?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘 *** 12万字的java面试题整理 *…

阿里面试:1000万级大表, 如何 加索引?

本文原文链接 文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 …

团队项目4——项目冲刺-6

每日站立式会议昨天已完成的工作: 杨睿:处理页面跳转、错误状态处理等内容 开发物业报修页面木萨江:对接住户相关接口巴音才次克:完善住户个人资料页面李佳聪:测试住户相关接口今天计划完成的工作: 杨睿:完成住户物业报修页面木萨江:完成住户车位查询页面巴音才次克:对…