最近想画一块STM32的开发板,需要设计ISP自动下载电路,在此借鉴正点原子的ISP自动下载电路的硬件设计。由于模拟电路不是很精通,本章结合PSpice进行仿真理解ISP的原理。

1. STM32的启动方式

讲到下载方式,一定得首先首先知道STM32的启动方式。STM32一共有三种其中方式,如下图所示

BOOT0 BOOT1 启动方式
0 X 内部FLASH
1 0 系统存储器
1 1 内部RAM
  • 内部FLASH通常对应的是我们使用下载器进行烧录,比如常用的Jlink、STlink、DAPlink等等
  • 系统存储器通常对应的是使用串口下载,因为STM32在出厂时就内置了一段BootLoader,这段BootLoader用于启动串口下载的程序。
  • 内部RAM没用用过, 就不过多介绍

如果我们的开发板没有一键下载电路的话,我们下载程序时要把boot 0的跳冒从接GND变成接VCC,然后下载,按一下复位按键程序才能烧录,最后再把接VCC变成接GND,并且再按一下复位,这样单片机才能运行程序,每一次烧录程序都很麻烦。而当我们的单片机有了一键下载电路后,就不需要改变boot 0的值,直接烧录就可以运行。下面就我个人来分析一下一键下载电路。串口ISP通信的详细原理请看着: STM32 串口 ISP 原理

2. ISP自动下载电路设计

所谓自动就是指用户无需按下复位键和BOOT切换来实现下载,一般复位管脚会接上拉电阻,默认为高电平,而BOOT0管脚一般会接下拉电阻,默认为低电平,我们需要设计一种电路,在下载的时候将RESET管脚设置为低电平,BOOT0设置为高电平。怎么才能设置这两个管脚呢?解决的思路是通过上位机去控制这两个管脚的电平,具体怎么控制呢?这就涉及到串口的硬件流控制了,上位机是可以通过编程控制USB转TTL芯片的相关管脚状态的。

2.1 正点原子ISP自动下载电路设计

如下图所示为正点原子ISP自动下载电路设计原理图。ISP电路只要看左边部分,下载软件(mcuISP或者FlyMCU等软件)需要设置为DTR的低电平复位和RTS高电平进BootLoader,此时CH340G的RTS#为低电平,DTR#为高电平,电平相反的原因是:DTR#和RTS#表示反向标志的的意思。因为我们的mcuisp软件使用的是232标准电平,而单片机是ttl电平,他们两者电平是相反的。所以原理图中DTR后面加了一个#表示我们CH340G芯片此时接收到的DTR是高电平(与我圈起来的序号1中的DTR低电平相反所以是高电平)。并不是说CH340G芯片会进行逻辑非运算,仅仅只是一个提醒标志而已。由电路图可知,Q3会导通,导致BOOT0管脚为高电平,Q2也会导通, 导致RESET管脚为低电平,此时MCU进入复位,此时就能达到我们的设置电平的作用了。

2.2 ISP自动下载电路全过程解析

如下图所示,为mcuisp串口烧录软件的全过程,我们需要设置好1和3就可以实现自动下载了,标号2处显示的是下载时的调试信息。从图示我们可知分为以下几步:

  • DTR置低、RTS置高(对应DTR#置高、RTS#置低), 延时100ms
  • DTR置高、RTS维持高
  • 程序下载

2.2.1 DTR置低、RTS置高(对应DTR#置高、RTS#置低) 阶段

此时Q3和Q1都导通,BOOT0为高电平,RESET为低电平,STM32此时进入BootLoader,为烧录程序做准备。下图为仿真图,注意在仿真的时候需要将RESET的上拉电阻和BOOT0的下拉电阻画上, 不然很难分析出BOOT0和RESET的电平变化。

2.2.2 DTR置高、RTS置高(对应DTR#置低、RTS#置低) 阶段

此时Q3导通,Q1截止,BOOT0为高电平,RESET为高电平,释放复位。下图为仿真图

经过这两步后就可以通过串口下载代码了

2.3 疑问点

2.3.1 为什么需要将两个三极管连接在一起?

这是因为Q3在这里其主导作用,当RTS#为低电平时,给Q2的射极提供了一个电平,若RTS#为高电平,此时不管DTR#为任何电平,Q2都不会导通,此时RESET为高电平。下图为仿真结果

2.3.2 为什么需要那个IN4148二极管?

这个二极管的作用我觉得是防止手动复位电路影响到ISP自动下载电路,目前的仿真结果看不出这个结论。至于是不是得实物调试,有知道的大佬也可以麻烦告诉我

2.3.3 下载完成后RTS#是不是会自动变为高电平?

理论上在下载程序后需要将BOOT0拉低, 此时需要Q3截止,那就是需要RTS#为高电平,但是我们冲上位机下载日志中没看出这个调试信息, 具体得看实物的电平。

参考资料

  • stm32中的ISP一键下载原理分析
  • STM32 串口 ISP 原理

正点原子STM32 ISP电路分析相关推荐

  1. 正点原子STM32(基于HAL库)3

    目录 高级定时器实验 高级定时器简介 高级定时器输出指定个数PWM 实验 高级定时器输出指定个数PWM原理 TIM1/TIM8 寄存器 硬件设计 课堂源码(输出指定个数PWM灯就闪几次) 程序设计 下 ...

  2. 【正点原子STM32连载】第四十五章 SD卡实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  3. 【正点原子STM32连载】第二十一章 通用定时器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  4. 【正点原子STM32连载】第十四章 蜂鸣器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  5. 【正点原子STM32连载】 第二十五章 TFTLCD(MCU屏)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  6. 【正点原子STM32连载】第四十章 DHT11数字温湿度传感器 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  7. 【正点原子STM32连载】第四章 STM32初体验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  8. 【正点原子STM32连载】第四十六章 FATFS实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  9. 【正点原子STM32连载】第六章 新建寄存器版本MDK工程 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  10. 【正点原子STM32连载】第二十章 基本定时器实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

最新文章

  1. 在推荐系统中,我还有隐私吗?联邦学习:你可以有
  2. 饿了么四年、阿里两年:研发路上的一些总结与思考
  3. 从源码分析DEARGUI之add_selectable
  4. 在sae上编译代码是所遇到的问题
  5. 使用DeflateStream压缩与解压
  6. x5内核有什么优点_欧尚X5国产又一黑马SUV,颜值高性能强,顶配仅需10万左右
  7. NHibernate学习笔记(转载):many-to-one/one-to-many/many-to-many关系映射
  8. kfaka storm写入mysql_flume+kafka+storm+mysql架构设计
  9. 【数据库】navicat运行sql文件报错
  10. 使用pymongo连接mongodb时报错:pymongo.errors.OperationFailure: not authorized
  11. Sql Server 学习2
  12. 常见的Java基础的面试题
  13. 一、rsync +cwrsync实现windows和linux的文件同步
  14. zoomit64_终极缩放工具? Sysinternal的ZoomIt
  15. 故乡的原风景-宗次郎
  16. 温莎大学计算机硕士,温莎大学应用计算机硕士申请条件
  17. java,mysql,oracle出现科学记数法问题
  18. Redis批量删除Key的三种方式(linux和windows环境下都有)
  19. win7笔记本外接显示器html,详解笔记本电脑连接外部显示器的操作流程
  20. VSCode搭建STM32单片机开发环境

热门文章

  1. 通俗理解同步IO\异步IO
  2. Jetpack—LiveData组件的缺陷以及应对策略 转至元数据结尾
  3. 1602显示字符串的C语言程序,LCD1602程序显示字符串
  4. 侠客行手游java游戏,侠客行-侠客行手游下载 - 超好玩
  5. 职工信息管理系统设计c语言,c语言之职工信息管理系统设计.doc
  6. github客户端与git使用指南
  7. 苹果cmsv10仿爱客影视搜索自适应模板
  8. 技术图文:基于“科比投篮”数据集学Pandas
  9. canvas实现背景图和二维码合并-生成海报
  10. DDR等布线/走线需要等长的原因