MCU最小系统电路设计(以STM32F103C8T6为例)

目录

一、何为最小系统?

二、最小系统电路设计

1.电源

(1)各种名词解释

(2)为什么会有VDD_1 _2 _3区分?

(3)Mirco USB

(4)5v->3.3v滤波电路

(5)电源指示灯

2.复位电路

(1)什么是复位

(2)复位引脚和电路

3.晶振模块

(1)复位引脚

(2)时钟和时钟树

(3)为什么不直接使用内部8M时钟源?

(4)8MHz主晶振介绍

(5)为什么选择32.768KHz RTC晶振?

(6)晶振原理图

4.程序下载口

(1)JTAG下载:

(2)SWD下载:

(3)串口下载:

(4)程序下载口原理图​编辑

5.启动方式

(1)三种启动方式:

(2)启动原理图


一、何为最小系统?

最小系统板就是一个最精简的电路,精简到只能维持MCU最基本的正常工作

二、最小系统电路设计

1.电源

(1)各种名词解释

VCC电路的供电正电压VDDD芯片的工作数字正电压
GND电路的供电负电压VSSD芯片的工作数字负电压
VDD芯片的工作正电压VREF+ADC基准参考正电压
VSS芯片的工作负电压VREF-ADC基准参考负电压
VDDA芯片的工作模拟正电压VBAT电池或其他电源供电
VSSA芯片的工作模拟负电压VEE负电压供电

VDDA,VSSA:

VBAT:(RTC为实时时钟,LSE为低速外部时钟)

(2)为什么会有VDD_1 _2 _3区分?

因为VDD和VSS在芯片内部都是连在一起的,封装的时候从不同的地方分别引出,目的是为了提供可靠的电源完整性。

(3)Mirco USB

  • 1)Vbus:电源引脚。
  • 2)D+:数据线+。
  • 3)D-: 数据线-。
  • 4)ID脚:Identification,检测的意思。ID线—以用于识别不同的电缆端点,mini-A插头(即A外设)中的ID引脚接地,mini-B插头(即B外设)中的ID引脚浮空。
  • 5)GND:接地

(4)5v->3.3v滤波电路

(5)电源指示灯

电路:

示例图:

2.复位电路

(1)什么是复位

就是让单片机程序复位,把除了备份区域寄存器以外所有寄存器状态恢复至原始状态,简单来说就是让程序重头开始跑。

 

(2)复位引脚和电路

复位引脚:当NRST为低电平时复位

复位电路:

3.晶振模块

(1)复位引脚

(2)时钟和时钟树

时钟:

时钟树:

(3)为什么不直接使用内部8M时钟源?

通过数据手册我们可以得知:内部的HSI是由ST出厂时校准过的,但是精度并不高,在0~70℃下误差范围达到1.3%到2%,即便是在标准的25℃下,也有 -1.1%到1.8% 的误差。

对于高波特率的异步串口通讯,或者需要高精度定时的场合,(如:需要跑积分算法的时候),用HSI就有隐患,甚至根本达不到设计要求。

(4)8MHz主晶振介绍

晶振是由石英晶体组成的,石英晶体之所以能当为振荡器使用,是基于它的压电效应:在晶片的两个极上加一电场,会使晶体产生机械变形;在石英晶片上加上交变电压,晶体就会产生机械振动,同时机械变形振动又会产生交变电场,虽然这种交变电场的电压极其微弱,但其振动频率是十分稳定的。当外加交变电压的频率与晶片的固有频率(由晶片的尺寸和形状决定)相等时,机械振动的幅度将急剧增加,这种现象称为“压电谐振”。

晶振电路为主控芯片提供系统时钟,所有的外设工作,CPU工作都要基于该时钟,类似于整个系统的“心跳节拍”。

晶振分为无源和有源,但是本质上都是皮尔斯震荡电路(反相放大器+电阻+电容+晶体+电源),只不过对于单片机而言,单片机内部集成了反相放大器和电阻以及电源,外接晶体和电容就可以了,这里的晶体就称之为无源晶振。

而有源晶振是将皮尔斯振荡器作成一个整体,直接加电源即可工作,当然,价格也会比无源的贵一些。

  • 增益控制: 增益很大的反相放大器。
  • 8MHZ谐振器: 晶体。
  • CL1、CL2: 匹配电容。是电容三点式电路的分压电容,接地点就是分压点。以接地点即分压点为参考点,输入和输出是反相的,但从并联谐振回路即石英晶体两端来看,形成一个正反馈以保证电路持续振荡,它们会稍微影响振荡频率,主要用与微调频率和波形,并影响幅度。
  • RF: 反馈电阻(一般≥1MΩ)它使反相器在振荡初始时处于线性工作区。
  • REXT: 限流电阻,与匹配电容组成网络,提供180度相移,同时起到限制振荡幅度,防止反向器输出对晶振过驱动将其损坏。

(5)为什么选择32.768KHz RTC晶振?

32.768KHZ的晶振产生的振荡信号经过石英钟内部分频器进行15次分频后得到1HZ/秒的信号。

那为什么选择15分频呢?

频度越高计时精度越高,误差越小。

通常工作频率越高,单片机等数字电路的功耗越大,32.768KHz这个频率比较低,对降低电路功耗有利。 

综上选择32.768Hz是取折中的选择!

(6)晶振原理图

4.程序下载口

STM32F103C8T6烧录下载方法大体上有三种,分别为JTAG下载,SWD下载,以及串口下载。

(1)JTAG下载:

JTAG全名为Joint Test Action Group,即为联合测试行动小组,是一种国际标准测试协议。JTAG下载是需要依靠烧录器的,标准的JTAG接口是4线的,包括 JTMS, JTCK,JTDI, JTDO,它们的功能分别是模式选择,时钟输入,数据输入和数据输出,烧录器上的引脚对应连接到STM32F103C8T6的I/O口分别为PA13,PA14,PA15,PB3,加上接VCC和GND,所以JTAG接口最少需要6个引脚。同时单片机的BOOT0,BOOT1引脚要接地。

(2)SWD下载:

SWD全名为Serial Wire Debug,即为串行调试接口。SWD下载是需要依靠烧录器的,SWD接口是2线的,包括SWDIO,SWCLK,它们的功能分别是数据输入输出和时钟输入,烧录器上的引脚对应对应连接到STM32F103C8T6的I/O口分别为PA13,PA14,加上接VCC和GND,所以SWD接口最少需要4个引脚。同时单片机的BOOT0,BOOT1引脚要接地。

(3)串口下载:

通过USART进行烧录下载。串口下载是不需要依靠烧录器的,它直接通过安卓线连接电脑和单片机,其中STM32F103C8T6与电脑相连接的串口为USART2,对应的I/O口为PA2(TX),PA3(RX),一般在开发板上会使用串口下载,简单方便。同时单片机的BOOT0引脚要接高电平,BOOT1引脚要接低电平。

我们这里采用的烧录方式为SWD下载,下载电路设计时将PA13(SWDIO),PA14(SWCLK),VCC和GND这4个引脚引出

(4)程序下载口原理图

5.启动方式

(1)三种启动方式:

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

启动地址:0x08000000 是STM32内置的Flash

因为JTAG或者SWD模式下载程序时,是下载到内置的Flash中

所有重启后需要从内置Flash启动程序。

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

启动地址:0x1FFF0000从系统存储器启动,这种模式启动的程序功能是由厂家设置的。

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

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

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

(2)启动原理图

总结:

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

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

相关文章

VsCode的leetcode插件无法登录

前提 想使用VsCode的leetcode插件进行刷题,然后按照网上的教程进行安装下载,但是到了登录这一步,死活也登录不了,然后查看log一直报的错误是invalid password。 解决方法 首先确定在插件中设置的站点是Leetcode中国&#xff0c…

面试笔记系列四之SpringBoot+SpringCloud基础知识点整理及常见面试题

什么是 Spring Boot? Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 Spring Boot 有哪…

nodejs 实现pdf与图片互转

PDF转图片 效果图 代码 const path require(path); const pdf require(pdf-poppler); const fs require(fs); // PDF文件路径 const pdfFilePath ./path/test.pdf; // 转换选项 const opts { format: png, // 输出图片格式,可以是 jpeg, png, ppm…

Springboot+vue的考务报名平台(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的考务报名平台(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的考务报名平台,采用M(model&#xff0…

Redis7

摘录 https://github.com/Romantic-Lei/Learning-in-practice/blob/master/Redis/ 官网地址: 英文:Redis 中文:CRUG网站 redis中文文档 安装包:https://redis.io/download/,选择redis7.0版本即可 Redis在线测试地址(不用下载也…

jmeter(四)HTTP请求

启动jmeter,建立一个测试计划 这里再次说说怎么安装和启动jmeter吧,昨天下午又被人问到怎样安装和使用,我也是醉了;在我看来,百度能解决百分之八十的问题,特别是基础的问题。。。 安装:去官网…

黑马程序员——接口测试——day03——Postman断言、关联、参数化

目录: Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…

springboot-基础-添加model和controller的简单例子+常用注解含义

备份笔记。所有代码都是2019年测试通过的,如有问题请自行搜索解决! 上一篇:springboot-基础-eclipse配置helloword示例 目录 添加model和controller的例子注解开发使用RestController 大坑 Model ModelMap和ModelAndView的区别 添加model和c…

Python算法100例-2.6 分糖果

完整源代码项目地址,关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.运行结果 1.问题描述 10个小孩围成一圈分糖果,老师分给第1个小孩10块,第2个小孩2块,第3个小孩8块&…

vue 中实现音视频播放进度条(满足常见开发需求)

由于开发需要,作者封装了一个音视频播放进度条的插件,支持 vue2 及 vue3 ,有需要的朋友后台私信作者获取插件哦,下面是对该款插件的介绍。 插件默认样式👇(插件提供了多个配置选项,可根据自身需…

深度访谈 | 模块化建筑让设计和建造更简单!

从汽车行业转行建筑行业转行建筑行业,将汽车工业理念和建筑营造结合。大咖面对面,优积科技CEO刘其东接受自媒体视频号——Elaine深度专访。解读像造汽车一样造房子。 汽车行业和建筑行业有何渊源?到底是什么样的机缘巧合使一帮造汽车的团队要…

PDF文件转换为图片

现在确实有很多线上的工具可以把pdf文件转为图片,比如smallpdf等等,都很好用。但我们有时会碰到一些敏感数据,或者要批量去转,那么需要自己写脚本来实现,以下脚本可以提供这个功能~ def pdf2img(pdf_dir, result_path…

低代码与大语言模型的探索实践

低代码系列文章: 可视化拖拽组件库一些技术要点原理分析可视化拖拽组件库一些技术要点原理分析(二)可视化拖拽组件库一些技术要点原理分析(三)可视化拖拽组件库一些技术要点原理分析(四)低代码…

MQTT协议解析:揭秘固定报头、可变报头与有效载荷的奥秘

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种轻量级的通讯协议,常用于远程传感器和控制设备的通讯。MQTT协议基于发布/订阅模式,为大量计算能力有限且工作在低带宽、不可靠网络环境中的设备…

Java设计模式 | 简介

设计模式的重要性: 软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。 这个术语由埃里希 伽玛(Erich Gamma)等人在1…

【JavaEE】_前端POST请求使用json向后端传参

目录 1. 关于json 2. 通过Maven仓库,将Jackson下载导入到项目中 3. 使用Jackson 3.1 关于readValue方法 3.2 关于Request.class类对象 3.3 关于request对象的属性类型 3.4 关于writeValueAsString 前端向后端传递参数通常有三种方法: 第一种&…

Android和Linux的开发差异

最近开始投入Android的怀抱。说来惭愧,08年就听说这东西,当时也有同事投入去看,因为恶心Java,始终对这玩意无感,没想到现在不会这个嵌入式都快要没法搞了。为了不中年失业,所以只能回过头又来学。 首先还是…

Redis之一: 简介及环境安装搭建

什么是NoSQL? NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据&#xf…

C++:类与对象(2)

创作不易,感谢三连! 一、六大默认成员函数 C为了弥补C语言的不足,设置了6个默认成员函数 二、构造函数 2.1 概念 在我们学习数据结构的时候,我们总是要在使用一个对象前进行初始化,这似乎已经成为了一件无法改变的…

算法打卡day5|哈希表篇01|Leetcode 242.有效的字母异位词 、19.删除链表的倒数第N个节点、202. 快乐数、1. 两数之和

哈希表基础知识 哈希表 哈希表关键码就是数组的索引下标,然后通过下标直接访问数组中的元素;数组就是哈希表的一种 一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是否在班级里: 要枚举的话时间复杂度是O(n)&…