STM32 芯片复位方式详解:外部复位与内部看门狗复位等

时钟电路的原理图设计如下。BOOT启动电路原理图如下。MINI板的原理图,本设计选出了Stm32最小系统板需要用到的几个模块,从而完成了关于原理图部分的设计。在建立原理图库时,就是绘制出元件在电路图中的模样。

1. 电路设计 1. 复位电路

复位电路是指单片机芯片可以通过外部引脚输入复位电平信号,使得单片机除备份区域外的所有寄存器恢复为默认值,芯片内烧录的程序会重新执行。对于STM32103C8T6芯片来说,它的复位引脚为7脚,也就是NRST引脚。

Stm32芯片系统通过复位电路的复位属于外部复位,除此之外Stm32芯片还有独立看门狗IWDG复位、窗口看门狗WWDG复位、软件SW复位和低功耗管理复位。独立看门狗和窗口看门狗都是一个减计数器,当计数器的值减到0的时候系统就会复位。软件SW复位是通过程序给Stm32的某个寄存器的SW位赋值来控制的。低功耗管理复位可以将Stm32系统在待机或者关机状态下复位。除了复位电路的外部复位之外,其他的复位方式就不需要自己设计了,本文只设计了Stm32的外部复位电路,电路图如下。

此原理图由一个按钮和一个电容并联再串联一个上拉电阻组成。上拉电阻的一端接电源,另一端接在电容与按钮的并联连接点上,与芯片的NRST引脚相连。芯片系统复位的条件是当NRST引脚的电压值低于一定值时,就会发生复位。此图中,当没有按下按钮时,与NRST相连的引脚电压为电源电压,系统不会复位。当按下按钮时,NRST对应引脚接地,芯片就会复位。

2.时钟电路

Stm32芯片是由非常复杂的数字电路和其他电路组成的,需要稳定的时钟脉冲信号才能保证其正常工作。从Stm32数据手册中可以看出,为了使Stm32芯片正常工作,有很多模块需要使用时钟,分别是Contex-M3内核、闪存FLASH、可配置静态存储器控制器FSMC、SDIO、内置SRAM、DMA直接数据存储、AHB总线、APB1总线和APB2总线。其中,Contex-M3需要使用Contex自由运行时钟FCLK和Contex系统时钟SYSCLK。闪存FLASH、内置SRAM、DMA直接数据存储和AHB总线需要使用高速时钟HCLK。FSMC和SDIO也有自己独有的时钟,分别是FSMCCLK和SDIOCLK。APB1和APB2也有自己独有的时钟。由于芯片内部集成度要求,不可能为每个模块都配置一个时钟源。 因此在芯片内部对现有的时钟源进行分频或者倍频,以达到各个模块所需的时钟频率。

根据Stm32数据手册可知,Stm32芯片有三个时钟源,分别是HSI、LSI、PLL倍频器。另外它还有两个可以连接外部时钟源的引脚,分别是OSCIN和OSC32IN。OSCIN引脚可以连接4~16MHZ的晶振,本设计中使用8MHZ的晶振,OSC32引脚通常连接32.768KHZ的晶振。本设计中使用的晶振均为石英晶振,所以外部晶振模块的抗干扰能力和精度要比系统中现有的晶振好很多,所以一般情况下模块都使用外部晶振。时钟电路的原理图设计如下。

电路原理图中,Y1为32.768KHZ石英晶振,其两端通过匹配电容接地,其两端还分别连接到PC14和PC15。PC14为本设计中的OSC32_IN引脚,PC15为OSC32_OUT引脚。Y2为8MHZ石英晶振,与1M欧姆电阻R9并联后分别连接到OSC_IN和OSC_OUT,并通过两个匹配电容接地。匹配电容的作用是使晶振两端的等效电容等于或接近于负载电容,滤除晶振波形中的高频噪声。R9为反馈电阻,其作用是保证非门工作在线性工作区,这样晶振会比较容易起振。

3. 电源电路

通过查阅Stm32数据手册可以知道Stm32芯片的工作电压范围为2.0-3.6V,Stm32提供给模数转换电路的电压范围为2.4V-3.6V,当对模数转换的精度要求不高时,可以直接接在芯片的电源上,本文设计的电源电路给Stm32芯片提供3.3V的电压值,电源电路设计如图所示。

由于本最小系统板的设计采用USB供电,而USB的直接供电电压为5V,因此需要设计降压电路模块,将5V电压降至芯片可以承受的3.3V。本设计的降压电路模块采用的稳压芯片为RT9193。稳压芯片有5个引脚:输入端、参考噪声旁路口、使能端、地端和输出端。电源电路原理图中,输入端连接USB提供的5V电压,BP口连接滤波电容,输出口输出稳定的3.3V电压,输出电路部分连接电容C3、C4,用于抑制自激振荡和稳定输出电压。

当芯片内各个电路网络中的电流发生变化时,各个电路模块之间就会产生耦合。电源电路模块中产生的耦合电流会影响整个最小系统板的正常工作。因此可以设计去耦电容电路来消除各个电路模块之间的寄生耦合。本文设计的去耦电路模块在电路正极与地之间并联了4个去耦电容。去耦电路原理图如下。

4.SWD接口电路

Stm32的下载调试电路由JTAG下载电路和SWD下载电路组成,另外还可以通过串口、ISP下载。本设计采用SWD仿真调试下载。电路原理图只需要将芯片上的SWDIO和SWDCLK与SWD接口上对应的端口连接即可。本设计中芯片的SWDIO和SWDCLK分别是PA13和PA14引脚。在SWD端口的3.3V电源端口和地端口接一个电容,起到抗干扰和滤波的作用。下载电路原理图如下所示。

5.BOOT启动电路

从Stm32的用户手册我们可以知道Stm32有三种启动状态,分别由BOOT1、BOOT0引脚控制,BOOT0、BOOT1的值与启动模式具体关系如下表所示。

本设计中BOOT0对应的引脚为引脚44,BOOT1对应的引脚为引脚20。本设计以3*2的跳线帽为主体,引脚1、2接3.3V电源,引脚3、4通过电阻连接BOOT0、BOOT1,引脚5、6接地。当需要改变Stm32的启动模式时,只需要通过跳线帽改变BOOT0、BOOT1的值,从而改变启动模式即可。BOOT启动电路原理图如下。

2. 示意图 1. 项目建立

点击左上菜单栏的File,点击New->Project,创建完成一个项目。此后创建的所有文件都必须保证PCB和原理图保存在同一个项目中,否则原理图转PCB时会出现错误。成功创建的项目如下图所示。

2. 原理图绘制 2.1 利用已有的库绘制原理图

本次设计的原理图库参考了一些嵌入式设计课程中提供的STM32F108RCT6 MINI板子的原理图,本次设计选取了Stm32最小系统板需要的几个模块,从而完成了原理图的设计。正常的原理图绘制操作需要提前下载好原理图库以及与原理图库对应的封装库,在右侧的元件库中选择需要使用的原理图库,就可以添加自己需要的原理图库,从原理图库文件夹中查询元件。具体操作如下。

2.2 建立原理图库

本次设计中原理图用到的元器件全部来自自建库。自己建库的原因有两个,一是通过搭建原理图库,可以提高查找芯片资料、阅读芯片数据手册的能力。二是因为stm32最小系统是一款很常见的芯片,它的开发板应用广泛,后续的竞赛项目中可能会用到。同时搭建一个最小系统所需要的所有元器件的原理图库,也能起到资源共享、帮助别人的作用。综合以上两个因素,本次设计建立了stm32最小系统板所需要的完整原理图库。

建立库的流程:点击左上角file->select new->library->schematic library。最好把原理图库保存在本工程下,但不是必须的,也可以把这个库当做普通库,和其他库放在同一个文件夹下。建立原理图库的时候,画出电路图中元器件的外观,画元器件、添加引脚的时候,可以在右边的Properties中设置各个引脚的属性。这是直接调用库的时候不容易注意的地方。库建立好之后,库的形式和Properties的界面如下。

2.3 整体示意图

3. PCB 画图 3.1 元器件包装 3.1.1 元器件包装检查

检查元件封装有三种方法,第一种方法是点击原理图切换到PCB,点击Verify Changes,如果没有错误说明所有封装都添加完成了。第二种方法是点击Package Manager,检查每个元件的封装,没有封装的元件也可以自己添加封装。第三种方法是依次点击每个元件,然后在其Properties中查看是否有封装。

3.1.2 添加组件包装

添加元件封装的步骤和原理图设计时添加元件的步骤类似,可以直接将封装库添加到项目中,但这种方法不太可行,因为大多数元件的封装库并不明确,所以找到封装或者建立一个专属于自己项目的封装库非常重要。

3.1.3 封装库的创建

创建封装库文件的步骤是:点击File,点击New,在这个界面点击Library,最后点击PCB Library。

构建元件封装:构建元件封装时,需要先查询目标芯片或元件的尺寸,因为封装是元件的实际尺寸,所以构建封装时封装的尺寸必须与目标元件的尺寸相对应,查询完信息后,即可创建封装。

封装创建有两种方式:自行创建和按照封装向导创建。自行创建封装,只需添加需要创建的封装并双击即可。之后即可在封装界面对目标元件的封装进行规划设计,可以添加焊盘或者边框等操作。操作界面如下。

第二种方法就是按照向导来创建,完成向导的步骤之后封装就创建成功了,添加封装栏,然后右键选择Footprint Wizard,进入封装向导界面,界面如下图所示。

3.2 PCB 设计 3.2.1 PCB 设计预布局

在进行PCB操作之前,需要先画出机械层的边界,后续的板子外形需要按照机械层的边界进行裁剪,另外还需要在keep-out层上画出电气边界,这个边界可以在自动布线时限制软件的操作,让板子的布线更加合理。

3.2.2 PCB 布局

PCB布局是一个需要很多经验的模块,大部分元器件的摆放位置都很特别,但由于笔者专业性不够,本次设计中的布局依然只是为了让飞线更短,让布局看起来更完美,后期布线也少一些麻烦。本次设计中做PCB布局时,先了解原理图中的各个模块,了解各个元器件之间的连接关系,观察飞线,这样才能让自己的PCB布局尽可能合理。

本设计中整体的布局思路是,首先将Stm32芯片放置在板子的中央位置,方便与其他部分连接。其次,将晶振、电源模块等易受干扰或者干扰后对Stm32最小系统运行影响较大的模块放置在本设计中晶振放置在芯片的周围。接下来本设计将各个模块的元器件尽量放在一起,使整体布局更加美观,使板子更加合理。最后将带有插座的元器件放置在板子的周围,贴片元器件可以放置在板子的底层。

3.2.3 PCB 布局

PCB布线有两种方式:自动布线和手工布线。手工布线时可以自己布置各个模块、各个元器件之间的线路,也可以打孔或者放置焊盘。但是遇到比较难的原理图时,自动布线比较难。总结来说还是经验不足,布局不完善,布线经验不够。这需要后续更多的项目制作,板子布局和布线来总结经验。自动布线比手工布线要容易很多,但是在自动布线中,不同网络的线宽必须按照规则修改,这点在后续的规则检查中也尤为重要。规则修改会在下文专门介绍。本次设计的思路是在布局时让飞线尽量短,让最小系统板的模块尽量靠拢,让布局看起来尽可能美观合理。然后修改规则,按照修改后的布线规则进行自动布线。自动布线中需要修改的地方后面会修改。本次设计的完整PCB如下。

3.2.4 PCB规则设计

在PCB规则设置界面可以设置PCB元件的摆放位置,元件与导线之间的最小距离,导线之间的最小距离,封装引脚之间的要求等。PCB规则设计非常重要,后面的电气规则检查都是以设置的规则为基础的。设置规则的时候必须对电路知识有一定的了解,比如导线太近会产生什么影响等,不能随意修改规则,以免在进行电气规则检测的时候出现错误。这也是一个需要借鉴和积累的过程,通过这次的大型作业,笔者也积累了一些这部分的知识。

规则设置步骤是点击菜单栏Design,然后点击Rules,最后选择需要更改的模块,新建规则或者修改已有规则。除了建立规则,规则的优先级也很重要。规则设置界面和规则建立界面如下。

3.2.5 PCB电气规则检查

点击Tools,然后点击Design Rule Check。Design Rule Check可以根据制定的规则检测你的电路图是否存在错误。检测完成后,会出现如下界面。

3.2.6 泪滴和镀铜操作

泪滴操作步骤是点击PCB界面中的菜单栏工具,然后点击泪滴,然后就可以选择泪滴网络或者选择所有要泪滴的线,也可以选择泪滴格式,界面如下。

镀铜步骤为在PCB界面点击菜单栏的Place,然后点击Copper Placing进行镀铜操作,只需分别选择顶层和底层进行镀铜操作即可,镀铜完成后设计效果如下。

3.3 网络报告 3.3.1 网络报告概念

网络报告是对PCB元器件之间电气连接方式的定义。在生成网络报告时,软件会根据元器件、端口网络标号、导线等生成原理图想要表达的电气连接方式。也可以说网络报告涉及到了电路板的全部信息,也可以称之为原理图与PCB之间的桥梁。

在生成网络报告之前,需要先检查原理图,也就是编译它。或者也可以打开项目选项,在里面也可以设置各种错误的报告类型。原理图编译正确后,才能导出网络报告。网络报告中有两个符号:()和[]。它们的含义是,方括号[]中的信息是元件的信息,圆括号()中的信息是网络的信息。

3.3.2 网络报告操作步骤

生成网络报告的步骤是在原理图界面点击Design,然后点击工程网络表或者文件网络表。当工程只有一个原理图文件时,两者没有区别。点击Protel,生成目标对应的网络表。网络表和工程选项界面如下图所示。

单片机

我总对51单片机情有独钟,可能因为是启蒙的技术

2024-5-13 0:09:24

单片机

从 51 单片机开始,探索单片机学习的奥秘

2024-5-28 17:22:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索