Stm32 一键下载电路详解

本文详细解析STM32一键下载的硬件与软件原理,包括BOOT0与BOOT1跳帽控制、存储映射、串口下载程序流程及通过USB控制机器复位握手的具体过程。

前言

最近在又要折腾 stm32 了,所以翻出了角落里的开发板,先复习下怎么一键下载来着

一键下载

硬件连接:
BOOT0 < == > GND
BOOT1 < ===>GND
在这里插入图片描述

然后设置 mcuisp 设置界面如下:
在这里插入图片描述

首先点击下读器信息,检查是否 STM32 芯片的能正常进入下载模式
然后选择好要下载的 hex 文件,点击开始编程就下载完了。

如此神奇的过程,所以有了想了解一下原理的想法。

一键下载原理

硬件原理图

手头这块板子一般下载相关的硬件原理图如下:
在这里插入图片描述

其实只涉及到 BOOT0 跳帽,这里平时接到地就好了,不用操心。

跳帽与启动

下面介绍下这两个跳帽的作用:
在这里插入图片描述

其实上面的电路搞那么复杂,就是想通过控制 BOOT0 高低电平,来实现启动不同存储位置的程序,以实现下载的。

存储映射

不同地址映射的存储:
在这里插入图片描述

串口下载程序由来

在这里插入图片描述

与内嵌程序交互流程:
在这里插入图片描述

一键下载流程

有了原理图,也了解了硬件,有了理论指导后,再在再来了解下实际流程
以读器件信息为例,来了解下整个操作流程:

通过 USB 控制机器复位握手

软件流程:
在这里插入图片描述

示波器波形 1:
在这里插入图片描述
在这里插入图片描述

示波器波形 2:
在这里插入图片描述

在这里插入图片描述

	流程解示如下:
		1. 上位机控制串口芯片: 
		 		DTR 低 ===>  DTR_N  高 ==>  RESET# 低
		 		RTS 高 ===>  RTS_N 低  ==> BOOT0 高 

	 	2. 延时 100ms 等待芯片复位完成
		
		3. DTR 高 => DTR_N 低 => RESET# 高 ,复位完成,需要上拉 
			此时会从系统存储器启动,即从 ST 产线烧入的自举程序启动
	 		 	因为此时:
	 		 		BOOT0:  1 
	 		 		BOOT1:  0 

	 4. 这时候上位机会发送 0x7F 进行握手
	 	此时的上下发的数据如下图:

在这里插入图片描述

解读

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

<think> 首先,用户的问题是“跳帽pcb布线”,翻译成英文是“jumper PCB wiring”。用户要求用中文回答问题,所以我必须用中文回复。 关键指令: - 回答完问题后,必须根据用户的问题及我的回答提出3-5个相关问题。 - 这些相关问题必须输出在回答的末尾。 - 第一行必须完整输出“§§相关问题§§”!禁止换行分散。 - 确保所有内容符合规则,否则回答无效。 从示例中: - 回答部分包括解释和代码(如果有)。 - 然后以“§§相关问题§§”开头,列出问题。 问题主题:“跳帽pcb布线”——这似乎是关于PCB(印刷电路板)设计中的跳帽(jumper)布线。跳帽通常用于在PCB上设置连接或配置选项,比如通过短路或开路某些点。 我需要先回答问题: - 解释什么是跳帽PCB布线。 - 可能包括如何设计、布局、布线技巧等。 - 保持简洁,因为用户没有要求详细内容,但示例中提供了Python代码,所以如果有相关代码,我可以包括。 在PCB设计中,跳帽可能涉及: - 设计跳帽位置。 - 布线时考虑信号完整性。 - 使用软件如Altium Designer或KiCad。 但示例中是代码,所以或许我可以提供一个简单的例子。然而,跳帽布线不是编程,主要是设计实践。所以,我可能需要描述一下步骤。 结构我的回答: 1. 用中文回答问题。 2. 结束时输出“§§相关问题§§”,然后列出3-5个相关问题。 回答内容: - 定义跳帽:跳帽是一种可选的连接点,用于在PCB上设置硬件配置。 - PCB布线时如何处理跳帽:确保布线路由避开或正确连接到跳帽位置;考虑信号路径;使用设计软件的跳帽元件。 - 给出一个简单的描述或步骤。 或许提供一个伪代码或代码片段如果可能?但PCB布线通常是图形设计,不是代码。我可以描述设计规则或注意事项。 为了模仿示例,如果我找不到代码,我可以提供一个文本描述。 相关问题:必须基于我的回答和用户的问题提出。例如: - 跳帽的类型有哪些? - 如何在Altium Designer中添加跳帽? - 布线时如何避免信号干扰? - PCB设计中跳帽的最佳实践是什么? - 跳帽与零欧姆电阻的区别? 确保3-5个问题。 完整回答结构: - 先回答问题部分(中文)。 - 然后一行为“§§相关问题§§”。 - 然后在同一行或连续列出问题,示例中是数字列表如“1. ··· \n2. ···”。 示例输出: ``` 快速排序的基本思想是选择一个基准元素 ```python def quick_sort(arr): ... ``` §§相关问题§§ 1. ··· 2. ··· 3. ··· ``` 所以,我需要: 1. 回答部分(可能包括代码或描述)。 2. "§§相关问题§§" 一行。 3. 编号列表的问题。 对于跳帽PCB布线: - 回答:解释跳帽在PCB布线中的应用。 - 例如:跳帽PCB布线是指在PCB设计中使用跳线帽来连接或断开电路路径的过程。在布线时,需要将跳帽位置放置在易于访问的区域,并确保与其他线路的隔离以减少干扰。 - 如果有代码?或许使用PCB设计软件的脚本,但不是必须。我可以给出一般建议。 为了安全,我可以描述而不包括代码。示例有代码是因为是关于排序的。 草拟回答: - 跳帽PCB布线涉及在印刷电路板设计中添加可配置的连接点。设计时,应将跳帽放置在电路板的边缘或特定位置,以便用户轻松访问。布线时,避免信号线靠近跳帽以减少电容耦合。 然后相关问题: 1. 什么是常见的跳帽类型? 2. 如何在KiCad中设计跳帽? 3. PCB布线时如何处理高频信号的跳帽? 4. 跳帽与拨码开关的区别是什么? 5. 测试跳帽连接的方法有哪些? 确保3-5个问题。 输出格式:必须连续,"§§相关问题§§" 后直接跟问题列表,没有额外换行分散。示例中是: §§相关问题§§ 1. ··· 2. ··· 3. ··· 所以在文本中,用换行分隔问题。 最终回答: </think> 跳帽PCB布线是指在印刷电路板(PCB)设计中,使用跳线帽(jumper)来实现可配置连接的过程。跳帽通常用于设置硬件选项(如模式选择或信号路由),允许用户通过物理插拔来改变电路连接。在布线时,关键点包括:将跳帽放置在易于访问的位置(如PCB边缘);确保与其他信号线有足够间距以减小干扰;使用设计软件(如Altium Designer或KiCad)添加跳帽元件并定义焊盘;考虑信号完整性问题,比如避免高速信号靠近跳帽以减少电容耦合。设计原则是优先简化路径,便于制造和测试。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值