野火指南者串口ISP一键下载原理分析

指南者板子下载电路原理图分析

从原理图上看关于烧写程序的有两个电路;一个是USB转串口;一个是关于ISP一键下载电路;

usb转串口

在这里插入图片描述
指南者板子使用USART1的TX和RX;以及电平转换芯片CH340; USB-MINI接口(这是电脑来的信号,通过转换芯片将USB信号转换为TTL信号),因为单片机识别高低电平用的就是TTL标准。

转换芯片的TXD和RXD出来后接了一个跳帽,然后与指南者板子主控(stm32f103VET6)的串口1的TX和RX相连。实物如下:
在这里插入图片描述

ISP一键下载电路分析

而烧录程序的重点是下面这个电路:
在这里插入图片描述
它的依据是运用了boot的启动方式:芯片手册说明如下:
在这里插入图片描述
这是启动方式说明:而刚刚实物图RXD和TXD的上面就是boot0和boot1,它们默认与GND链接(跳冒链接);即第一个情况:从主闪存存储器启动;下面说了它的地址为0x0800 0000 (看数据手册)得知它就是FLASH;即从FALSH启动;(这是默认情况,所以程序是直接下载到了FLASH)

但是如果我们使用第二种:系统存储器(就是ISP),就需要改变boot0上面的电平(用跳冒,把boot0和3.3v链接)
在这里插入图片描述
在这里插入图片描述
这是和上面实物图对应的原理图,使用第二种ISP模式,那么就是跳冒让J5和J6链接;右边一列是J6和J7链接。
在这里插入图片描述
那么从原理图上看10k接地,就可以把boot0拉低;上面接1k电阻–3v3,那么就可以把boot0拉高,但是如果没有10k电阻,你是没有办法把boot0拉高的;(**标准TTL输入高电平最小2V,输出高电平最小2.4V,典型值3.4V,输入低电平最大0.8V,输出低电平最大0.4V,典型值0.2V。**这里是输出,而用电阻分压可以计算boot0此时拉高的话电平 = 3.3*10/11 = 3v 合理)

而ISP一键下载电路是通过S8550来拉高的;接的1k电阻就是画图的那个1K电阻:
在这里插入图片描述
这里的DTR和RTS则是CH340G芯片上的第十三和第十四引脚;
在这里插入图片描述
而一般的用串口下载软件(上位机)去选择这里的DTR和RST引脚的电平,就是让CH340G对应的13,14引脚(DTR和RST)输出对应的电平;然后去控制ISP一键下载电路;那么刚刚说到要用ISP模式,手册上说boot0得是高电平,从原理图上看就需要三极管S8550导通(3v3-1k-boot0导通)

那么RTS就需要输出低电平(三极管S8550是PNP管)
NPN三极管,箭头朝外:高电平导通
PNP三极管,箭头朝里:低电平导通
那么此时boot0为高电平;boot1默认低电平(启动方式已经配置好了)
那么下一步是就复位(开启启动流程,因为手册上面说了复位后,
SYSCLK的第4个上升沿,EBOOT引脚的值将被锁存(启动方式锁定)
在这里插入图片描述
而NRST复位引脚默认是用10K电阻来拉高的;如果要想拉低电平,那么看ISP一键下载电路中u18的引脚1,2链接了三极管和复位引脚;所以需要S8050导通(那么DTR就需要是高电平);

所以第一步:配置BOOT为ISP模式,BOOT1硬件固定为GND。RTS输出低S8550导通,BOOT0被拉高;第二步:复位,NRST为低(然后按下复位键),让系统重新启动进入ISP模式(此时boot0和boot1引脚电平已经锁定了)。DTR输出高,S8050导通NRST被拉到跟RST一样的低电平。【NRST被拉到复位电平低电平就知道此时Boot0为高电平,从而知道了启动方式】
**此时MCU将从系统存储器启动,通过执行MCU内部固化的ISP下载引导程序,实现串口在线编程(必须通过USART1接收数据)。**系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。第三步:系统进入ISP模式后,让BOOTO和NRST还原成原来的状态即可(boot0跳帽还原,接GND)第四步:ISP下载完毕之后(程序下载至内部FLASH)此时系统还是不知道要从哪里执行,此时要重新检测booto和boot1引脚电平(重新检测通过上位机控制RTS和DTR引脚实现)),就知道boot0和boot1都是GND,那么就从内部FLASH开始启动(而内部FLASH里面的东西,就是刚刚通过串口下载进去的文件)

而仔细看一键下载电路:右边一部分的作用是什么?
实际过程中:如果没有右边的电路,会发现CH340输出的两个DTR/RTS电平会经过一段时间的不稳定状态,导致复位多次;那么为了解决这个才加入了右边电路;U18的EN只有使能后,才能让1,2导通,那么复位引脚才可以检测boot0的状态,那么比如不稳定时间是500ms,而让EN从不使能到使能的时间大于500ms,那么这个问题便会迎刃而解,所以加入了右边的电容充电电路;首先3V3会给电容充电,当电容充满后,电压就会稳定(此时就是高电平,EN使能,实际测试,这个使能时间大概1s),那么此时使能了,然后此时CH340输出的两个引脚电平也稳定,所以才不会出现上述情况。

那么为什么软件上的设置低电平和高电平和对应之前说的三极管导通的电平对应不上呢?甚至是相反的,这就和TTL电平和RS232标准电平有关了,而上位机那个设置是按照RS232来的,所以电平设置相反了,因为两者电压都不一样。

接下来 启动方式boot0 = 1;boot1 = GND 去下载一个野火例程:(自己写的例程)

使用的下载软件为cubeprogramm:(例程用
1.首先改跳帽子:boot0 = 1(接3v3),boot1不变 接GND;
在这里插入图片描述
Flymcu是用RS232便准去设置RTS和DTR的;而这个cubeprogramm需要相反设置:然后点击connect;
在这里插入图片描述
如果出现这个情况,就需要重新connect,并且同时按下板子上的复位键:
在这里插入图片描述
此时已经connect成功;
在这里插入图片描述
选择要下载的hex文件(bin文件也是可以的)
在这里插入图片描述
选择好文件,然后programm下载:出现complete即下载成功;
此时板子上还没有反应,此时需要把boot0和boot1的跳帽还原;然后按下复位键,开始运行(现象正常)

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值