一种利用可控硅实现STM32串口自动下载代码的方法设计

合集下载

STM32一键下载电路

STM32一键下载电路

STM32一键下载电路分析前言:在我们学习STM32时,硬件电路的设计是必不可少的一部分,在单片机电路的设计中有单片机最小系统和各种外围电路,而单片机最小系统是整个硬件电路实现的最基本也是最重要的一部分。

因此,在我们设计STM32最小系统时对于硬件电路中的一键下载电路原理的理解成为了一个重要的方面。

下面,我们就对STM32一键下载电路进行分析。

从STM32数据手册中我们查到,STM32有三种启动模式,分别是主闪存存储器、系统存储器、内置SRAM。

我们只要对STM32相应的引脚进行配置,在系统启动时就可以进入不同的模式,实现不同的相应的功能。

STM32启动模式如表1所示。

表1 STM32启动模式描述:在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值讲被锁存。

用户可通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。

从表中可知:串口下载配置:BOOT0=1;BOOT1=0;复位后运行程序:BOOT0=0;BOOT1=1/0;因此在一键下载电路中可使BOOT1直接接地,始终处于BOOT1=0的状态。

当然,为了使用灵活,可以使用跳线帽在高电平和低电平之间进行选择。

现在最为主要的就是BOOT0的配置。

方案1;使用跳线帽在下载程序和运行程序时进行高低电平选择,这种方法简单,但过于麻烦。

方案2:使用仿真器,但这有势必会增加成本。

方案3:设计一键下载电路,实现程序的下载。

一键下载电路的基本原理利用了三极管的开关特性,利用这个特性实现不同时间内对BOOT0高低电平的置位,实现下载。

在讲解下载电路之前我们先了解一下下载软件的配置,如图1所示,程序下载前先配置DTR的低电平复位,RST 高电平进入BootLoader。

图1 下载软件的配置经过上面的配置,我们在下载程序时CH340G的DTR#和RTS#的时序图2:图2 DTR#和RTS#的时序图(1)在最开始时,DTR#和RST#输出高电平,Q1和Q2均处于截止状态,RESET 为高电平,BOOT0被下拉电阻拉低处于低电平,如图3所示。

详细图文剖析STM32单片机串口一键下载电路与操作方法

详细图文剖析STM32单片机串口一键下载电路与操作方法

详细图文剖析STM32单片机串口一键下载电路与操作方法
在此介绍STM32单片机串口一键下载电路与操作方法详解。

STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
1)用户闪存= 芯片内置的Flash。

2)SRAM = 芯片内置的RAM区,就是内存啦。

3)系统存储器= 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。

这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。

要了解STM32的几种启动模式.
BOOT0接GND,BOOT1接GND.那就是正常的启动模式,从flash加载代码.
而BOOT0接V3.3,BOOT1接GND.则是ISP模式,也就是串口更新代码.
其次,你要了解STM32 ISP下载代码的过程.
首先BOOT0接V3.3,然后复位STM32.STM32就会加载ISP代码(固化存储在内部),从而进入ISP模式.此时便可以通过串口下载程序了.
最后再来看看一键下载是怎么实现的呢?
从原理图可知:DB9串口的RTS控制BOOT0,DTR控制RST.
我们要达到下载的目的,就必须先让RTS拉高BOOT0(设置BOOT0为1),然后再让DTR控制RST为低(STM32为低电平复位).然后再释放RTS为高(停止复位),然后再开始串口下载代码(此时BOOT0可以为高,也可以为低).
所以我们看到mcuisp连接过程是:
DTR电平置高(3-12V),复位(DTR接了RST)
RTS置低(-3--12V),选择进入BootLoader(RTS接了BOOT0)
...延时100毫秒。

STM32如何使用串口下载程序

STM32如何使用串口下载程序

第1章如何使用串口下载程序
1.1安装USB转串口驱动
秉火的STM32开发板用的USB转串口的驱动芯片是CH340,要使用串口得先在电脑中安装USB转串口驱动—CH340版本。

驱动可在网上搜索下载或者使用我们光盘里面提供的。

WIN7用户请用管理员身份安装。

如果不能安装成功,请先百度查找原因自行解决。

1.2硬件连接
用USB线连接电脑和开发板的USB转串口接口:USB TO UART,给开发板上电。

如果USB转串口驱动安装成功,USB线跟板子连接没有问题,在计算机->管理->设备管理器->端口中可识别到串口。

图1识别到USB转串口端口
如果识别不了串口,请检查USB线是否完好,可换一根USB线试试。

1.3开始下载
打开mcuisp软件,配置如下:①搜索串口,设置波特率、②选择要下载的HEX文件、③校验、编程后执行、④DTR低电平复位,RTS高电平进入bootloader、⑤开始编程。

如果出现一直连接的情况,按一下开发板的复位键即可。

图2ISP下载配置
图3ISP下载成功。

STM32程序下载方法及keil使用方法

STM32程序下载方法及keil使用方法

STM32程序下载方法及Keil使用方法简介本文将介绍STM32芯片的程序下载方法和Keil软件的使用方法。

通过本文,读者将了解到如何下载已经编写好的代码到STM32芯片,并且了解如何使用Keil 软件进行程序开发。

STM32程序下载方法准备工具在进行STM32程序下载之前,需要准备以下工具:1.STM32开发板2.软件开发平台,如Keil等B转串口模块准备步骤1.将USB转串口模块连接到开发板上。

注意连接的接口要与开发板的串口接口一致。

2.开启STM32开发板上的BOOT0接口,一般是将BOOT0接口连接到GND。

这个步骤是为了将芯片启动到ISP模式,以便进行程序下载。

3.在软件开发平台上打开需要下载的程序,并进行编译链接操作,生成HEX和BIN文件。

4.打开下载软件,设置选项,如端口、波特率、校验位等。

5.在下载软件上选择需要下载的HEX或BIN文件。

6.点击下载按钮,进行下载操作。

下载注意事项1.下载过程中不要断开USB转串口模块。

2.在下载之前确认芯片型号和下载软件的选项是否设置正确,否则可能造成芯片损坏。

3.下载过程中不要进行其他操作。

Keil使用方法准备工具在进行Keil开发之前,需要准备以下工具:1.Keil软件2.STM32开发板B转串口模块教程步骤1.打开Keil软件,新建工程,选择芯片型号和程序类型。

2.在Keil软件上进行程序开发,编写代码并进行编译链接操作,生成HEX和BIN文件。

3.打开下载软件,并设置选项,如端口、波特率、校验位等。

4.在下载软件上选择需要下载的HEX或BIN文件。

5.将USB转串口模块连接到开发板上,然后连接电脑。

6.开启STM32开发板上的BOOT0接口,一般是将BOOT0接口连接到GND。

这个步骤是为了将芯片启动到ISP模式,以便进行程序下载。

7.点击下载按钮,进行下载操作。

8.下载完成后,断开开发板上的BOOT0接口,并将USB转串口模块与电脑断开。

STM32F10x一键串口下载的电路设计与调试

STM32F10x一键串口下载的电路设计与调试

S T M32F10x一键串口下载的电路设计与调试盛春明(深圳技师学院电子信息技术系,深圳518052)摘要:设计了一种实用的S TM32F10x系列处理器一键串口下载电路㊂通过此电路S TM32F10x系列处理器可以通过I S P方式将调试P C机上用户编写的应用程序下载到芯片内部的主闪存存储器中㊂下载完成后,用户的应用程序不用进行任何硬件模式切换就能马上运行㊂因此采用此电路后可以极大地减少S TM32F10x系列处理器开发应用的时间成本和生产成本㊂关键词:下载仿真;S TM32F10x;J T A G;I S P B o o t l o a d e r中图分类号:T P368.1文献标识码:AD e s i g n a n d D e b u g g i n g o f S e r i a l P o r t D o w n l o a d C i r c u i t B a s e d o n S T M32F10xS h e n g C h u n m i n g(D e p a r t m e n t o f E l e c t r o n i c I n f o r m a t i o n T e c h n o l o g y,S h e n z h e n T e c h n i c i a n C o l l e g e,S h e n z h e n518052,C h i n a)A b s t r a c t:I n t h i s p a p e r,a p r a c t i c a l s e r i a l p o r t d o w n l o a d c i r c u i t o f S TM32F10x s e r i e s p r o c e s s o r i s d e s i g n e d.T h r o u g h t h i s c i r c u i t,t h e S TM32F10x s e r i e s p r o c e s s o r c a n d o w n l o a d t h e a p p l i c a t i o n p r o g r a m w r i t t e n b y t h e u s e r o n t h e d e b u g P C m a c h i n e t o t h e i n t e r n a l f l a s h m e m o r y i n t h e c h i p b y I S P.A f t e r c o m p l e t i n g t h e d o w n l o a d,t h e u s e r's a p p l i c a t i o n i s r u n w i t h o u t a n y h a r d w a r e m o d e s w i t c h i n g.T h e r e-f o r e,t h i s c i r c u i t c a n g r e a t l y r e d u c e t h e t i m e c o s t a n d p r o d u c t i o n c o s t o f t h e d e v e l o p m e n t a n d a p p l i c a t i o n o f S T M32F10X s e r i e s p r o c e s s o r s. K e y w o r d s:d o w n l o a d s i m u l a t i o n;S TM32F10x;J T A G;I S PB o o t l o a d e r引言传统的8/16位单片机因其有限的性能和简单的内部外设模块,使得其在设计一些功能稍显复杂的电子产品时显得捉襟见肘㊂而大多数32位处理器又因为其高功耗㊁高成本㊁复杂的开发应用环境限制了它在低端电子产品中的使用㊂因此基于A R M C o r t e x M内核的32位嵌入式处理器应运而生,C o r t e x M内核是A R M公司针对一些对成本比较敏感的低端嵌入式应用而专门开发的A R M 处理器内核㊂行业中基于C o r t e x M内核的A R M处理器多如牛毛,这其中又以S T公司开发的基于C o r t e x M3内核的S TM32F10x系列处理器为其中的翘楚㊂S TM32F10x系列处理器因其高性能(主频达到72MH z,同类产品性能最高)㊁低功耗㊁完善的器件软件库和开发工具链以及简单的硬件应用环境(如芯片无B G A封装等)使得其作为32得到广泛应用㊂S TM32F10x系列处理器通常情况下有两种方式来下载程序到芯片内部的主闪存存储器中:一种是外接专用的A R M仿真器(如J L I N K仿真器等)通过芯片的J T A G接口将用户编写的应用程序下载到芯片内部的主闪存存储器,另一种是通过芯片的I S P接口将用户编写的应用程序下载到芯片内部的主闪存存储器,不需要外接专用的A R M仿真器㊂可以看出,采用I S P方式来下载程序时,成本远低于采用仿真器的方式下载程序㊂但是由于采用I S P方式下载程序需要用到芯片出厂时固化在芯片内部的B o o t l o a d-e r程序,下载完用户的应用程序后又需要芯片重新上电且需立即切换到去执行用户的应用程序,因此芯片通常需要通过跳线的方式在这两者之间进行转换,这给用户的应用带来了极大的不便㊂鉴于此,本文设计了一种实用的S TM32F10x系列处理器一键串口下载电路,运行调试P C机上的M C U I S P 软件将用户的应用程序下载到芯片内部的主闪存存储器后,马上就能运行用户的应用程序,从而极大地减少采用此芯片时的开发时间成本和生产成本㊂1S T M32F10x系列处理器串行下载的工作原理S TM32F10x系列处理器在使用上极其方便㊂除了性能和内部功能模块都较传统的单片机有很大的提升和扩展外,S TM 32F 10x 系列处理器在片内程序的加载和调试上都提供了丰富的手段㊂S TM 32F 10x 系列处理器除了可以通过J T A G (联合测试行动组)协议接口在线下载程序和仿真程序外,还提供多种串行接口(U A R T ㊁U S B ㊁C A N 等)下载程序到芯片内部的闪存中㊂S TM 32F 10x 系列处理器通过J T A G 接口下载程序时必须采用专门的仿真器(如J L I N K 仿真器等)来下载程序,因此提高了产品的开发成本和生产成本㊂在很多场合基于S TM 32F 10x 系列处理器的嵌入式电子系统通常采用串行I S P (i n -s ys t e m p r o g r a mm i n g 在线系统编程)方式来加载程序㊂图1是S TM 32F 10x 处理器,采用U A R T (异步串行通信接口,俗称232接口)下载程序的硬件接口连接图㊂S TM 32F 10x 处理器的U A R T 接口外接232转换芯片,232转换芯片再连接到单板的232串行接口插座㊂P C 主机的232串行接口插座和单板的232串行接口插座再通过线缆连接㊂图1 S T M 32F 10x 处理器I S P (U A R T 接口)方式下载程序硬件接口连接图P C 主机上运行I S P 软件,S TM 32F 10x 处理器上电后自动运行芯片出厂前烧写到芯片内部系统存储器中的B o o t l o a d e r 程序㊂芯片内部的B o o t l o a d e r 程序和P C 机上的M C U I S P 程序通过专门的串口通信协议将用户编写的应用程序下载到芯片内部的闪存中㊂2 一键串口下载电路的设计与工作原理分析通常S TM 32F 10x 系列处理器是通过专用硬件配置引脚(B O O T 1和B O O T 0)的设置来确定处理器内部程序的启动方式㊂表1为S TM 32F 10x 系列处理器启动硬件配置表㊂表1 S T M 32F 10x 系列处理器启动硬件配置表启动模式选择引脚B O O T 1B O O T 0启动模式说 明X0主闪存存储器主闪存存储器被选为启动区域01系统存储器系统存储器被选为启动区域11内置S R AM内置S R AM 存储器被选为启动区域当B O O T 1=x ㊁B O O T 0=0时,系统上电后,处理器从主闪存存储器启动运行程序,这是正常的工作模式;当B O O T 1=0㊁B O O T 0=1时,系统上电后,处理器从系统存储器启动运行程序,系统存储器中的程序一般都是芯片出厂前由厂家写入的B o o t l o a d e r 程序;当B O O T 1=1㊁B O O T 0=1时,系统上电后,处理器从从内置S R AM 启动,这种模式主要用于调试程序㊂从这里可以看出,当系统要通过串口来下载程序时,必须首先将B O O T 1设置为0(低电平)㊁B O O T 0设置为1(高电平),这样芯片上电后首先运行芯片出厂前由厂家写入的B o o t l o a d e r 程序㊂芯片内部的B o o t l o a d e r 程序和P C 机上正在运行的M C U I S P 程序之间通过专门的串口通信接口连接好后,就可将用户编写的应用程序下载到芯片内部的主闪存存储器中㊂下载应用程序到芯片内部的主闪存存储器后,如果要测试下载的应用程序的运行结果,就必须要重新将B O O T 0设置为0(高电平),然后系统再重新上电运行㊂系统再重新上电运行后就能执行主闪存存储器中的应用程序了㊂在系统软件调试过程中,为了下载应用程序和观察应用程序的执行效果,就需要不断地将B O O T 0在高低电平之间进行切换,这给应用程序的调试和开发带来了很大的不便㊂图2为一种实用的一键串行下载电路的原理图㊂除此电路外,系统还需要将S TM 32F 10x 芯片的B O O T 1引脚固定拉低,即将B O O T 1信号永远设置为低电平㊂该电路是通过C H 340来实现下载功能㊂C H 340是一款U S B 总线转换芯片,它完成U S B 和U A R T 之间协议转换的功能㊂采用该芯片的原因主要有两个:一是在目前主流的P C 主机中基本不再提供R S 232异步串行通信接口,要实现S TM 32F 10x 芯片程序的下载必须通过U S B 接口才能连接,因此必须在单板上直接提供这种U S B 和U A R T 协议之间的转换电路;另外也可以通过M C U I S P软件操作芯片的R T S (数据发送请求)和D T R (数据接收请求)两个引脚,方便地实现一键下载程序的功能㊂C H 340的第16脚和第1脚分别是芯片的电源信号引脚和地信号引脚,分别接单片机的电源信号和地信号㊂第7脚和第8脚是芯片的12MH z 晶振输入和输出引脚㊂第5脚和第6脚是U S B 差分信号引脚,直接连接到单片机的U S B 插座上㊂第4脚为电源滤波引脚,当芯片5V 电源供电时,该引脚需外接0.01μF 的退耦电容;当芯片由3.3V 电源供电时,该引脚需外接电源信号,因此在电路设计时需做兼容设计㊂芯片的第14脚为R T S (数据发送请求)信号,通过外接一个三极管组成的控制电路来控制S TM 32F 10x 芯片的B O O T 0信号,当R T S 信号输出为高时,B O O T 0为低电平,当R T S 信号输出为低时,B O O T 0为高电平㊂芯片的第13脚为D T R (数据接收请求)信号,通过外接一个三极管组成的控制电路来控制S TM 32F 10x 芯片的复位信号(N R S T ),当D T R 信号输出图2 一键串行下载电路原理图为高时,N R S T 为低电平,当D T R 信号输出为低时,N R S T 为高电平㊂其中B O O T 0信号连接到S TM 32F 10x 芯片的启动配置引脚(第138脚),N R S T 复位信号直接连接到S TM 32F 10x 芯片的复位引脚(第25脚)㊂C H 340的第2脚和第3脚分别为串行数据输出和输入脚,分别连接到S TM 32F 10x 芯片的第一路串行数据输入(102)和输出(101)脚㊂R T S 信号和D T R 信号的高低变化是受P C 机上的M C U I S P 软件来控制的㊂图3为一键串行下载电路关键信号波形图㊂如图3所示,D T R#信号和R S T#信号为一对相反信号,R T S#信号和B O O T 0信号为一对相反信号㊂当D T R #信号和R T S #信号为高电平时,R S T#和B O O T 0为低电平信号;反之,当D T R#信号和R T S #信号为低电平时,R S T#和B O O T 0为高电平信号㊂图3 一键串行下载电路关键信号波形图当需要下载程序到S TM 32F 10x 芯片的时候,首先通过M C U I S P 软件控制D T R#输出高电平,通过三极管控制T P 2使得S TM 32F 10x 芯片的复位信号R S T#为低㊂控制复位时间大约为100m s ㊂100m s 后,R S T#信号恢复正常,S TM 32F 10x 芯片进入正常启动状态㊂同时,由于此时R T S #为低,控制T P 1使得B O O T 0信号为高,另外系统电路已将B O O T 1信号固定设置为低,这样S TM 32F 10x 芯片在正常启动状态下就同时采样到B O O T 1为低电平,B O O T 0为高电平,S TM 32F 10x 芯片将从系统存储器启动㊂由于S TM 32F 10x 芯片在出厂前已将B o o t l o a d e r 程序烧写到系统存储器中,此时S TM 32F 10x 芯片将开始运行B o o t l o a d e r 程序,进入加载程序的模式下㊂S TM 32F 10x 芯片通过串行通信接口准备开始加载应用程序,由于串行通信接口的发送脚T X D 和接收脚R X D 接到C H 340上,经过C H 340完成串行通信接口和U S B 接口协议的转换后,再通过电脑上的M C U I S P 软件设置后,就可以将电脑上需要下载的应用程序下载到S TM 32F 10x 芯片主闪存存储器中㊂程序下载完成后,M C U I S P 软件再次控制D T R#输出高电平,通过三极管控制T P 2使得S TM 32F 10x 芯片的复位信号R S T#为低㊂同时控制R T S #输出高电平,通过三极管控制T P 1使得B O O T 0信号为低㊂由于R S T#为低,系统再次进入复位状态,复位时间大约为100m s ㊂100m s 后,R S T#信号恢复正常,S TM 32F 10x 芯片进入正常启动状态,由于此时B O O T 0信号为低,B O O T 1信号也为低,此时系统将主闪存存储器启动㊂主闪存存储器此时已经下载了新的应用程序,因此系统实际上开始运行此应用程序㊂通过上面两个步骤,整个电路实现了下载应用程序并且下载完成后自动运行此程序的一键串行下载的功能㊂整个过程不是通过硬件跳线而是通过软件的方式来实现程序的自动下载和运行,方便了S TM 32F 10x 系统应用程序的调试和测试,从而大大提高了S TM 32F 10x 系统的开发效率㊂3 一键串口下载电路的调试在调试一键串行下载电路时,除了要保证一键串行电路本身没问题之外,还需要确保S TM 32F 10x 最小系统硬件电路都正常㊂这样再通过安装在电脑上的M C U i c d I S P 软件才能正常地将程序下载到S TM 32F 10x 芯片㊂下面分别说明两部分电路的调试步骤和方法㊂3.1S T M32F10x最小系统硬件电路的调试同其它的嵌入式处理器系统一样,要保证S T M32F10x 最小系统硬件电路正常运行,就必须从以下几个方面来加以测试和调试:①电源信号㊂我们以S TM32F103Z E T6为例来说明S TM32F10x 最小系统电源部分电路的调试步骤㊂S TM32F103Z E T6采用3.3V供电,首先用万用表测量电源模块输出的3.3V电源信号正常,同时令示波器3.3V电源信号的纹波不要超标(3.3Vʃ5%)㊂然后测量S TM32F103Z E T6的电源引脚(17㊁52㊁39㊁62㊁72㊁84㊁95㊁108㊁121㊁131㊁144㊁31㊁33)上3.3V电源信号都正常㊂②复位信号㊂S TM32F103Z E T6的复位引脚为第25脚且低电平有效㊂所以在S TM32F103Z E T6正常工作时,一定要保证复位引脚的信号为高电平㊂用万用表测量第25引脚,确保正常工作时此引脚信号为高电平㊂③时钟信号㊂S TM32F103Z E T6的时钟电路主要包括一个高速外部时钟和振荡电路以及一个低速外部时钟和振荡电路㊂高速外部时钟和振荡电路提供的时钟信号供C P U内部高速的系统时钟来使用,低速外部时钟和振荡电路提供的时钟信号供C P U内部实时时钟和其他定时功能提供一个低功耗且精确的时钟源㊂在S TM32F103Z E T6未下载初始化程序之前,芯片内部的系统时钟由内部R C振荡电路来提供㊂因此此时用示波器去测量这两对时钟信号输入脚(8和9㊁23和24)的信号,将测不到振荡的时钟信号,但并不代表此时芯片没有正常工作㊂④J T A G接口电路㊂S TM32F10x芯片提供的J T A G接口电路除了实现对内部电路的测试外,还可以实现对S TM32F10x芯片进行程序的仿真和下载㊂也就是说S TM32F10x芯片可以采用接口来进行程序的下载,一种是本文所述的I S P方式,一种是J T A G方式㊂J T A G接口主要包括T C K㊁T D O㊁T D I㊁TM S㊁T R S T等引脚㊂如果这些引脚设置不当的话,将会使S TM32F10x芯片处于不正常的工作状态,从而影响S TM32F10x芯片的I S P功能的实现㊂因此在进行S T M32F10x芯片在线下载调试前,必须用万用表测量这几个引脚是否处于正常的电平信号㊂要保证T D O㊁T D I㊁T M S㊁T R S T等引脚处于高电平,T C K处于低电平的状态㊂上述4部分电路的信号都正常,才能保证S T M32F10x 最小系统硬件电路处于正常工作状态㊂3.2一键串行下载电路的调试一键串行下载电路的参考电路如图2所示㊂首先保证C H340的电源引脚16是否有5V信号,再确保C H340的辅助电源引脚V3是否正确连接了容量为0.01μF的退耦电容(注意V3在C H340外接3.3V电源信号时也需连接到3.3V的电源信号,与5V供电时不同)㊂然后用示波器测量时钟输入引脚7㊁8是否是时钟振荡信号㊂信号测量正常后再用U S B接口线将单板上的U S B 接口连接到电脑的U S B接口上㊂打开电脑的 设备管理器 的 端口(C OM和L P T) 中将搜索到C H340串口接口,此时表示C H340已经正常工作㊂用基于C H340芯片制作的U S B接口转串口的连接线(市面上有销售)连接P C机和待调试单板㊂然后再在P C机上运行M C U I S P软件,选择芯片类型为 S TM32F10x s e r i e s ,选择串口号为电脑 设备管理器 所识别到的串口号,选中要下载的程序文件,点击 程序下载 ,此时程序就可以顺利地下载到单板的芯片上了㊂4主要创新点和结论本文描述了一种基于C H340芯片实现的S TM32F10x系列处理器的一键串行下载电路㊂此电路可应用于采用S TM32F10x系列处理器实现的嵌入式系统中㊂采用了此电路后,S TM32F10x系列处理器不需要外接专门的价格昂贵的仿真器来进行程序的下载和调试,同时在下载和调试用户应用程序的过程中,不需要手动设置S TM32F10x系列处理器的硬件来启动配置引脚的电平值㊂这极大地降低了S TM32F10x系列处理器的应用成本,同时也大大地提高了该系列处理器实现的嵌入式系统的开发效率㊂根据本方案设计的产品样机已在实践中得到应用和验证㊂参考文献[1]S T.S TM32F103Z E T6d a t a s h e e t.p d f,2009.[2]S T.A p p l i c a t i o n n o t e A N2606:S TM32m i c r o c o n t r o l l e r s y s-t e m m e m o r y b o o t m o d e,2017.[3]江苏沁恒股份有限公司.C H340中文手册(一),2010.(责任编辑:杨迪娜收修改稿日期:2018-01-14)。

基于STM32的多功能程序下载器设计

基于STM32的多功能程序下载器设计

信息通信INFORMATION & COMMUNICATIONS2020年第6期(总第210期)2020(Sum. No 210)基于STM32的多功能程序下载器设计陈聪(江苏航空职业技术学院,江苏镇江212132)摘要:随着智能制逵、控制的不断发展,嵌入式技术被广泛应用到各领城中,其中基于ARMCortex?-M 内核的STM32微处理器使用范围相对较广。

而针对STM32程序的下栽主要是通过JIAG 接口,在某些特殊环境下如需更新应用程序,不一定方便。

丈章旨在设计一种多种方式并存的STM32下载器,该下载器支持有线JTAG 下载方式、串口下载方式、篡 于ORF24L01模块的无线下栽方式,并支持多种常用直流电源供电方式。

丈章详细介绍了该下栽器的硬件电路设计及 设计理念。

关键词:STM32;多功能;下栽器中图分类号:TP311文献标识码:A文章编号:1673-1131(2019)06-0130-030引官随着智能制造与控制技术的不断发展,意法半导体推出 的高性能、低成本、低功耗的STM32系列芯片已经深入到各 应用领域。

目前,STM32系列产品广泛应用于工业控制、消费 电子、物联网、通讯设备、医疗服务、安防监控等应用领域。

现如今,针对STM32的程序下载和在线调试主要使用JTAG 调试接口。

但是在某些特殊应用领域,例如腐蚀、高温、电磁干扰、高速运动中的设备及有毒有害环境等现场条件下 如需实时更新应用程序,利用有线的程序下载方式比较不方 便。

因此,本文主要设计一种多种程序下载方式并存的STM32 程序下载器。

该下裁器支持有线JTAG 通信、RS232串口通信下载方式以及基于2.4G 无线模块nRF24L01的无线数据下载 方式。

在下载器供电方式上,系统支持常用的MINI USB 5V接口供电和12V (或24V )插头供电方式以方便各种应用场合 使用。

下载器功能框图如下图]所示:图1下载器系统框图1下載器电源电路设计1.1 5V 电源电路设计目前,采用5V 直流电源供电方式是嵌入式系统中最常采用的供电方式之一。

基于STM32单片机与双向可控硅调光系统的设计

基于STM32单片机与双向可控硅调光系统的设计

基于STM32单片机与双向可控硅调光系统的设计基于STM32单片机与双向可控硅调光系统的设计,是利用单片机为控制核心通过控制双向可控硅的触发角的大小改变,从而使调光电路中的电压发生了改变,达到灯光亮度可调的目的。

双向可控硅应用于交流调压系统中完成调压、调功最根本的原因是可控硅在交流电路中作为电力电子开关来控制电路通断将电压等效减小。

对于双向可控硅调光系统的设计,在双向可控硅调光的基础上,填加按键控制与采用光敏电阻对实际光照情况进行检测,以单片机控制双向可控硅为调光控制器,最终在系统手动或自动的条件下完成灯光亮度明暗变化。

标签:调光系统;双向可控硅;触发角;单片机控制1总体设计方案根据题目进行分析,预想达到的目的是:完成以STM32单片机为核心,以双向可控硅为控制电路组成光亮可调的照明系统。

通过查找文献与对针对该设计的学习最终得到以下四个步骤进行总体设计,方案如下:(1)通过STM32单片机软件编程控制双向可控硅的导通角度,探究学习并完成双向可控硅的触发电路、同步电路、主电路的设计。

对于本次设计的三个电路,两个角度,两种电流进行详细的设计和规划。

(2)完成双向可控硅可以在STM32单片机的控制下达到可控硅控制照明灯的由暗变亮的循环变化。

通过设计此步骤,对可控硅调压系统有了解和认识,并且用触发角度控制有严密的规划。

(3)通过单片机的外部电路按键进行由按键控制光照强度档位的变化。

并实现自动循环和手动调光的切换模式。

(4)设计并制作光敏电阻采集电路,读取AD值实现由现实光照强度改变灯的光照,并将自动切换模式改为此控制模式。

通过系统上的实验测试,软件编写程序,软硬件调试联调,从设计目的出发,以探究和学习的角度去考虑每一个步骤。

最终完成本次设计。

2硬件设计基于STM32单片机与双向可控硅调光系统的设计,通过使用光敏电阻的光亮采集模块对STM32单片机传输模拟量的电压值反应实际光照强度,并通过单片机输出脉冲信号,使双向可控硅的触发角相位发生改变,实现对光照系统电压的调节,导致光照系统的光亮明暗变化。

STM32串口通信程序及下载步骤

STM32串口通信程序及下载步骤

STM32串口程序及下载步骤一、时钟定义void RCC_Configuration(void){ErrorStatus HSEStartUpStatus;//将外设RCC寄存器重设为缺省值RCC_DeInit();// 设置外部高速晶振(HSE)RCC_HSEConfig(RCC_HSE_ON);// 等待HSE起振HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus == SUCCESS){// 使能或者失能预取指缓存FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// 设置代码延时值FLASH_SetLatency(FLASH_Latency_2);// 设置AHB时钟(HCLK): HCLK = SYSCLKRCC_HCLKConfig(RCC_SYSCLK_Div1);// 设置高速AHB时钟(PCLK2): PCLK2 = HCLKRCC_PCLK2Config(RCC_HCLK_Div1);//设置低速AHB时钟(PCLK1): PCLK1 = HCLK/2RCC_PCLK1Config(RCC_HCLK_Div2);// 设置PLL时钟源及倍频系数// PLLCLK = HSE*PLLMul = 8*9 = 72MHzRCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);//使能 PLLRCC_PLLCmd(ENABLE);//检查指定的RCC标志位设置与否// Wait till PLL is readywhile(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 设置系统时钟(SYSCLK)RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//返回用作系统时钟的时钟源// Wait till PLL is used as system clock sourcewhile(RCC_GetSYSCLKSource() != 0x08);}}二、中断定义void NVIC_Configuration(void){#ifdef VECT_TAB_RAM// Set the Vector Tab base at location at 0x20000000NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);#else// Set the Vector Tab base at location at 0x80000000NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);#endifNVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);}三、串口定义void USART_Configuration(void){//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC _APB2Periph_AFIO, ENABLE);//USART1_TX PA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);//USART1_RX PA.10GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能 NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器USART1//USART 初始化设置USART_ART_BaudRate = 9600;//一般设置为9600;USART_ART_WordLength = USART_WordLength_8b;USART_ART_StopBits = USART_StopBits_1;USART_ART_Parity = USART_Parity_No;USART_ART_HardwareFlowControl =USART_HardwareFlowControl_None;USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启接收中断USART_Cmd(USART1, ENABLE); //使能串口}四、接收中断u8 USART_RX_BUF[64]; //接收缓冲,最大64个字节.//接收状态//bit7,接收完成标志//bit6,接收到0x0d//bit5~0,接收到的有效字节数目u8 USART_RX_STA=0; //接收状态标记void USART1_IRQHandler(void) //串口1中断服务程序 {u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据if((USART_RX_STA&0x80)==0)//接收未完成{if(USART_RX_STA&0x40) //接收到了0x0d{if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始else USART_RX_STA|=0x80; //接收完成了}else //还没收到0X0D{if(Res==0x0d)USART_RX_STA|=0x40;else{USART_RX_BUF[USART_RX_STA&0X3F]=Res ;USART_RX_STA++;if(USART_RX_STA>63)USART_RX_STA=0; //接收数据错误,重新开始接收}}}}}五、主函数while(1){if(USART_RX_STA&0x80){len=USART_RX_STA&0x3f;//得到此次接收到的数据长度printf("\n您发送的消息为:\n");for(t=0;t<len;t++){USART1->DR=USART_RX_BUF[t];while((USART1->SR&0X40)==0);//等待发送结束}printf("\n\n");//插入换行USART_RX_STA=0;}else{times++;if(times%200==0)printf("请输入数据,以回车键结束\n");Delay(0xFFFF);}}}备注:本代码基于stm32f103RBT6,开发环境keil4 。

STM32串口下载方法

STM32串口下载方法

经过两天的努力终于把刚做的STM32最小系统版调试好了,做了两件事:一,把串口调通了,可以往PC机上发送数据。

二,可以进行串口下载了。

今天把串口下载的步骤记录下来……
当然要进行串口下载首先要将232电路调通,保证可用,就就是无障碍的与PC通讯。

然后将写好编译好的 HEX文件载入下载即可,这里STM32的识别hex 文件的,这点比LM3S系列的ARM 强。

首先要到网上下载
Flash_Loader_Demonstrator_V2、1、0_Setup这个串口下载的上位机软件,就是安装版的,网上到处都就是,去ST官方网站去下载也可以。

串口下载程序软件:
官方:、、、 ro/
安装好后打开软件进行设置:
串口对应好了就可以了其她的不用管。

注意当您单击Next下一步的时候,可能会弹出一个对话框:
首先要检查两个Boot引脚,应该就是Boot0=1;Boot1=0(接地),如果没错,对MCU重新上电就可以了。

然后单击Next进行下一步:
Next:
Next:
OK!成功!!。

编写适用于STM32的ISP下载器程序

编写适用于STM32的ISP下载器程序

前一阵公司外购了一些控制器,配合公司的开关一起发给用户。

发货前领导认为控制器开机界面会出现我们进货厂家的LOGO不好,应该改成我们公司的名称。

于是与控制器厂家协调,让他们把开机欢迎界面改动一下。

没几天对方发过来一个ISP下载器,我们用它把控制器的程序升级了一下,就改过来了。

闲来无事,感觉这个ISP下载器很有意思。

之前我们升级程序,因为还没有着手开发远程自动升级功能,必须到现场去升级。

而且用的STM32F103的处理器本身不具备作为主机使用USB的功能,升级的时候使用串口。

所以当设备安装在现场的话,就需要带着笔记本,USB转串口线去现场,比较麻烦。

而且,笔记本一来体积大,本来出去带着工具什么的东西就很麻烦,再带着本就更头疼;二来在现场也不好用,有转接口不好使的问题,也有其它原因,比如可能需要爬杆,在几米高的杆上抱着本给设备升级是很恐怖的事情。

鉴于此,感觉这个ISP下载器还是比较好的一款东西。

当然,对方厂家给我们发过来的这款下载器是针对他们用的处理器的,跟我们的不合适。

在网上搜索一番,发现还真能找到STM系列的ISP下载器,价格在1200元左右。

比起笔记本来说倒是很合算。

准备买它几个。

当然准备买,那是领导的打算。

我觉得应该可以自己做一下,反正我也有不少空闲时间。

于是便行动起来。

首先,我先在网上找了一款免费的串口监听工具“串口监控精灵”下载安装好。

然后将我们的控制器与PC用串口连接好。

打开监控精灵,然后打开“串口调试助手”,向终端发送命令。

发现监控精灵可以很好的将串口间的上下通信显示出来,并且会给出对串口进行配置的显示。

这样,在ISP模式下给控制器上电,在PC上打开STM的flashloader,配置好,下发一个源程序,分析监控精灵的数据:序号 , 时间, 进程(PID) , IO类型 , COM口 , 数据长度 , 数据 ,1,14:15:38,hypertrm.exe(3708),IRP_MJ_CREATE,COM3,0,,2,14:15:38,hypertrm.exe(3708),IOCTL_SET_QUEUE_SIZE ,COM3,8,QueueSize.InSize: 8192, QueueSize.OutSize: 8192,3,14:15:38,hypertrm.exe(3708),IOCTL_SET_BAUD_RATE ,COM3,4,115200,4,14:15:38,hypertrm.exe(3708),IOCTL_SET_RTS ,COM3,0,,5,14:15:38,hypertrm.exe(3708),IOCTL_SET_DTR ,COM3,0,,6,14:15:38,hypertrm.exe(3708),IOCTL_SET_LINE_CONTROL ,COM3,3,WordLength: 8StopBits: 1Parity:0(None),7,14:15:38,hypertrm.exe(3708),IOCTL_SET_CHARS ,COM3,6,Chars Eof: 0, Error: 0, break: 0, Event: 0, Xon: 17, Xoff: 19,8,14:15:38,hypertrm.exe(3708),IOCTL_SET_HANDFLOW ,COM3,16,DCB.fAbortOnError=TRUEDCB.fTXContinueOnXoff=TRUEDCB.fRtsControl=RTS_CONTROL_ENABLEDCB.fDtrControl=DTR_CONTROL_ENABLEDCB.fDsrSensitivity=FALSEDCB->XonLim: 80DCB->XoffLim: 200,10,14:16:08,hypertrm.exe(3708),IRP_MJ_CLOSE,COM3,0,,12,14:16:30,STMicroelectronics flashloader.exe(3872),IOCTL_SET_QUEUE_SIZE ,COM3,8,QueueSize.InSize: 2048, QueueSize.OutSize: 2048,13,14:16:30,STMicroelectronics flashloader.exe(3872),IOCTL_SET_BAUD_RATE ,COM3,4,115200,14,14:16:30,STMicroelectronics flashloader.exe(3872),IOCTL_CLR_RTS ,COM3,0,,15,14:16:30,STMicroelectronics flashloader.exe(3872),IOCTL_CLR_DTR ,COM3,0,,16,14:16:30,STMicroelectronics flashloader.exe(3872),IOCTL_SET_LINE_CONTROL ,COM3,3,WordLength: 8StopBits: 1Parity:0(None),17,14:16:30,STMicroelectronics flashloader.exe(3872),IOCTL_SET_CHARS ,COM3,6,Chars Eof: 0, Error: 0, break: 0, Event: 0, Xon: 17, Xoff: 19,18,14:16:30,STMicroelectronics flashloader.exe(3872),IOCTL_SET_HANDFLOW ,COM3,16,DCB.fAbortOnError=TRUEDCB.fTXContinueOnXoff=TRUEDCB.fRtsControl=RTS_CONTROL_DISABLEDCB.fDtrControl=DTR_CONTROL_DISABLEDCB.fDsrSensitivity=FALSEDCB->XonLim: 2048DCB->XoffLim: 512,19,14:16:30,STMicroelectronics flash loader.exe(3872),IRP_MJ_WRITE,COM3,1, 7F | •,21,14:16:30,STMicroelectronics flash loader.exe(3872),IRP_MJ_CLOSE,COM3,0,, 22,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_CREATE,COM3,0,, 23,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_QUEUE_SIZE ,COM3,8,QueueSize.InSize: 2048, QueueSize.OutSize: 2048,24,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_BAUD_RATE ,COM3,4,115200,25,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_CLR_RTS ,COM3,0,,26,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_CLR_DTR ,COM3,0,,27,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_LINE_CONTROL ,COM3,3,WordLength: 8StopBits: 1Parity:0(None),28,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_CHARS ,COM3,6,Chars Eof: 0, Error: 0, break: 0, Event: 0, Xon: 17, Xoff: 19,29,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_HANDFLOW ,COM3,16,DCB.fRtsControl=RTS_CONTROL_DISABLEDCB.fDtrControl=DTR_CONTROL_DISABLEDCB.fDsrSensitivity=FALSEDCB->XonLim: 2048DCB->XoffLim: 512,30,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,1, 7F | •,31,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,32,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_BAUD_RATE ,COM3,4,115200,33,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_CLR_RTS ,COM3,0,,34,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_CLR_DTR ,COM3,0,,35,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_LINE_CONTROL ,COM3,3,WordLength: 8StopBits: 1Parity:2(E),36,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_CHARS ,COM3,6,Chars Eof: 0, Error: 0, break: 0, Event: 0, Xon: 17, Xoff: 19,37,14:17:34,STMicroelectronics flashloader.exe(2848),IOCTL_SET_HANDFLOW ,COM3,16,DCB.fRtsControl=RTS_CONTROL_DISABLEDCB.fDtrControl=DTR_CONTROL_DISABLEDCB.fDsrSensitivity=FALSEDCB->XonLim: 2048DCB->XoffLim: 512,38,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 00 FF | \#0?,79 | y,40,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 0B | \#11,41,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 22 | ",42,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,11, 00 01 02 11 21 31 43 63 73 82 92 | \#0\#1\#2\#17!1Ccs??,43,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,44,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 02 FD | \#2y,45,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,46,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 01 | \#1,47,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, 04 14 | \#4,48,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,49,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 02 FD | \#2y,50,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,51,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 01 | \#1,52,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, 04 14 | \#4,53,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,54,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 11 EE | \#17?,55,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,56,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 1F FF F7 E0 F7 | ?÷à÷,57,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,58,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 01 FE | \#1t,59,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,60,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, 00 02 | \#0\#2,11 EE | \#17?,62,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,63,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 1F FF F7 E2 F5 | ?÷a?,64,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,65,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 01 FE | \#1t,66,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,67,14:17:34,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, FF FF | ??,68,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 02 FD | \#2y,69,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,70,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 01 | \#1,71,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, 04 14 | \#4,72,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,73,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 02 FD | \#2y,74,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,75,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 01 | \#1,76,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, 04 14 | \#4,77,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,78,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 11 EE | \#17?,79,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,80,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 1F FF F7 E0 F7 | ?÷à÷,81,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,82,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 01 FE | \#1t,79 | y,84,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, 00 02 | \#0\#2,85,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 11 EE | \#17?,86,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,87,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 1F FF F7 E2 F5 | ?÷a?,88,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,89,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 01 FE | \#1t,90,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,91,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,2, FF FF | ??,92,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 00 FF | \#0?,93,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,94,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1,0B | \#11,95,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 22 | ",96,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,11, 00 01 02 11 21 31 43 63 73 82 92 | \#0\#1\#2\#17!1Ccs??,97,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,98,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 11 EE | \#17?,99,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,100,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 1F FF F8 08 10 | ??\#8\#16,101,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,102,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 03 FC | \#3ü,103,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,104,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,4, FF FF FF FF | ????,11 EE | \#17?,106,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,107,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 1F FF F8 0C 14 | ??\#12,108,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,109,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 03 FC | \#3ü,110,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,111,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,4, FF FF FF FF | ????,112,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 11 EE | \#17?,113,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,114,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 1F FF F8 00 18 | ??\#0,115,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,116,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 03 FC | \#3ü,117,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,118,14:17:40,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,4, A5 5A FF FF | ¥Z??,119,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 43 BC | C?,120,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,121,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, FF 00 | ?\#0,122,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,123,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2, 31 CE | 1?,124,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,125,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5, 08 00 00 00 08 | \#8\#0\#0\#0\#8,126,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1, 79 | y,FB | ?,128,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,252, 80 0D 00 20 FD 1E 00 08 E9 1E 00 08 EB 1E 00 08 ED 1E 00 08 EF 1E 00 08 F1 1E 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F3 1E 00 08 F5 1E 00 08 00 00 00 00 F7 1E 00 08 F9 1E 00 08 3D 1F 00 08 41 1F 00 08 45 1F 00 08 49 1F 00 08 4D 1F 00 08 51 1F 00 08 55 1F 00 08 59 1F 00 08 5D 1F 00 08 61 1F 00 08 65 1F 00 08 69 1F 00 08 6D 1F 00 08 71 1F 00 08 75 1F 00 08 79 1F 00 08 7D 1F 00 08 81 1F 00 08 85 1F 00 08 89 1F 00 08 8D 1F 00 08 91 1F 00 08 95 1F 00 08 99 1F 00 08 9D 1F 00 08 A1 1F 00 08 A5 1F 00 08 A9 1F 00 08 AD 1F 00 08 B1 1F 00 08 B5 1F 00 08 B9 1F 00 08 BD 1F 00 08 C1 1F 00 08 C5 1F 00 08 C9 1F 00 08 CD 1F 00 08 D1 1F 00 08 D5 1F 00 08 D9 1F 00 08 DD 1F 00 08 E1 1F 00 08 E5 1F 00 08 E9 1F 00 08 ED 1F 00 08 F1 1F 00 08 F5 1F 00 08 | ?\#13\#0 y\#0\#8é\#0\#8?\#0\#8í\#0\#8?\#0\#8?\#0\#8\#0\#0\#0\#0\#0\#0\#0\#0\#0\#0\#0\#0\#0\#0\#0\#0ó\#0\#8?\#0\#8\#0\#0\#0\#0÷\#0\#8ù\#0\#8=\#0\#8A\#0\#8E\#0\#8I\#0\#8M\#0\#8Q\#0\#8U\#0\#8Y\#0\#8]\#0\#8a\#0\#8e\# 0\#8i\#0\#8m\#0\#8q\#0\#8u\#0\#8y\#0\#8}\#0\#8?\#0\#8?\#0\#8?\#0\#8?\#0\#8?\#0\ #8?\#0\#8?\#0\#8?\#0\#8?\#0\#8¥\#0\#8?\#0\#8-\#0\#8±\#0\#8μ\#0\#81\#0\#8?\#0\#8á\#0\#8?\#0\#8é\#0\#8í\#0\#8?\#0\#8?\#0\#8ù\#0\#8Y\#0\#8á\#0\#8?\#0\#8é\#0\#8í\#0\#8?\#0\#8?\#0\#8,129,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,1,7C | |,130,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1,79 | y,131,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,2,31 CE | 1?,132,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1,79 | y,133,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,5,08 00 00 FC F4 | \#8\#0\#0ü?,134,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_READ,COM3,1,79 | y,135,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,1,FB | ?,136,14:18:20,STMicroelectronics flash loader.exe(2848),IRP_MJ_WRITE,COM3,252,F9 1F 00 08 FD 1F 00 08 01 20 00 08 05 20 00 08 09 20 00 08 0D 20 00 08 11 20 00 08 15 20 00 08 19 20 00 08 1D 20 00 08 21 20 00 08 25 20 00 08 29 20 00 08 DF F8 40 03 01 68 01 F4 E0 61 DF F8 3C 23 11 43 01 60 BF F3 4F 8F FE E7 F0 B4 DF F8 30 23 00 23 1C 46 1D 46 01 E0 64 1C 6D 1C 0A 2D 13 D2 B1 FB F2 F6 06 F1 30 07 1F 54 5B 1C 02 FB 16 11 0A 26 B2 FB F6 F2 1E 18 16 F8 01 6C 30 2E EB D1 00 2C E9 D1 00 23 E8 E7 F0 BC 70 47 30 B4 0A 46 00 21 0B 46 04 78 30 2C 37 D1 44 78 78 2C 01 D0 58 2C 32 D1 84 78 00 2C 01 D1 08 46 5A E0 02 24 03 E0 57 3D 05 EB 03 13 64 1C 0B 2C 04 D2 25 5C 00 2D 05 D1 13 60 01 21 0B 2C 4A D3 00 21 48 E0 41 3D ED B2 06 2D 09 D3 25 5C 61 3D ED B2 06 2D 04 D3 25 5C 30 3D ED B2 0A 2D ED D2 25 5C 30 3D EDB2 0A 2D 25 5C 01 D2 30 3D | ù\#0\#8y\#0\#8\#1 \#0\#8\#5 \#0\#8\#9 \#0\#8\#13 \#0\#8\#17 \#0\#8 \#0\#8 \#0\#8 \#0\#8! \#0\#8% \#0\#8) \#0\#8??@\#3\#1h\#1?àa??第二篇前一篇本意是把400行左右的监控代码全部粘贴完的,但是发完博文后发现仅仅能显示一百三十来行的内容,想如果把四百行都粘贴完,恐怕仅这些数据就得几篇节。

STM32程序3种下载方式说明

STM32程序3种下载方式说明

下面介绍U-Link、J-Link和ISP下载STM32程序的配置方法,以MDK3.24为例,也可以使用MDK3.80或者更高版本的MDK,过程类似。

此文档仅供学习和交流使用。

STM32程序U-Link下载说明(1)ULink下载工具如图1所示。

图1 ULink下载工具(2)双击MDK安装文件图标进行安装,在后续出现的窗口中依次点击Next按钮,直到安装完成(默认安装路径是C:\Keil,建议换个路径名,比如C:\Keil MDK324文件目录下,以防止与51单片机开发环境冲突)。

安装好后,未输入License的MDK,在开发时会有代码量的限制。

(3)输入License:选择File菜单下的License Management子菜单,如图2所示。

图2 File菜单下的License Management子菜单(4)将License序列号拷贝到License Management中的New License ID Code(LIC)中,点击ADD LIC完成,如图3所示。

图3 输入License序列号(5)运行序列号生成程序,打开破解补丁:(部分杀毒软件可能会将这个文件误报为病毒文件,这时不必理会杀毒软件的警告,并将这个文件设为信任文件或者直接关掉杀毒软件),运行压缩包中程序,按图4所示配置,将Target下拉选项选中“arm”。

图4 输入CID,获得序列号将Keil软件“License Management”对话框中的Computer CID中的内容:拷贝到此程序的CID中:,然后点击按钮,获得序列号。

(6)将生成的序列号拷贝到“License Management”对话框的LIC区域中:然后,点击“Add LIC”,出现图5所示的内容,点击“Close”关闭对话框。

图5 添加LIC序列号(7)将文件夹Bin目录中的3个文件“UL2ARM_RDI.dll”、“UL2ARM_ULINK1.dll”、“UL2CM3_ULINK1.dll”拷贝到MDK安装目录下的\ARM\Bin目录中。

STM32无线下载程序

STM32无线下载程序

STC 主要电路: PC 端串口下载软件:
STC 程序部分:
// STC15F104 程序 for STM32 Download // STM32 下载串口为偶校验 // 模拟串口设置为 115200bps 偶校验 // ESP8266wifi 为 STA 模式
// PC 端 8266 为 AP 模式,需首次设置 AT+CWSAP="STM32Download","Download01",7,3 掉电仍保存
{
Delayms(10);
Dend_CNT++;
if(Dend_CNT >80) {Download=0; Dend_CNT=0;
Boot0=0; RST=0;Delayms(100);RST=1; //复位延时 100ms
}
}
/*
if (TEND)
{
if (t != r)
{
TEND = 0; if( buf[t++ & 0x0f] ==0x7F ) TBUF =0x91; else TBUF = buf[(t-1) & 0x0f];
无线下载时只需注意到两次复位即 Boot0 电平变化即可,所以简单来说只需:辅助单片机 STC 监测串口中有无连续 5 个以上的 0x7F(也可以多几个),将 Boot0 拉高,立即复位 STM32,接着 STC 等待串口中无数据后再将 Boot0 拉低,接着复位 STM32 即可。
无线串口利用 ESP8266 的透传模式,即 A 端发什么,B 端就收什么(A、B 两者能互发), 由于 ESP8266 断电后会自动关闭透传模式,故每次上电时需要 STC 单片机初始化下 ESP8266 为透传模式。无线下载机构如下(PC 端也需上电初始化为透传模式):

使用串口来给STM32下载程序

使用串口来给STM32下载程序

前言第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成。

后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进行在线调试,所以后来就很少使用串口来下载程序了。

前几天在uFUN试用群里看到有几个朋友在使用串口下载程序时,遇到了各种各样的问题,所以在这里简单介绍一下如何通过串口来给STM32下载程序。

STM32的启动模式介绍从STM32参考手册上,可以查阅到,STM32的启动模式,共有下列三种,可以通过BOOT0和BOOT1电平的不同组合,来选择不同的启动模式。

关于这几种模式的介绍,下面是我个人的理解:主闪存启动模式:即运行模式,单片机上电即运行程序。

系统存储器启动模式:即串口下载模式。

上电之前要先设置BOOT0=1,BOOT1=0,然后才能通过串口下载程序。

或者在已经上电的情况下,设置BOOT0=1,BOOT1=0,然后按一下复位键,这样也能通过串口下载程序。

SRAM启动模式:即调试模式。

假如我只修改了代码中一个小小的地方,如果直接擦除整个Flash,比较费时,而且Flash的擦写次数也是有限制的。

所以可以考虑从RAM中启动代码,用于快速的程序调试,等程序调试完成后,再将程序下载到Flash中。

有的朋友可能遇到过这种情况:程序第一次下载的时候可以运行,但是掉电重启之后,程序就不能运行了。

这种情况就有可能是把BOOT设置成了串口下载模式,所以掉电之后,并不会自动运行。

如果想要即使掉电重启也能直接运行程序,可以把BOOT设置为主闪存启动模式,即BOOT0=0。

安装USB串口驱动在进行串口下载程序之前,如果串口芯片的驱动程序没有安装,那么电脑不能识别串口,如上图所示,设备管理器里有一个未识别的设备。

在安装串口驱动之前,要先确定开发板所使用的串口芯片,我们的uFUN开发板使用的是CH340串口芯片。

这里我提供了几个常用串口芯片的驱动程序下载地址,大家如果使用其他的串口芯片,要安装对应的驱动程序:▪CH340:CH340/CH341USB转串口WINDOWS驱动程序▪PL2302:PL2303 Windows Driver Download▪CP2102:CP210x USB转UART桥接VCP驱动程序▪FT232:FT232R USB UART Driver Download如果驱动安装成功,在设备管理器里可以看到该设备对应的串口号:设置启动模式为系统存储启动模式上电前,设置BOOT0=1,BOOT1=0。

STM32程序ISP下载方法

STM32程序ISP下载方法

如果是板载的usbttl串口模块此步骤可以省略板载的usb串口和stm32单片机默认就是这样、STM32 的板子的串口 ISP 下载方法:Boot0 接到 3.3V 上,Boot1 接到 GND,对板子 重新上电,STM32 单片机重启的时候,会进入到 ISP 模式。 2、硬件连接: 首先要有一个 USB 转 TTL 串口板子,或者 STM32 的板载上有 USB 转 TTL 串口模块。 USB转TTL板子的TXD与STM32的RXD1 连接。 USB转TTL板子RX D与和STM32的TXD1 连接,USB 转 TTL 的 GND 接 STM32 的 GND。 如果是板载的 USB 转 TTL 串口模块,此步骤可以省略,板载的 USB 串口和 STM32 单片机默认就是这样连接的(详 细看原理图) 。 STM32 板子供电,可以使用 USB 转 TTL 供电,也可以使用 STM32 自带的 USB 线供电。 3、这个时候,使用串口 ISP 下载软件:

基于现场可编程逻辑门阵列的STM32单片机自动下载通用串行总线的设计

基于现场可编程逻辑门阵列的STM32单片机自动下载通用串行总线的设计

基于现场可编程逻辑门阵列的STM32单片机自动下载通用串行总线的设计张君涵;唐灏;张玉华【期刊名称】《信息记录材料》【年(卷),期】2022(23)3【摘要】通常对STM32单片机的烧录方式有在系统编程(in-system programming,ISP)与在电路编程(in-circuit programmer,ICP)两种方式,而两种方式都需要安装特定驱动与专业软件的电脑执行,这无疑对受环境限制无法使用电脑或没有一定专业知识的用户造成困扰。

本项目利用现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)和STM32协同开发一款可下载固件的通用串行总线(universal serial bus,USB)。

受FOTA技术(固件更新技术)的启发,该项目把从电脑端编译好的二进制文件或十六进制文件通过STM32 hal库生成的虚拟USB 下载到作为闪存(Flash)的W25Q64芯片里,通过STM32与FPGA的通信,把数据从Flash里取出,通过串口发送给FPGA,把FPGA作为随机存储器(Access Memory,RAM)实现数据流速度可调节的输出。

【总页数】4页(P108-111)【作者】张君涵;唐灏;张玉华【作者单位】河海大学【正文语种】中文【中图分类】TP279【相关文献】1.基于现场可编程逻辑门阵列的车牌识别系统设计2.现场可编程门阵列在微系统逻辑设计和测试中的应用3.现场可编程门阵列第二讲现场可编程门阵列(FPGA)设计4.基于现场可编程门阵列的新型可编程逻辑控制器在线调试技术5.基于现场可编程逻辑门阵列的多优先级改进型载波感知多址协议在Ad Hoc网络中的实现和性能因版权原因,仅展示原文概要,查看原文内容请购买。

STM32F10x一键串口下载的电路设计与调试

STM32F10x一键串口下载的电路设计与调试

STM32F10x一键串口下载的电路设计与调试盛春明【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2018(18)5【摘要】设计了一种实用的STM32F10x系列处理器一键串口下载电路.通过此电路 STM32 F10 x系列处理器可以通过ISP方式将调试PC机上用户编写的应用程序下载到芯片内部的主闪存存储器中.下载完成后,用户的应用程序不用进行任何硬件模式切换就能马上运行.因此采用此电路后可以极大地减少 STM32 F10 x系列处理器开发应用的时间成本和生产成本.%In this paper,a practical serial port download circuit of STM32F10x series processor is designed.Through this circuit,the STM32F10x series processor can download the application program written by the user on the debug PC machine to the internal flash memory in the chip by ISP.After completing the download,the user's application is run without any hardware mode switching.There-fore,this circuit can greatly reduce the time cost and production cost of the development and application of STM32F10X series processors.【总页数】4页(P67-70)【作者】盛春明【作者单位】深圳技师学院电子信息技术系,深圳 518052【正文语种】中文【中图分类】TP368.1【相关文献】1.基于汽车ECU串口的代码下载与调试方法的实现 [J], 邹娟;曾洁;任博;尤国红2.具有ISP下载与串口通讯功能的下载线的制作 [J], 金杰3.基于串口通信方式实现对工控微处理器的代码下载与调试 [J], 曾洁;贾世杰;陈少华4.远程串口调试通信协议在嵌入式软件调试器设计中的应用 [J], 何先波;钟乐海;芦东昕5.PC机串口与ADSP21160同步串口通信的电路设计与实现 [J], 李涛;陈祝明;汪生和;江朝抒因版权原因,仅展示原文概要,查看原文内容请购买。

STM32一键下载电路详解

STM32一键下载电路详解

STM32一键下载电路详解
以上就是一键下载电路,mcuisp会控制CH340的RTS#和DTR#高低电平的变化,通过控制高低电平的变化,进而控制BOOT0和RESET的状态,我用电压表测试了引脚电平的状态,RTS#和DTR#初始状态时为高电平,在启用下载的时候,DTR#维持高,RTS#拉低,此时Q2和Q3都导通,那么BOOT0为高电平状态,RESET为低电平复位,然后DTR#变低,Q2不导通,复位结束,此时的BOOT0为高电平,那么就会启用串口下载程序,开始和mcuisp下载软件进行通信,进行代码下载,等到代码下载结束时,RTS#先变高电平,然后DTR#在变高电平,如果DTR#先变到电平,那么又会产生复位的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一种利用可控硅实现STM32串口自动下载代码的方法设计
作者:季赛玲
来源:《电脑知识与技术》2018年第11期
摘要:本论文首先简要描述了STM32系列芯片的应用与特点,随后对STM32下载代码及启动方式进行了分析,在此基础上提出了用可控硅实现串口自动下载代码的方式。

期望通过本文的研究能够对STM32系列芯片串口自动下载代码提供一种全新的且简单易行的方法。

关键词:STM32;可控硅;自动下载
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)11-0245-02
1 STM32系列芯片的应用及特点
自从ARM公司2007年首推Cortex内核以后,ST凭借基于ARM Cortex-M3内核的
STM32F1,成为嵌入式芯片市场的最大赢家之一。

特别是STM32F103系列,包括现在的STM32F407系列,更是成为市场上最通用的MCU系列之一。

在功能丰富的同时,拥有着超高性价比,ST的MCU被广泛应用于通信、交通、医疗、物联网、车联网、工业控制等领域。

STM32系列32位微控制器,是基于ARM Cortex-M的微处理器,它能支持基于32位的广泛应用,支持高性能、实时功能、数字信号处理,低功耗及低电压控制,同时拥有一个完全集成并且容易使用的开发环境。

以STM32为应用的产品线非常广泛,有大量的工具和软件作支撑,是众多产品的理想选择。

丰富的型号。

STM32系列从内核上分,可分为:Cortex-M0、Cortex-M3、Cortex-M4、Cortex-M7。

STM32系列从应用上分,大体分为:超低功耗型、主流型、高性能型。

根据内核机性能、功耗的不同,STM32分为“STM32F0系列”、“STM32F1系列”、“STM32F2系列”、“STM32F3系列”、“STM32F4系列”、“STM32F7系列”,及超低功耗的“STM32L0系列”、“STM3L1系列”、“STM32L4系列”。

其中,仅“STM32F4系列”就有180多种型号可供选择,封装灵活,有QFN、LQFP、BGA多种封装。

STM32系列的芯片具有丰富的外设接口,包括FSMC、 TIMER 、SPI 、IIC、 USB 、CAN 、IIS、 SDIO 、ADC 、CDA 、 RTC、 DMA等众多外设及功能,具有极高的集成度。

功耗可以优化,STM32各个外设都有自己独立的时钟开关,可以通过关闭相应的外设时钟来降低功耗。

开发成本极低,STM32支持SWD和JTAG两种调试口,它的开发可以不需要昂贵的
仿真器,SWD仅需两个IO口,即实现调试。

价格非常低廉,比如STM32F030仅售3元一片。

2 串口下载的优点
在很多应用场合,产品时常需要更新代码。

STM32的代码下载有多种方法,比如JTAG、SWD、USB、串口等,其中最佳的选择是串口下载。

通过JTAG、SWD口下载时,需要连接JLINK仿真器;USB口下载时则需要在硬件上增加转换芯片,并要开发相应的驱动及上位机软件。

而通过串口下载,仅需复用原有的串口,无需另增驱动。

不仅可以减少成本支出,而且可以提高产品的可靠性[1]。

3 本方法的设计
STM32有三种启动方式,通过管脚BOOT0和BOOT1设置,两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行,其对应启动模式如下表:
从上表可以看出,STM32通过配置BOOT0的高低点配来配置芯片是处于串口下载模式或是工作模式。

在很多实际应用中,通过拨码开关来配置BOOT0的电平,或是通过串口的DTR 和RST信号,配合上位机软件实现下载。

本方法设计了一个全新的下载电路,通过可控硅控制BOOT0的电平状态,来自动切换STM32的启动方式,不需要用户手动切换,不需要特殊的上位机软件,可以非常方便地下载代码。

3.1设计思路
本方法的设计思路如下图所示,利用STM32通过设置BOOT0实现启动方式切换的特性,自定义串口下载命令,实现串口自动下载代码。

3.2硬件设计
本设计选用可控硅MCR100-6做控制BOOT0电平的开关。

可控硅具有导通和关断两种状态,相当于开关的闭合与断开状态,利用这个特性可用作无触点开关。

其状态切换条件如下表:
可控硅及复位信号的连接方法如下图所示。

BOOT0接至可控硅的阴极K并拉低,阳极A 加3.3V正向电压,控制极G接至STM32的GPIO脚。

当STM32收到烧写命令时,第一步把GPIO置高,控制极G为高,此时阳极A电位与阴极K低阻导通,BOOT0被拉高;第二步把GPIO1置低,复位信号NRST拉低,STM32复位重新启动,BOOT0和NRST保持高电平,此时STM32成功进入烧写模式。

烧写结束后断电重启,STM32重新进入工作模式[2]。

3.3软件设计
自定义下载命令“$DHLCD,1*”及下载标志位“ucFlag_Load=0”。

串口收到烧写命令时,将标志位ucFlag_Load置1,程序跳转至BOOT0、复位信号设置处,进入烧写模式。

代码如下所示:
4 本方法的优点
利用本方法可以实现STM32串口的自动下载,无需另设拨码开关;成本低廉,方法简单易行,代码容易实现。

不需要单独开发驱动及上位机软件,只需要使用ST官网提供的ISP下载软件,即可以实现代码自动烧写。

5 结论
本文在简要分析STM32下载代码及启动方式的基础上,提出了利用可控硅的开关特性实现串口自动下载的方式,并从硬件及软件两个方面对设计进行论述。

本方法已在实际产品中加以运用,取代了原先采用拨码方式实现状态切换的方法。

实践证明,本方法簡单易行,稳定可靠。

参考文献:
[1] 蒙博于.STM32自学笔记[M].2版.北京航空航天大学出版社,2014.
[2] 张洋,刘军.原子教你玩STM32(库函数版)[M].2版.北京航空航天大学出版社,2015.。

相关文档
最新文档