草庐IT

基于STM32的最小系统电路设计(手把手零基础教学)

孤生i 2023-04-30 原文

文章目录


前言

   在上篇介绍完《STM32的核心板制作流程》后,本篇我们将开始学习STM32最小系统电路的设计。具体包括复位电路晶振电路电源转换电路SWD下载电路LED测试电路芯片外扩引脚STM32微控制电路,核心板原理图如下所示。


一、复位电路

  • 一个简单的复位电路图,如下所示:


   我们可以发现复位电路由一个按键、一个电容、一个上拉电阻组成。

   设计复位电路的目的是对芯片进行强制复位,使电路恢复到起始状态。其中NRST连接STM32芯片的复位引脚,查阅STM32芯片手册该复位引脚为低电平复位。该复位电路由两种工作方式:第一种是接入电源的一瞬间上电复位,第二种是手动按键复位。

   上电复位原理:接上电源瞬间,电容C7等效于短路,此时NRST点为低电位接地,STM32复位。当电容充电完成后,电容C1等效于开路NRST点电位回升为高电平。

   按键复位原理:按下按键KEY1,NRST点接地变为低电平,STM32复位。按键松开后,NRST点回升为高电平。

二、晶振电路

  • STM32外部晶振电路,如下图所示:


   这里的外接晶振电路,我们采用的是32.768kHz的外部低速晶振和8MHz的外部高速晶振。

   设计原因:单片机的运行必须依赖稳定的时钟脉冲,由于单片机的内部时钟容易受外界干扰,所以需要外接晶振电路。

   晶振电路中两个电容的作用:这两个电容一般称为“匹配电容”或者“负载电容”、“谐振电容”。晶振电路中加这两个电容是为了满足谐振条件。一般外接电容,是为了使晶振两端的等效电容等于或接近负载电容,只有连接合适的电容才能满足晶振的起振要求,晶振才能正常工作。

   负载电容无法满足的话一般会使晶体频率产生偏差,严重的话晶体无法起振。负载电容的值由如下公式计算:CL=C1*C2/(C1+C2)+CS,CL为晶振的负载电容值,一般通过查询晶振的数据手册获得。CS为电路板的寄生电容,一般取3-5pf。取C1=C2,公式可简化成:CL=C1/2+CS。一般情况下,增大负载电容值,会使震荡频率下降;减小负载电容值,会使振荡频率上升。

三、电源转换电路

  • 一个5V转3.3V的电源转换电路,如下图所示:


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

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

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

四、SWD下载电路

  • 以下为SWD下载电路:


   该电路为一个4P排针,用来外接ST-Link下载器。其中排针的2、3引脚分别连接芯片的PA13和PA14引脚(PA13和PA14为STM32F103C8T6芯片的SWD下载调试引脚)。

五、LED测试电路

  • 以下为LED测试电路:


   该电路由三个LED灯和三个限流电阻组成。

   LED3的作用:电源指示灯,标志电路是否正常工作。

   LED1/LED2的作用:后期测试核心板是否焊接成功,能否下载程序到芯片点亮LED灯。

   限流电阻的作用:降低工作电流,防止输入电压变化时,电流大幅度变化导致LED灯损坏。

六、芯片外扩引脚

  • 以下为芯片外扩引脚:

       芯片外扩引脚由两个16P的排针组成,两个排针分别连接芯片的PA0 ~ PA15引脚、PB0 ~ PB15引脚(PB2引脚除外,PB2为BOOT启动引脚,无法外接)和PC13引脚。
       将芯片引脚通过排针进行外扩,可以方便我们外接其他模块的电路。通过核心板主控,其他模块为辅助可以实现更多的功能。例如,外接指纹识别模块、DHT11温湿度传感器、OLED屏幕、8266WiFi模块等等。

七、STM32微控制电路

  • 最后为STM32微控制电路,如下图所示:


   该电路主要为STM32F103C8T6芯片和一些电阻电容组成,用来连接以上介绍的六个电路。
   其中,芯片上的VSS和VDD用一个0.1u的小电容连接,主要起到滤波作用。因为信号传递时可能会产生一些脉冲波,通过小电容能将瞬间变化的脉冲引入地。

总结

   以上就是基于STM32的最小系统电路设计(适用零基础)的所有内容,希望大家阅读后都能有所收获!原创不易,转载请标明出处,若文章出现有误之处,欢迎读者留言指正批评!

有关基于STM32的最小系统电路设计(手把手零基础教学)的更多相关文章

  1. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  2. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  3. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  4. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  5. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  6. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  7. ruby - 获取数组中的值并最小化某个类属性的最优雅的方法是什么? - 2

    假设我有以下类(class):classPersondefinitialize(name,age)@name=name@age=ageenddefget_agereturn@ageendend我有一组Person对象。是否有一种简洁的、类似于Ruby的方法来获取最小(或最大)年龄的人?如何根据它对它们进行排序? 最佳答案 这样做会:people_array.min_by(&:get_age)people_array.max_by(&:get_age)people_array.sort_by(&:get_age)

  8. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  9. ruby - 在 Rakefile 中动态生成 Rake 测试任务(基于现有的测试文件) - 2

    我正在根据Rakefile中的现有测试文件动态生成测试任务。假设您有各种以模式命名的单元测试文件test_.rb.所以我正在做的是创建一个以“测试”命名空间内的文件名命名的任务。使用下面的代码,我可以用raketest:调用所有测试require'rake/testtask'task:default=>'test:all'namespace:testdodesc"Runalltests"Rake::TestTask.new(:all)do|t|t.test_files=FileList['test_*.rb']endFileList['test_*.rb'].eachdo|task|n

  10. ruby - 如何使用 Ruby 基于字母数字字符串生成颜色? - 2

    我想要像“嘿那里”这样的东西变成,例如,#316583。我希望将任意长度的字符串“归结”为十六进制颜色。我不知道从哪里开始。我在想,每个字符串的MD5散列都是不同的-但如何将该散列转换为十六进制颜色数字? 最佳答案 你可以只取几位前几位:require'digest/md5'color=Digest::MD5.hexdigest('Mytext')[0..5] 关于ruby-如何使用Ruby基于字母数字字符串生成颜色?,我们在StackOverflow上找到一个类似的问题:

随机推荐