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电路分析

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

1. STM32的启动方式

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

BOOT0BOOT1启动方式
0X内部FLASH
10系统存储器
11内部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#为高电平,但是我们冲上位机下载日志中没看出这个调试信息, 具体得看实物的电平。

参考资料

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:49:03  更:2022-05-18 17:49:24 
 
开发: 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 0:44:17-

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