单片机SWJ 调试端口(SW-DP和JTAG)、SWD下载电路

2024-02-29 12:44

本文主要是介绍单片机SWJ 调试端口(SW-DP和JTAG)、SWD下载电路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单片机下载接口是指用于将编写好的程序代码下载到单片机芯片中的接口。常见的单片机下载接口包括以下几种:

1. **串口下载接口**:通过串口(如UART或RS-232接口)与计算机或下载器相连,将程序代码通过串口传输到单片机内存中。串口下载接口简单易用,适合于一些简单的单片机应用。

2. **USB下载接口**:通过USB接口与计算机相连,利用USB通信协议进行数据传输,将程序代码下载到单片机芯片中。USB下载接口传输速度快,适合于对下载速度要求较高的应用。

3. **SWD接口**:Serial Wire Debug接口,是一种用于ARM Cortex微控制器调试和下载程序的接口标准,通过SWD接口可以进行单步调试和程序下载。

4. **JTAG接口**:Joint Test Action Group接口,是一种用于测试、调试和程序下载的接口标准,适用于多种类型的芯片。通过JTAG接口可以实现对单片机的调试和下载操作。

5. **ICSP接口**:In-Circuit Serial Programming接口,适用于一些PIC等系列单片机,通过ICSP接口可以在电路板上直接对单片机进行编程和下载操作。

以上是一些常见的单片机下载接口,根据不同的单片机芯片类型和开发环境,可以选择合适的下载接口和下载器,以便进行程序开发、调试和下载操作。在选择下载接口时,需要考虑单片机的型号、开发工具的支持以及开发环境的需求,以确保下载过程顺利进行并达到预期的效果。

数据手册

数据手册中关于SWJ调试端口的内容如下图

STM32F4xx系列微控制器内核集成了串行/JTAG调试端口(SWJ-DP),该端口是ARM标准CoreSight调试端口的一部分,其中包含JTAG-DP(5引脚)接口和SW-DP(2引脚)接口。以下是关于这两个接口的一些基本信息:

JTAG-DP接口:

- JTAG调试端口(JTAG-DP)提供了一个标准的5引脚JTAG接口,用于连接到AHB-AP(Advanced High-performance Bus-Access Port)端口。
- 通过JTAG-DP接口,可以实现对微控制器的调试、编程以及硬件调试功能。
- JTAG-DP接口提供了丰富的调试功能,包括单步执行、断点设置、寄存器查看等操作。

SW-DP接口:

- 串行线调试端口(SW-DP)提供了一个2引脚接口,用于连接到AHB-AP端口。
- SW-DP接口可以通过时钟和数据线实现数据的传输和调试功能。
- 在SWJ-DP中,SW-DP的2个JTAG引脚与JTAG-DP的5个JTAG引脚中的部分引脚进行了复用,以提供更灵活的调试和连接选项。

SWJ-DP的优点和特点:

- 提供了灵活的调试接口选项,可以根据具体需求选择JTAG-DP或SW-DP接口。
- 支持CoreSight调试技术,提供了丰富的调试功能和性能优化选项。
- 通过SWJ-DP接口,可以方便地进行调试、编程和硬件连接操作,提高开发效率和调试便捷性。

在 STM32F4xx 微控制器中,JTAG-DP 和 SW-DP 之间的切换是通过提供特定的 JTAG 序列来实现的。默认情况下,调试接口是 JTAG 接口。如果调试工具希望切换到 SW-DP 接口,需要在 TMS(映射到 SWDIO)和 TCK(映射到 SWCLK)引脚上提供专用的 JTAG 序列,以禁用 JTAG-DP 并启用 SW-DP。这样,就可以使用 SWCLK 和 SWDIO 引脚来激活 SW-DP 接口。

切换到 SW-DP 的序列如下:
1. 输出超过 50 个 TCK 周期的 TMS(对应于 SWDIO 引脚)= 1 信号
2. 输出 16 个 TMS(对应于 SWDIO 引脚)信号 0111100111100111(从最高有效位开始)
3. 输出超过 50 个 TCK 周期的 TMS(对应于 SWDIO 引脚)= 1 信号

通过按照以上序列操作,调试工具可以有效地切换到 SW-DP 接口,从而在调试过程中使用 SW-DP 提供的功能和特性。这种切换机制使得在 JTAG-DP 和 SW-DP 之间灵活切换成为可能,便于开发人员根据实际需要选择合适的调试接口,并实现相应的调试操作。

STM32F4xx 5 个普通 I/O 口可用作 SWJ-DP 接口引脚。所有封装都提供这些引脚。 

 

SWD下载电路

SWD下载电路如下所示

该电路为5p排针,用来外接ST-Link下载器。其中排针的2、4引脚接芯片的PA14和PA13,分别为SWD下载的SWCLK和SWDIO

  • SWDIO:Serial Wire Data Input Output,串行数据输入输出引脚

  • SWCLK:Serial Wire Clock,串行线时钟引脚

在 SWD(Serial Wire Debug)下载电路中需要包含 NRST(Reset)引脚、3.3V 供电引脚和地(GND)引脚的原因如下:

1. **NRST(Reset)引脚**:
   - NRST 引脚用于控制目标设备的复位。在 SWD 下载时,需要通过控制 NRST 引脚来实现目标设备的复位,以确保下载的程序能够正常启动和运行。
   - 复位操作可以清除目标设备的状态并将其恢复到初始状态,这对于下载过程的成功和稳定性至关重要。

2. **3.3V 供电引脚**:
   - 3.3V 供电引脚用于向目标设备提供稳定的电源供应,确保目标设备在下载过程中能够正常工作。
   - 大多数微控制器和集成电路都需要特定电压范围内的供电来正常运行,因此在 SWD 下载电路中需要提供稳定的 3.3V 供电。

3. **地(GND)引脚**:
   - 地引脚用于建立电路的参考电位。在 SWD 下载电路中,连接地引脚可以确保信号和电源回路的完整性,并提供稳定的参考电位。
   - 通过连接地引脚,可以确保信号传输的稳定性,避免信号干扰和电路不稳定性问题。

因此,包含 NRST、3.3V 供电和地引脚在 SWD 下载电路中是为了确保下载过程的稳定性、目标设备的正常复位和工作,以及保证信号传输的可靠性。

这篇关于单片机SWJ 调试端口(SW-DP和JTAG)、SWD下载电路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/758837

相关文章

hdu4826(三维DP)

这是一个百度之星的资格赛第四题 题目链接:http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1004&cid=500 题意:从左上角的点到右上角的点,每个点只能走一遍,走的方向有三个:向上,向下,向右,求最大值。 咋一看像搜索题,先暴搜,TLE,然后剪枝,还是TLE.然后我就改方法,用DP来做,这题和普通dp相比,多个个向上

hdu1011(背包树形DP)

没有完全理解这题, m个人,攻打一个map,map的入口是1,在攻打某个结点之前要先攻打其他一个结点 dp[i][j]表示m个人攻打以第i个结点为根节点的子树得到的最优解 状态转移dp[i][ j ] = max(dp[i][j], dp[i][k]+dp[t][j-k]),其中t是i结点的子节点 代码如下: #include<iostream>#include<algorithm

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:https://github.com/

hdu4865(概率DP)

题意:已知前一天和今天的天气概率,某天的天气概率和叶子的潮湿程度的概率,n天叶子的湿度,求n天最有可能的天气情况。 思路:概率DP,dp[i][j]表示第i天天气为j的概率,状态转移如下:dp[i][j] = max(dp[i][j, dp[i-1][k]*table2[k][j]*table1[j][col] )  代码如下: #include <stdio.h>#include

usaco 1.1 Broken Necklace(DP)

直接上代码 接触的第一道dp ps.大概的思路就是 先从左往右用一个数组在每个点记下蓝或黑的个数 再从右到左算一遍 最后取出最大的即可 核心语句在于: 如果 str[i] = 'r'  ,   rl[i]=rl[i-1]+1, bl[i]=0 如果 str[i] = 'b' ,  bl[i]=bl[i-1]+1, rl[i]=0 如果 str[i] = 'w',  bl[i]=b

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

uva 10154 DP 叠乌龟

题意: 给你几只乌龟,每只乌龟有自身的重量和力量。 每只乌龟的力量可以承受自身体重和在其上的几只乌龟的体重和内。 问最多能叠放几只乌龟。 解析: 先将乌龟按力量从小到大排列。 然后dp的时候从前往后叠,状态转移方程: dp[i][j] = dp[i - 1][j];if (dp[i - 1][j - 1] != inf && dp[i - 1][j - 1] <= t[i]

uva 10118 dP

题意: 给4列篮子,每次从某一列开始无放回拿蜡烛放入篮子里,并且篮子最多只能放5支蜡烛,数字代表蜡烛的颜色。 当拿出当前颜色的蜡烛在篮子里存在时,猪脚可以把蜡烛带回家。 问最多拿多少只蜡烛。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cs

uva 10069 DP + 大数加法

代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <queue>#include <map>#include <cl