IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32 ISP串口下载 -> 正文阅读

[嵌入式]stm32 ISP串口下载

1 ISP概念

????????ISP(In-System Programming)?在系统可编程,指电路板上的空白器件可以编程写入最终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用 ISP 方式擦除或再编程。ISP 的时候需要用到(bootloader)自举程序,自举程序存储在 STM32 器件的内部自举ROM 存储器(系统存储器)中。其主要任务是通过一种可用的串行外设( USART、 CAN、USB、 I2C 等)将应用程序下载到内部 Flash 中。每种串行接口都定义了相应的通信协议,其中包含兼容的命令集和序列。ISP是一种通用的程序下载方式,AVR单片机都有ISP下载接口。可以通过ISP下载线或者STK500百度把程序下载到单片机中。?ISP下载线成本低廉,制作简单,一个并口ISP下载线只需几十元即可得到。开发工具成本低也是AVR单片机的优势之一。

????????ISP、IAP的区别与联系:

????????ISP是指可以在板级上进行编程,而不用把芯片拆下来放到烧写器中,即不脱离系统,所以称作“在系统编程”,它是对整个程序的擦除和写入,通过单片机专用的串行编程接口对单片机内部的Flash存储器进行编程。即使芯片焊接在电路板上,只要留出和上位机接口的串行口就能进行烧写。IAP同样是在板级上进行编程,MCU获取新代码并对程序的某部分重新编程,即可用程序来改变程序,修改程序的一部分达到升级、消除bug的目的,而不影响系统的其它部分,烧写过程中程序可以继续运行,另外接口程序是自已写的,这样可以进行远程升级而不影响应用。IAP的实现更加灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。

????????从基本功能来看,IAP程序与ISP程序所做的事情好像是一样的,都是引导加载程序,所以网上有很多文章把IAP程序与ISP程序都称为BootLoader程序,要注意区分。但是,ISP与IAP还是有点区别的。
????????STM32内部Flash分为两部分,System Flash和User Flash。上电之后执行哪个Flash里的程序有boot脚来控制。System Flash内存放的是ST官方编写的自举程序(ISP程序),我们是没有办法改变的。User Flash是我们可以使用的Flash空间,我们编写的代码就是要烧录到User Flash中。我们可以把User Flash分为两部分,前面一部分空间用于烧写我们编写的IAP程序,后面一部分用于烧写我们编写的应用程序。其中,IAP程序用于更新我们的应用程序。ISP程序用于把我们编写的程序更新到0x08000000地址上,如果我们的产品中的程序有IAP程序+应用程序,则此时0x08000000地址存放的程序就是IAP程序。ISP程序、IAP程序、应用程序的关系示意图如下:

?????????如果我们的产品中的程序只有应用程序,则此时0x08000000地址存放的程序就是应用程序。ISP程序、应用程序的关系示意图如下:

2 BOOT配置

主闪存存储器 (Main Flash memory,X0)STM32内置的Flash,一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x0000 0000 或 0x0800 0000。
系统存储器 (System memory,01)从系统存储器启动,这种模式启动的程序功能是由厂家设置的。系统存储器是芯片内部一块特定的区域,STM32在出厂时,由ST在这个区域内部预置了一段BootLoader, 也就是我们常说的ISP程序, 这是一块ROM,出厂后无法修改。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的BootLoader中,提供了串口下载程序的固件,可以通过这个BootLoader将程序下载到系统的Flash中。但是这个下载方式需要以下步骤: Step1:将BOOT0设置为1,BOOT1设置为0,然后按下复位键,这样才能从系统存储器启动BootLoader Step2:最后在BootLoader的帮助下,通过串口下载程序到Flash中 Step3:程序下载完成后,又有需要将BOOT0设置为GND,手动复位,这样,STM32才可以从Flash中启动。主闪存存储器被映射到启动空间(0x0000 0000),但仍然能够在它原有的地址(0x0800 0000)访问它,即闪存存储器的内容可以在两个地址区域访问, 0x0000 0000 或 0x0800 0000。
内置SRAM ( Embedded Memory,11)内置SRAM没有程序存储的能力,这个模式一般用于程序调试。代码中一个小小的地方的修改,需要重新擦除整个Flash自然是比较的费时,可以考虑从这个模式启动代码(也就是STM32的内存中),用于快速的程序调试,等程序调试完成后,再将程序下载到SRAM中。只能在0x2000 0000开始的地址区访问SRAM。

????????为什么设置从System Memory启动就可以使用串口来下载我们的程序呢?那是因为在芯片出厂前ST官方已经把一段自举程序(BootLoader程序)固化到这一块存储区。对于STM32F103ZET6来说,System Memory的起始地址为0x1FFFF000,可在芯片手册的内存映射图里找到:

????????其通过串口来接收数据并烧写到用户闪存存储器的起始地址(0x08000000)。只能烧写到这个地址,若keil里设置的地址不是这个地址,则编译出来的文件将烧录不成功。(用户闪存,即User Flash,同时也称为Main Flash)。
????????这一段BootLoader程序源码是没有开源出来的,用户是不可修改的。IAP程序通过FlyMCU软件进行烧录,烧录的地址就是0x08000000。
????????注意:不同系列不同型号的STM32固化的BootLoader是不同的,即使用的通讯接口是不同的。如STM32F1xxx系列只支持USART1:

?????????STM32F4xxx系列只支持USART1、USART3、CAN2等接口:

????????在项目实际应用中的Boot设置:默认使用程序代码存储在主闪存存储器,配置方式:BOOT0=0,BOOT1=0,但是要预留boot0上拉电阻工位,便于将其电平拉高,实现串口烧录。

????????1)配置BOOT为ISP模式,如上图所示,只需要通过改变RTS电位使S8550是否导通,通过控制RTS引脚电路导通时实现Boot0高电平(即RTS为低电平),此时BOOT1为低电平接地。
????????2)一旦完成Boot0与Boot1的10设置后,需要实现通过复位从系统存储器启动,RESET为低时系统复位,让系统重新进入ISP模式,通过上图可发现,复位脚RESET通过10K电阻默认接高电平,若需要复位则需要该脚置为低电平,即通过S8050导通(即DTR为高电平)使得RESET下拉电阻端电位与RTS都处于低电位,完成复位启动操作。
????????通断时间以及为何使用模拟开关而不是直接将这两端通过硬件相连:右端100K电阻情况下,3.3V对电容充电至2V的时间约为1s–大概计算公式参考RC串联电路:uC=E(1?e^(-t/RC)) (数字电路中,由TTL电子器件组成电路使用的电平。规定输出高电平>2.4V,输出低电平<0.4V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。),当达到最小输入高电平时EN使能端为1,模拟开关的1端与2端导通,这就很好的滤除了CH340G下载开始时DTR与RTS不稳定所引起的复位问题【通常是500ms】–☆这是串口ISP下载电路一个优化方案,想缩短时间可以改小R或者C(通常减小R)。
????????3)系统进入ISP模式后,让BOOT0(为低电平,即RTS高电平)和RESET(为高电平,即DTR为低电平)还原成原来的状态即可(通过上位机控制RTS和DTS引脚实现),复位后一段时间后会锁存两个Boot脚的电位。(在STM32F10XXX手册里的解释为:在系统复位后,SYSCLK的第4个上升沿,BOOT管脚的值将被锁存。锁存后Boot值的更改不会造成影响----一般上位机控制RTS和DTR实现)
????????4)ISP下载完毕后,程序自动运行。?

????????我们需要注意一点:CH340G上电后DTR#和RTS#都为高电平,在用MCUISP烧写软件时,我们在软件下方选择“DTR的低电平复位,RTS高电平进BootLoader”,CH340G IC在实际操作时引脚的变化为“DTR#拉高,RTS#拉低”,即软件设置和实际情况是取非的,相反的
????????首先,FlyMcu软件控制DTR输出低电平,则DTR#引脚输出高, 然后RTS置高,则RTS#引脚输出低,这样Q3导通了,BOOT0被拉高,即实现设置BOOT0为1,同时Q2也会导通,STM32的复位脚被拉低,实现复位。
????????然后,延时100ms后,FlyMcu软件控制DTR为高电平,则DTR#引脚输出低电平,RTS维持高电平,则RTS#引脚继续为低电平,此时STM32的复位引脚,由于Q2不再导通,变为高电平,STM32结束复位,但是BOOT0还是维持为1,从而进入ISP模式,接着mcuisp就可以开始连接STM32,下载代码了,从而实现一键下载。?

????????DTR#和RTS#信号的时序图如下图所示:??

????????程序下载完毕后,如果设置了编程后执行,STM32会再次被复位,此时DTR#引脚为高,RTS#引脚为低,STM32复位后,DTR#引脚设置为低,RTS#引脚设置为高,那么Q2和Q3都不导通,此时,STM32重新开始启动后,检测到BOOT0为0,程序开始正常运行,一键下载至此就完成了。

3 ISP普通下载

????????1)电脑通过 USB 转串口线连接 STM32 的 USART1,并打开电脑端的上位机
????????2)设置跳线保持 BOOT0 为高电平,BOOT1 为低电平
????????3)复位单片机使其进入 bootloader 模式,通过上位机下载程序
????????4)下载完毕,设置跳线保持 BOOT0 为低电平,BOOT1 为低电平
????????5)复位单片机即可启动用户代码,正常运行

4 串口下载程序mcuisp

????????1)搜索串口,设置波特率 115200(或者更低的波特率,否则容易出错
????????2)选择要下载的 HEX 文件,勾上“编程前重装文件”???????
? ? ? ? 3)选择校验、编程后执行
????????4)选择DTR 低电平复位,RTS 高电平进入bootloadermcuis软件就是按RS232标准设计的,所以这里采用负逻辑
????????5)开始编程。如果出现一直连接的情况,按一下复位键

????????CH340G芯片的作用:USB线连接传过来的是USB电平,而单片机使用的是TTL电平,则需要这么一个转化器件。

????????特别注意:STM32的ISP下载,只能使用串口1,也就是对应串口发送接收引脚PA9,PA10。不能使用其他串口(例如串口2:PA2,PA3)用来ISP下载。

????????如果isp不能正常下载,请检查如下功能:
????????????????1)复位电路是否正常,RST默认应该是高电平的。
????????????????2)?PA9和PA10与RXD和TXD是否接反了。
????????????????3)每次下载之前按复位按键。
????????????????4)boot0接vcc,boot1接地。
????????????????5)电路上,stm32的电源去耦电容是否都有加?至少需要4个以上的去耦电容,越靠近stm32的电源引脚越好。
????????????????isp下载与外部晶振无关,是使用内部的晶振。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:30:52  更:2021-09-14 13:31:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/30 2:01:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码