网站首页 > 技术文章 正文
如何使用串口像STM32下载程序
前期我们下载程序都是使用STlink进行下载的,现在给大家提供一种新的程序下载方法,即使用串口进行程序的下载,下面让我们一起来看看如何操作的吧!
USB转串口驱动安装
USB 转串口的驱动芯片是 CH340,要使用串口得先在电脑 中安装 USB 转串口驱动—CH340 版本。驱动可在网上搜索下载去某宝店铺提供的。WIN7 用户请用管理员身份安装。
如果不能安装成功,请先百度查找原因自行解决。
如果 USB 转串口驱动安装成功,USB 线跟板子连接没有问题,在计算机->管理->设备 管理器->端口中可识别到串口。
如果识别不了串口,请检查 USB 线是否完好,可换一根 USB 线试试。
硬件连接
注意:STM32F1系列单片机RX/TX分别对应单片机上的PA9/PA10两个引脚,在使用单片机(第一次下载)时需要将单片机上的BOOT0\BOOT1进行接地处理。有一个跳帽,插上就行了。
程序下载
首先打开 mcuisp 软件,配置如下:
①搜索串口,设置波特率 115200(尽量不要设置的太 高)
②选择要下载的 HEX 文件
③校验、编程后执行
④DTR 低电平复位,RTS 高电 平进入 bootloader
⑤开始编程。如果出现一直连接的情况,按一下开发板的复位键即可。
具体步骤如下图:
至此,程序即下载成功了,大家快去试试吧!
ISP一键下载原理分析
ISP 简介:ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最 终用户代码, 而不需要从电路板上取下器件,已经编程的器件也可以用 ISP 方式擦除或再 编程。ISP 的时候需要用到(bootloader)自举程序,自举程序存储在 STM32 器件的内部自举 ROM 存储器(系统存储器)中。其主要任务是通过一种可用的串行外设( USART、 CAN、 USB、 I2C 等)将应用程序下载到内部 Flash 中。每种串行接口都定义了相应的通信协议, 其中包含兼容的命令集和序列。
ISP 普通下载
现在我们针对 USART1 的 ISP 进行分析,通常的 ISP 的步骤如下:
1. 电脑通过 USB 转串口线连接 STM32 的 USART1,并打开电脑端的上位机;
2. 设置跳线保持 BOOT0 为高电平,BOOT1 为低电平;
3. 复位单片机使其进入 bootloader 模式,通过上位机下载程序;
4. 下载完毕,设置跳线保持 BOOT0 为低电平,BOOT1 为低电平;
5. 复位单片机即可启动用户代码,正常运行。
以上步骤有个不好的地方就是下载程序需要跳线及复位操作,很繁琐。通过对 ISP 的 原理认识,一键 ISP 就诞生了,它需要做的事情就是用上位机去控制 BOOT0 脚和单片机的 复位脚,原理图如下:
BOOT 配置
在 ISP 下载电路中,我们需要配置 BOOT 引脚,有关 BOOT 引脚不同的配置会产生不 同的启动方式,具体见表格 4-1 BOOT 配置。表格 4-1 BOOT 配置 BOOT0 BOOT1 启动方式 0 X 内部 FLASH 1 0 系统存储器
ISP 一键下载
USB 转串口估计大家都很熟悉,一般都是用到 RXD 和 TXD 这两个口,一键 ISP 电路 中我们需要用 USB 转串口的芯片的 DTR 口和 RTS 口来控制单片机的 BOOT0 和 NRST,原 理如下:
1. 通过上位机控制 U6(CH340G)的 RTS 脚为低电平,Q1 导通,BOOT0 的电平上拉为 高电平。
2. 通过上位机控制 U6(CH340G)的 DTR 脚为高电平,由于 RTS 为低电平,Q2 导通, U8 的 2 脚为低电平,U18 为一个模拟开关,使能端由 4 脚控制,默认高电平,U18 的 1 脚和 2 脚导通,所以 NRST 为低电平系统复位。
3. 单片机进入 ISP 模式,此时可以将 DTR 脚设置为低电平,RTS 设置为高电平。Q1 和 Q2 为截至状态,BOOT0 和 NRST 还原默认电平。
4. 上位机将程序下载到单片机,下载完毕之后,程序自动运行。
5. 至此,很多人还会认为 U18、Q1、Q2 是多余的,用 U6 的 RTS 和 DTR 直接控制也 可以。正常情况下,这样理解没有问题,但是我们忽略了一点,就是单片机上电瞬 间如果 USB 转串口连接了电脑,DTR 和 RTS 的电平是变化的,如果不处理好,单 片机会一直进入 ISP 模式,或者系统会复位多次,这种情况是不允许的。
6. 于是,就有了我们全新的一键 ISP 电路。我们主要是分析上电瞬间的逻辑关系,单 片机上电时我们通过示波器观察波形得知 DTR 和 RTS 的电平是变化的,但是也有 一个规律就是:只要 RTS 为低电平的时候,DTR 的电平也是低,因此一般情况 Q2 不会导通,但由于这两个 IO 口的电平存在“竞争冒险”,会出现 RTS 的下降沿的 时候刚好遇到 DTR 的上升沿,这个时候 Q2 导通,导致系统复位,而 BOOT0 此时 有可能也为高电平,就会进入 ISP 模式。这个是不受我们控制的,我们不想系统出 现这样的情况。因此加入了模拟开关来切断这种干扰。
7. 加入模拟开关 U18,通过控制 U18 的 4 脚的开关来达到隔离干扰电平的目的。下面 我们分析一下延时开关电路,上电瞬间,电容 C65通过电阻 R18 来充电,由于电阻 100k 很大,电容的充电电流很小,等电容充电达到 U18 的 4 脚的有效电平 2V 时, 大概耗时 1S,在这个 1S 时间内 U18 的模拟开关是断开的,因此 RTS 和 DTR 的干 扰电平不会影响到系统复位。系统正常运行。
猜你喜欢
- 2024-10-12 STM32单片机-多串口printf()问题与ASCII码解析
- 2024-10-12 stm32F0 串口的几个特殊功能 stm32f1串口引脚
- 2024-10-12 STM32串口发送用哪个中断? stm32f4串口发送数据
- 2024-10-12 STM32F103编程学习——USB虚拟串口篇
- 2024-10-12 STM32F4入坑日记——串口发送数据(非中断)
- 2024-10-12 STM32 HAL库串口中断发送过程 stm32f4串口中断
- 2024-10-12 在货物监控设备研发时,STM32串口第一个字节丢失解怎么解决?
- 2024-10-12 STM32单片机采用环形缓冲区实现串口中断数据接收管理
- 2024-10-12 基于STM32的串口与DMA的完美组合(上)
- 2024-10-12 STM32F103编程学习——串口接收不定长数据
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)