搭建机器人电控系统——如何从零画一块主控板?——搭建最小系统电路原理图

如何画好一块主控?

我们通常使用AD或者EDA去画一块电路板,它的整体思路是:


搭建最小系统电路原理图

在有了库之后你就可以开始着手画板子了,我们首先要搭建的是围绕选择芯片的一个最小电路系统,这个系统能保证画完之后我能正常烧录,编写控制指令到单片机中,单片机也能从对应的引脚中输出我的指令(比如把某个引脚拉高或者拉低)。这个时候虽然输出没有对应没有任何外设,但我们也能够通过物理连接的方式得到我们想要的效果(也可以用电压表测试)。

这个最小电路系统包括:晶振电路(产生时钟)、复位电路、下载电路、电源电路、特殊引脚电路(防止单片机不稳定)。而对于任意一款单片机来说,它的最小系统电路的输入输出引脚一定是特殊且有含义的。


以STM32F407ZET6为例:

晶振电路原理

晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器。通过一定的外接电路,可以生成频率和峰值稳定的正弦波。而单片机在运行的时候,需要一个脉冲信号,做为自己执行指令的触发信号,可以简单的想象为:单片机收到一个脉冲,就执行一次或多次指令。

晶振本身在电路上可以等效为一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率是串联谐振,较高的频率是并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。

这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。

晶振电路都是在一个反相放大器的两端接入晶振,再有两个电容分别接入到晶振的两端,另一个电容则接地,这两个电容串联的电容量就等于负载电容。

晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。通过实验可以得到负载电容值约为15pF所以选择并联电容为22pF最为合适。(常数0和4为PCB和芯片内部电路电容)
在这里插入图片描述
晶振好比单片机的心脏,如果没有心脏起跳,单片机也将无法在正常工作,晶振越大,运行速度也就越快,但速度增加也会有干扰电路的风险。

通常晶振有无源和有源两种,无源晶振需要内部有振荡器,但无源信号质量差、精度差,且更换麻烦。通常用有源晶振。

晶振起振:根据压电效应,在极板间加上交变电压,就会产生机械变形振动,这种机械振动的振幅是比较小的,其振动频率则是很稳定的。当外加交变电压的频率与晶片的固有频率(决定于晶片的尺寸)相等时,机械振动的幅度将急剧增加,这种现象称为压电谐振,因此石英晶体又称为石英晶体谐振器。其特点是频率稳定度很高。

如何搭建晶振电路?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在芯片中有两个晶振的入口:
PH0-OSC_IN和PH1-OSC_OUT接入4—16MZH的晶振,用于产生单片机的主频;

PC14-OSC32_IN和PC15-OSC32_OUT用于接入32.768KHZ的RTC晶振。

(实时时钟,可以理解提供给需要精确定时的区域使用,32768刚好是2的15次方,经过15次分频刚好可以得到1HZ的信号。如果不需要精准定时则可以不用。)

对于其他单片机的晶振电路也是如此,晶振在芯片原理图上通常标注为X或XTAL,一般来说都需要有外部晶振(即产生主频的4—16MZH晶振)
在这里插入图片描述
在这里插入图片描述


复位电路原理

复位电路的目的是在于使电路恢复到起始状态,一般来说单片机在上电时刻要保证能够自动产生复位,来防止CPU发出错误的指令,复位完毕后再开始工作。可以想象成利用复位来统一单片机运行的“起跑线”。

一般利用电容电压不能突变的原理,将电容与电阻串联。上电时刻,电容没有充电,两端电压为零。此时,提供复位脉冲,电源不断的给电容充电,直至电容两端电压为电源电压,电路进入正常工作状态。

为了保证单片机可靠地复位,RST的高电平必须维持足够长的时间,这个时间是为了让单片机做好准备,让程序从正确的初始位置开始执行。

开机的时候为什么为复位?
在这里插入图片描述

在电路图中,电容的的大小是10uf,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。

也就是说在电脑启动的0.1S内,电容两端的电压时在03.5V增加。这个时候10K电阻两端的电压为从51.5V减少(串联电路各处电压之和为总电压)。

所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。

如何搭建复位电路?

在这里插入图片描述
在这里插入图片描述

对于STM32F407ZET6芯片来说,复位电路的引脚也是固定的,只用按照复位电路的工作原理接入NRST引脚即可。而对于其他单片机也同样如此,找到对应的复位引脚RESET即可。
在这里插入图片描述
在这里插入图片描述


下载电路

对于单片机来说,主流的下载电路主要有3种:ISP、SWD、JTAG。其中SWD和JTAG是很相似而且有某种联系的,而ISP应该是我最早接触的烧录方式。

①ISP方式: 这种方式是通过单片机的串口TX和RX实现的,所以基本所有的单片机都可以通过ISP方式来进行下载。其本质就是一个USB转TTL的工具,如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如下图,你可以买一个USB转TTL(单片机串口)的模块,也可以自己设计该转换模块的电路如下图所示,其中核心在于一个叫做CH340的芯片,你之后也可以用它来做其他USB转TTL的功能:
在这里插入图片描述

搭建好硬件后,通过单独的烧录软件如STC-ISP来下载即可,软件界面如下图:
在这里插入图片描述
在这里插入图片描述

②SWD和JTAG方式: 之所以把这两个方式放在一起说,正是因为二者基本是互相转化的。对于一款可以用SWD或者JTAG方式烧录的单片机来说,其原理图上一定有对应的特殊引脚对应。

  • 对于SWD方式而言,关键在于两根线——数据线SWDIO和时钟线SWCLK。也就是说在单片机上电的情况下,我只用两根线就能完成程序的烧录,所以通常你能看到的SWD口都是四根线(也就是还有VCC和GND)。

  • 对于JATG方式而言,对应有六根必要的线,如下图:
    在这里插入图片描述
    在这里插入图片描述

从图中我们就能很容易看出,JTAG接口本身就含有SWD接口。也就是说如果你的单片机是SWD四根线的接口,那么你可以直接用导线引出JTAG口中的SWDIO、SWCLK外加VCC和GND即可。

以正点原子的32开发板为例,他们通常是ISP或JTAG接口烧录的:

(如果ISP方式,那么你就是用一根USB线连接PC和单片机,利用在前文提到的ISP下载软件下载;而如果你是JTAG下载方式,那么你大可能通过一个叫做JLINK的下载器【如下图右】连接PC和单片机,然后在编译器【比如KEIL、IAR】中直接下载。)
在这里插入图片描述
在这里插入图片描述

JTAG如何转SWD?
在这里插入图片描述

下载方式: 找到JLINK下载器上对应SWD的四根线位置,通过导线连接到拥有SWD下载接口的单片机上,即可通过编译器内直接下载。

对于STM32F407ZET6来说,下载电路对应的管脚如图:
在这里插入图片描述

可见除了SWD和JTAG下载以外,还有两个BOOT0和BOOT1引脚,这是STM32独有的两个管理下载功能的管脚:
在这里插入图片描述

通常使用程序代码存储在主闪存存储器,配置方式:BOOT0=0,BOOT1=X;

*Flash锁死解决办法:
开发调试过程中,由于某种原因导致内部Flash锁死,无法连接SWD以及Jtag调试,无法读到设备,可以通过修改BOOT模式重新刷写代码。修改为BOOT0=1,BOOT1=0即可从系统存储器启动,ST出厂时自带Bootloader程序,SWD以及JTAG调试接口都是专用的。重新烧写程序后,可将BOOT模式重新更换到BOOT0=0,BOOT1=X即可正常使用。


电源电路原理

单片机的电平:
对于任何一款单片机来说,VCC和VSS是电源的核心,VCC的C是Circuit的意思,是指整个供电回路的电压(有12V【正点原子板子供电电压】、24V、5V等);VSS的S是Series的意思,一般指公共端,通常电路中的公共端接地,即为地端电压;VDD的D是Device的意思,指设备上的电压,即芯片的工作电压,比如说STM32芯片的电压值一般为3.3V,就是VDD。(可见VCC>VDD)

通常,单片机的电平为3.3V/5V的格式,也称为CMOS/TTL电平格式,当你让单片机的一个引脚输出高电平时,它的大小就为3.3V/5V(STM32为3.3V,51为5V)。一般的,我们会利用外部供电VCC(>5V)的电源通过降压稳压的方式给单片机供电,这样做供电更稳定,也能为外围电路提供更高的电压。

现在我们所说的是单片机的最小系统电路,是围绕芯片展开的,所以我们需要的是如何通过VCC转换到VDD,再与VSS形成回路。(引脚比较简单的芯片会把VDD直接写成VCC)

如何搭建电源电路?

以STM32F407ZET6为例:
在这里插入图片描述

我们将其所有的VSS和VDD都接好,STM32芯片的工作电压是3.3V,所以VDD接到3.3V。那么现在就是如何把VCC转换到3.3V的VDD的问题。
电压转换电路:
在这里插入图片描述
在这里插入图片描述

这里我用了9V的电源为例进行外部供电,首先通过K7805-1000R3芯片进行降压到5V,然后再通过AMS1117-3.3芯片将5V降压到3.3V作为VDD。

这其中的电容是用来稳压的,具体的数值主要是跟使用的芯片参数有关,这两个芯片电路都是很成熟的,有兴趣可以去网上看原理。这是最简单的做法,降压和稳压。当然你也可以设计得复杂一点,加入防反接电路、过压保护、过流保护等等提高电路的安全性,但总的来说还是那句话,对于刚刚入门来说,很多电路设计都已经很成熟了,可以直接拿来用,创新的前提也应当是先看懂这些已经很成熟的东西。
对于其他芯片也是如此:
在这里插入图片描述
在这里插入图片描述


特殊引脚电路

这里所谓的特殊引脚电路就是与电源和地大小直接相关的一些引脚,这些引脚如果什么都不接悬空的话,容易造成单片机某个功能工作的不正常,而他们其中的电平高低也决定了单片机的一些功能。功能越强大(引脚越多)的芯片,这些特殊功能引脚会越多,也就越需要我们去注意。

如何搭建特殊引脚电路?

以STM32F407ZET6为例,该芯片功能很多,所以对应的特殊引脚也很多,接下来会进行一一介绍:

在这里插入图片描述

  • VBAT:VBAT是系统的掉电电源,其实就是备份电源,在单片机掉电时,给RTC和备份寄 存器提供电源。(还记得在晶振处曾讲解过有一个可有可无的32.768KHZ的晶振源吗, 当时说过那个晶振是为了给RTC,也就是实时时钟,即需要精准定时的区域提供振荡的, 比如我想要显示日期,时间等,如果你想要单片机显示实时的世界时钟,那么在单片机 掉电后肯定就需要保证RTC仍有工作能力,毕竟我们不可能一直给单片机供电。)
  • VCAP:VCAP用于为备份域和待机电路之外(它们已经有一个VBAT为它们供电了)的数 字电路供电,其本质上是一个电压调节器,输出电压为1.2V,也就是说VDD作为芯片 的输入电压进入芯片后,为了给芯片内部的数字电路供电,还需要通过VCAP进行调压 到1.2V,电容的作用是滤波稳压。
  • PDR_ON:STM32的144引脚系列引出来的掉电复位引脚,接高电平表示开启掉电复位, 接低电平表示关闭掉电复位。(100引脚系列没有这个引脚不代表没有该功能,只是ST 公司没有给你选择该功能的权利)
  • VDDA、VSSA、VREF:这三个是拥有AD转换功能的单片机需要的东西。VDDA是AD转换 的电源,VSSA是对应的公共端(相当于VDD和VSS),VREF是AD转换的参考电压, 大小在2.4V—VDDA之间,决定了AD转换的精度。由此可以看出AD的电源VDDA和参 考电压VREF必须稳定才能保证转换精度,所以需要加入电容进行滤波稳压。

对于其他单片机也是如此:
在这里插入图片描述

以上,我们就成功搭建出一个MCU的最小原理图了:

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ROS_homes/article/details/122723748