单片机的四种烧写方式

2023-05-16

JTAG/SWD/ISP/SWIM详解单片机的四种烧写方式
单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程IDE来实现编程。在学习单片机之前,要先清楚单片机程序是如何烧写到单片机内部的,在烧写的过程中需要用到什么工具?因为不通用的烧写工具可能价格较贵,比如说Micorchip单片机使用的ICD系列编程器,单台价格在600-1000元人民币之间。今天和大学来认识一下单片机最常用的四种烧写方式和所使用到的工具。

1.使用JTAG接口实现
JTAG接口是一种标准的测试协议,可以实现编程时在线调试,利用单步追踪可以很方便的查找代码的Bug,大多数的单片机都支持这种接口。这种接口除了电源线和复位引脚之外,还要用到单片机的四个引脚,分别是:TDI、TMS、TCK、TDO,他们所代表的含义如下所示:

TDI–数据输入,所有写入寄存器的数据都是通过TDI接口串行输入的;TMS–模式选择,Jlink输出给目标CPU的时钟信号;TCK–时钟信号,所有数据的输入输出都是以该时钟信号为基准的;TDO–数据输出,所有从寄存器读出的数据都是通过TDO接口串行输出的;以上这四个引脚都是协议里强制要求的,而且协议建议在设计电路时要选用上拉电阻。JTAG接口有多种形式,常用的20引脚、14引脚和10引脚。

上图中JTAG接口都通过电阻上拉了,有的单片机的这几个引脚在内部已经上拉,所以这几个上拉电阻可以省略,减少了成本和PCB空间的占用。

JTAG接口烧录方式常用的工具为J-Link。

相信大家都见过或者听过这个烧写工具,这个工具很通用,但是大家在使用的时候一定要注意版权信息,因为这个工具是有版权的,前两年因为版权风波,网购平台还集中整治过一次。

2.SWD接口烧录方式
SWD是一种串行调试接口,与JTAG相比,SWD只需要两根线,分别为:SWCLK和SWDIO。他们的含义如下:

SWDIO–串行数据线,用于数据的读出和写入;SWDCLK–串行时钟线,提供所需要的时钟信号;一般来说,大多数单片机的JTAG接口和SWDIO接口是复用的,SWD也是用J-Link工具来实现的。所以在使用的时候,只需要在软件界面做一下选择,使用SWD方式还是JTAG方式,硬件上无需改动。除了J-Link外,意法半导体的ST-Link也是支持SWD模式的。

SWD的接口如上图所示,可以看出,SWD和JTAG是相互复用的,由于SWD只需要两根线所以大大减少了对单片机GPIO口的占用,SWD方式也是可以在线调试的。

3.ISP烧写方式,用UART实现
使用过国产51单片机的朋友都清楚这种烧写方式,这种烧写方式是通过单片机的UART串口来实现的,所需要的工具也比较简单-USB/TTL。这个USB/TTL的芯片可以通过MAX232、CH340G等芯片来实现。

在与单片机连接的时候,一定要注意交叉连接,所谓交叉连接即,单片机的TXD接串口RXD,单片机的RXD接串口TXD,否则数据通信失败。51单片机在使用该方式下载时需要断一下点再上电才能下载。

STM32单片机可以使用UART来实现程序下载,但是需要选择BOOT的模式,现在通过CH340G芯片可以实现自动ISP的下载方式,即不需要手动设置BOOT模式。

4.SWIM单总线下载方式
这种下载方式是针对STM8系列的单片机,这种方式只需要一根线即可实现程序的下载,所使用的工具为ST-Link。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机的四种烧写方式 的相关文章

  • [Holo_wo]-c++库工程总结

    文章目录 一 什么是库1 1 静态库1 2 动态库 二 如何使用库三 如何编写一个库3 1 接口设计a 接口导出问题b 接口设计问题PIMP方法Object Interface 抽象基类法 3 2 如何编译a Linux静态库动态库 b W
  • [Holo_wo]-网络编程之timerfd使用说明

    Talk is cheap Show me the code xff1a span class token macro property span class token directive hash span span class tok
  • stm32cube学习1-rcc配置选择

    在用cube配置时钟时 xff0c 有下面两个选项 BYPASS Clock Source xff08 旁路时钟源 xff09 Crystal Ceramic Resonator xff08 晶体 陶瓷晶振 xff09 下面来解释一下 xf
  • [Holo_wo]-网络编程之eventfd使用说明

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • [Holo_wo]-如何阅读递归代码,对递归代码结构分析

    因为做算法题的时候经常碰到递归的方法 xff0c 而每次理解递归代码的层次结构都很费脑筋 xff0c 所以我尝试着总结分析了一下递归代码的结构 xff0c 如果有误还望大家指明 类型 函数名 xff08 参数 xff09 跳出递归的条件 相
  • 松灵机器人 SCOUT的ROS代码架构---CAN通信

    松灵机器人感觉可能还是比较小众吧 明明官方的github xff0c 但是star之类的完全没有关注度 xff0c 也没有issue 这个SCOUT ROS主要是解决SCOUT底盘与上位机的通信方式 xff0c 截止目前 xff0c 已经开
  • VINS-Mono 代码解析四、闭环检测和优化 (偏理论)

    一 理论部分 1 1 怎么知道发生了闭环 上图中 蓝线 为正常的闭环优化流程 即通过后端的非线性优化来更新滑窗内所有相机的位姿 紫线为闭环检测模块 当后端优化完成后 会将滑窗内的次新帧进行闭环检测 即首先提取新角点并进行描述 然后与数据库进
  • 八、IMU器件温度漂移补偿

    感谢大神分享 xff1a 多传感器融合定位理论基础 xff08 九 xff09 xff1a 凸优化基础 知乎 1 概述 温补的本质是系统辨识 之前我们在介绍标定的时候 xff0c 也说过一句类似的话 标定的本质是参数辨识 这两者之间相似又不
  • Kalibr 安装+制作采集的图片和IMU数据生成 .bag 文件 (坑最全,解决方法最简单,最详细哈哈)

    测试的数据集 标定板下载页面 https github com ethz asl kalibr wiki downloads 官方下载和安装教程 https github com ethz asl kalibr wiki installat
  • GPS从入门到放弃(三)、GPS坐标系

    可以参考下面的连接理解 xff1a 常用导航坐标系 及 转换关系 xff08 理论 43 程序 xff09 努力努力努力 CSDN博客 定位就需要坐标 xff0c 坐标当然是相对坐标系而言的 xff0c 我们描述一个物体的位置 xff0c
  • RealSenseD435i (四):运行 VINS-mono代码

    一 必读博客 nbsp https blog csdn net hltt3838 article details 120691764 nbsp nbsp nbsp 一 https blog csdn net hltt3838 article
  • 多种视觉SLAM方案对比

    在SLAM研究中 xff0c 我们通常需要在各数据集上测试各个方案的性能情况 如下主要对表1中6个视觉SLAM方案进行相关测试 xff0c 测试其在不同场景 要求下的精度和鲁棒性 xff0c 并给出最终方案选型 由于时间 场地等原因 xff
  • SDL概念介绍

    下面是我对网上知识的一些总结 xff1a 1 SDL是一套开放源代码的跨平台多媒体开发库 xff0c 使用C语言写成 2 SDL提供了数种控制图像 声音 输入输出的函数 xff0c 可以跨平台进行软件开发 3 目前SDL多用于开发游戏 模拟
  • Python turtle库 写“生日快乐”

    1 首先要CTRL 43 R然后cmd进入命令行 xff0c 输入pip install turtle安装第三方库 2 打开python IDE xff0c 如下图 xff0c 点击 File 34 选择 New File 34 3 复制代
  • 简单回路与初级回路(圈)区别

    1 回路 xff1a 起点终点相同 简单通路 xff1a 起点到终点所经过的边不同 简单回路 xff1a 起点到终点所经过的边不同 43 回路 初级通路 xff1a 起点到终点所经过的顶点各异 43 简单通路 初级回路 圈 xff1a 起点
  • wechaty搭建微信机器人——超详细版

    文章目录 前言一 wechaty是什么 xff1f 二 准备1 安装 Node js xff08 需要10 0版本以上 xff09 2 安装Wechaty 总结 前言 提示 xff1a 这里可以添加本文要记录的大概内容 xff1a 例如 x
  • 离散 排斥或与相容或的区别

    1 相同之处 xff1a 就是 或 2 不同之处 xff1a 一个排斥 xff0c 一个相容 p xff1a 2是偶数 q xff1a 2是奇数 xff0c 这种情况下是排斥或 xff0c 也即一个命题成立 xff0c 则其他命题不成立 p
  • Latex中ACM-Reference-Format顺序与论文引用顺序不一致solution

    在第一次编译的时候 xff0c 先使用 bibliographystyle unsrt 而非模板的 bibliographystyle ACM Reference Format 的进行按顺序的编译 在之后的编译中 xff0c 使用 bibl
  • 正则表达式快速入门

    目录 1 正则表达式是什么 xff0c 有什么作用2 定位符例子2 1想要搜索以 001 开头的文件2 2想要搜索以 ab 结尾的文件2 3搜索单词开头为 zh 34 的文件2 4搜索单词结尾为 zh 34 的文件2 5搜索单词中间为 zh
  • JAVASE基础(一)

    这里写目录标题 一 javaSE基础1 jdk文档2 代码量统计工具3 文档注释4 反编译工具5 JDK JRE JVM xff08 java虚拟环境 xff09 61 61 6 变量命名规则 61 61 7 变量的作用域8 数据类型9 进

随机推荐

  • JAVASE基础(二)

    这里写目录标题 JAVASE基础11 科学计数法12 编码和字符集12 编译格式问题13 类型转换类型级别自动类型转换强制类型转换特殊情况 14 final修饰符a 修饰变量b 修饰方法c 修饰类 15 scanner使用16 两个数交换引
  • 关于gcc编译 -I -L -l的使用

    gcc o hello hello c I home hello include L home hello lib lworld 参数说明 xff1a I home hello include表示将 home hello include 目
  • Matlab彩色图像的rgb分量获取,彩色通道互换

    1 原图像 2 matlab代码 xff0c 将图像的绿色和蓝色通道进行互换 A 61 imread 39 花朵 jpg 39 h w d 61 size A R 61 A 1 获取红色分量 G 61 A 2 获取绿色分量 B 61 A 3
  • 使用Xavier读取RealSense D435i的踩坑经历

    由于项目需要 xff0c 最近开始研究通过Xavier运行VINS的方法 xff0c 使用的传感器是Intel的RealSense xff0c 但是Xavier对RealSense的支持却不怎么好 xff0c 下面介绍一下躲坑方法 xff0
  • 宏函数详解

    宏函数 xff1a STL模板 实现函数的复用性 函数 xff1a 可以传递参数 但是不能将类型作为参数传递 例如 xff1a 一个开辟内存的函数 xff1a define Malloc type size type malloc size
  • UBUNTU将新路径添加到ROS_PACKAGE_PATH中。

    first 查看路径 chen 64 chen HP echo ROS PACKAGE PATH opt ros indigo share opt ros indigo stacks 添加 chen 64 chen HP echo 34 e
  • Visual Studio实现多核并行编译

    Visual Studio 大工程项目的编译时间较长 xff0c 可以利用多核CPU的优势 xff0c 实现并行编译 xff0c 设置并行编译方法示例如下 xff1a 1 在 ClassView 中选取某项目的 Properties xff
  • 五参数超声波风速风向传感器

    五参数超声波风速风向传感器介绍风速风向基于超声波原理研发的风速风向测量仪器 xff0c 利用发送的声波脉冲 xff0c 测量接收端的时间或频率 xff08 多普勒变换 xff09 差别来计算风速和风向 该传感器可以同时测量风速 xff0c
  • Postman 的使用教程(详细)

    Postman 使用教程 1 是什么 Postman 是一个接口测试工具软件 xff0c 可以帮助开发人员管理测试接口 官网 xff1a https www getpostman com 2 安装 建议通过官网下载安装 xff0c 不要去那
  • 《Qt 5.9 C++开发指南》第3章 Qt类库概述【详细摘要】

    Qt是一个用标准C 43 43 编写的跨平台开发类库 xff0c 它对标准C 43 43 进行了扩展 xff0c 引入了元对象系统 信号与槽 属性等特性 xff0c 使得应用程序开发变得更高效 本章介绍Qt的这些核心特点 xff0c 对于理
  • c++中引用相关概念总结

    1 先从下面这两段代码的运行结果开始看起 xff1a int a 61 10 在内存上开辟4个字节 xff0c a就代表这个4个字节内存 int p 61 amp a 让一个指针 指向这个4个字节的空间 p 61 20 cout lt lt
  • STM32串口接收中断——基于HAL库

    写在前面 最近需要使用一款STM32L4系列的芯片进行开发 xff0c 需要学习使用HAL库 在进行串口中断使用的时候遇到了一些小麻烦 xff0c 写下解决方案供大家参考 1 UART相关的头文件引用错误 由于本人直接使用MDK进行开发 x
  • 相机标定-标定板pdf生成网站

    推荐一个可以自动生成相机标定的标定板文件的网站 xff1a https calib io pages camera calibration pattern generator
  • 什么是卫星通信中的星基增强系统(SBAS)

    背景 最新的通用航空标准中要求航空电子设备接收器应配备抗干扰能力 xff0c 同时也能够识别和处理故意干扰 xff0c 如欺骗 这项新规定代表了民用航空对全球导航卫星系统信号干扰引起的风险的认识提升 xff0c 而这也是军用航空一直面临的问
  • 你了解RTK技术吗?—— 揭秘GNSS中的定位技术

    上期文章中我们一起探讨了GNSS仿真及其对测试验证的重要意义 xff0c 今天我们将一起走进GNSS中的定位技术 RTK技术 什么是RTK技术 xff1f 传统RTK技术与网络RTK技术又有什么区别呢 xff1f 随着GNSS系统的迅速发展
  • STM32 Keil下编程实现LED灯点亮与闪烁

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 原理图1 STM32F103C8T62 LED23 LED3 二 Keil代码1 Led h2 Led c3 main
  • STM32Keil下编程实现蜂鸣器长鸣

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 原理图1 STM32F103C8T62 BELL蜂鸣器 二 Keil代码1 Beep c2 Beep h3 main c
  • STM32 NRF24L01实现无线传输

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 原理图1 STM32F103C8T62 NRF24L01 二 Keil代码1 SPI NRF2401 C2 SPI NR
  • C语言编程的步骤

    C是一种编译性语言 如果你以前从来没有接触过任何的编程语言 xff0c 那么你则需要学习一下一个拆分的逻辑思维 当我们想要写一个项目或者软件的时候 xff0c 我们需要把这个整体拆分为 xff17 个步骤 xff0c 这样也会让你的思路看起
  • 单片机的四种烧写方式

    JTAG SWD ISP SWIM详解单片机的四种烧写方式 单片机是一种可编程控制器 xff0c 搭好硬件电路后 xff0c 可以利用程序实现很多非常复杂的逻辑功能 xff0c 与纯硬件电路相比 xff0c 简化了硬件外围的设计 方便了逻辑