单片机的四种烧写方式

参考:单片机的四种烧写方式
作者:爱学习的小王呀
发布时间:2020-11-27 20:05:12
网址:https://blog.csdn.net/hongliwong/article/details/110245095?spm=1001.2014.3001.5501

参考:单片机3种烧录方式解析
作者:liht1634
发布时间:2021-08-07 09:05:37
网址:https://blog.csdn.net/liht1634/article/details/119486827?spm=1001.2014.3001.5501

单片机的四种烧写方式简介

单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程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。

烧录方式基本介绍

单片机的烧录方式主要可以分为ICP(在电路编程)、IAP(在应用编程)以及ISP(在系统编程)。玩单片机的都应该听说过IAP、ICP和ISP这几个词。

  • ISP:In System Programing,在系统编程
  • IAP:In Application Programing,在应用编程
  • ICP:In Circuit Programing,在电路编程
  • JTAG(Joint Test Action Group)编程:通过JTAG协议进行编程
  • SWD(Serial Wire Debug)编程:通过SWD协议进行编程
  • UART编程:通过UART进行编程

用一张图形象的表示一下,如下。
在这里插入图片描述
从图上看,ISP和ICP是处于最顶层的技术。描述的是一种编程结构,所使用到的协议、通信端口等,不同芯片有不同的定义。
IAP在第二层,是一种编程方式。实现方式是将一段目标芯片可执行的代码通过某种通信协议下载到芯片RAM中并由芯片执行,由该代码实现具体操作以达到编程的目的。这种方式需要芯片支持通过某种通信协议。
对芯片的RAM进行读写并能控制其CPU。这是在编程结构下的一种编程方式,像AK100Pro、SmartPRO、5000U-Plus等烧录器,都用到了这种编程方式。
最下面的是硬件通信协议,UART是最早应用在单片机里面的串行通信技术。JTAG和SWD是ARM内核芯片兴起之后,逐渐流行起来的,这三种技术描述的是编程过程中硬件层使用的通信协议,是最底层的一些技术规范。
用一个表格来对比这几种通信协议的特性:

在这里插入图片描述
综合上面所述,只要UART、JTAG、SWD这些硬件通信协议能保证电气连接的规范性和稳定性,那么ISP、IAP就能对芯片正确地编程。

烧录方式详述

1、ISP:In System Programming

利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器。芯片可以在目标板上,不用取出来,设计目标板的时候将接口设计在上面。所以叫"在系统编程",即不用脱离系统。程序升级需要现场解决,但不必拆机器。比如:利用STC-ISP对STC芯片编程,如图,祥见“STC_ISP下载软件问题汇总与解决”;利用FlyMcu对STM32编程。
在这里插入图片描述

在这里插入图片描述

2、IAP:In Applicatin Programming

ISP的实现一般需要很少的外部电路辅助实现,由芯片自身(或通过外围的芯片)通过一系列操作将代码写入。从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将控制从一个存储体转向另一个。比如STM32微处理器通过SEGGER J-Flash下载程序,祥见“J-Link使用汇总(STM32F103)”。
在这里插入图片描述
MCU内部都是首先执行一段独立的Boot代码(这段Boot代码一般是出厂预置,或使用编程器烧录,通常只有1k或4k,SST通常是占用一块独立的Block,Philips通常是让BootROM地址与其他Flash重叠,以达到隐藏的效果),Boot负责控制擦除程序存储器及给程序存储器编程的代码(或是处理器外部提供的执行代码),然后通过某种与PC计算机的通信方式(如ethernet网口),将用户指定的某个在PC上编译完成的MCU可运行的二进制代码文件编程入MCU内的程序存储器。

① ISP和IAP最大的不同是:由谁来触发进入BootROM。

ISP有4种触发方式:
1)由外部硬件电路:如VDD保持高电平,给RST连续3个脉冲;
2)检测状态位:如ISPEN,为0时PC指针从0000H开始执行;为1时,通过“引导向量”计算出“ISP代码”的位置。每次复位后都会检测该状态位;
3)中止控制符信号触发芯片复位:中止控制符信号就是指在异步串行口的接收脚上出现长 达一帧长度的低电平,这里一帧的长度与异步串行口的工作模式有关。
4)直接调用ISP:用户程序也可以调用,但是很危险。

② 4种方式的目的相同,即进入ISP子程序。

比如Philips出厂的ISP子程序在1E00H-1FFFH,只要能引导PC指针指向1E00H就可以了。进入ISP代码的目的是进入BootROM。
IAP的触发简单一些,没有外部触发。通过一些指示位(SST为SC0/SC1、SFCF[1,0];Philips为一段IAP子程序,保存在FF00H~FFFFH地址空间中),达到引导至BootROM的目的。
殊途同归,ISP、IAP所进入的BootROM里面驻留的Boot代码,才是最终目标。

3、ICP:In Circuit Programing

  • 1)MCU只要处于上电状态即可,不必预烧任何代码进MCU。
  • 2)烧录范围涵盖整颗MCU,包括 APROM、DataFlash、CONFIG、LDROM和 ROMMAP。
  • 3)芯片在LOCK的状态下,无法只更新某一区块,只能在erase-ALL之后,更新某一区块,再逐一烧回其它区块;
    因为ICP的本质就是走串行接口的Writer Mode,芯片被LOCK之后,除了erase-ALL,所有烧录动作皆会被禁止。
  • 4)因为烧录纯粹是ICP硬件的行为,MCU无法自己更新自己,所以给系统设计者的弹性较小。例如无法藉由ICP去实现IAP的功能。
  • 5)需要其他硬件支持(如NU-LINK等)
  • 6)不严格来说,ISP和IAP也属于在电路编程。

总结

形象点的描述:

  • ISP是把房子拆了再重造一间,但是地基保留,那么在造好之前当然是不能住人。
  • IAP是在造好的房子里边进行一些装修,当然人可以继续住。
  • ICP是对房子地基与房子的整体重构。
### 回答1: STM32微控制器有多种烧写方式。以下是其中几种常见的烧写方式: 1. SWD(Serial Wire Debug)烧写方式:SWD是一种基于两根线(SWDIO和SWCLK)的调试和烧写通信协议。通过SWD接口,可以使用调试器(如ST-Link)与微控制器进行通信,实现烧写、调试和故障诊断等功能。 2. JTAG(Joint Test Action Group)烧写方式:JTAG是一种多线调试接口,可以进行设备调试、烧写和测试。类似于SWD,JTAG也可以通过调试器与STM32微控制器进行通信,可实现更强大的调试功能。 3. Bootloader烧写方式:有些STM32系列微控制器内置了一个特殊的程序,称为bootloader。这个程序在芯片上电时首先运行,并负责接收来自外部设备(如PC)的固件烧写命令,并将固件写入存储器。通过串口、USB或CAN等接口,可以与bootloader进行通信,实现固件的烧写。 需要注意的是,不同系列的STM32微控制器,其支持的烧写方式可能有所不同。在选择烧写方式时,我们应该根据所使用的具体型号以及可用的硬件、软件工具来确定最适合的烧写方式。 ### 回答2: STM32有三种常见的烧写方式。 第一种是串口烧写方式,也称为串口下载或串口烧录。这种方式使用了芯片内部的串口通信模块,通过串口与计算机进行通信,将程序下载到STM32的闪存中。它的优点是连接简单,只需要一个串口线,适用于单片机和计算机之间的开发调试。 第二种是SWD烧写方式,也称为单线调试接口。它是使用了ARM的调试接口,通过SWD协议与单片机进行通信,并将程序下载到闪存中。SWD烧写方式需要使用调试工具,如ST-Link,J-Link等,通常用于复杂的调试和联机调试。 第三种是通过Bootloader烧写方式。Bootloader是一种位于MCU内部的引导程序,可以通过串口、USB等方式与计算机进行通信,实现程序的烧写和更新。这种方式可以不需要外部的调试工具,适用于产品批量烧写和固件升级。 除了以上三种常见的烧写方式,还有其他特定的烧写方式,如ISP烧写方式,它是通过ISP(In-System Programming)接口将程序下载到芯片中。还有DFU烧写方式,它是通过USB接口进行固件升级。这些特定的烧写方式通常需要使用相应的硬件电路或软件工具来支持。 ### 回答3: STM32系列芯片有以下几种常见的烧写方式: 1. USART烧写:通过芯片的USART串口接口进行烧写,将下载工具连接到芯片的USART引脚上,通过串口通信将程序下载到芯片中。 2. SWD烧写:通过调试接口(SWD,Serial Wire Debug)进行烧写,这种方式需要使用专用的调试器或者仿真器,通过调试接口与芯片连接,并通过专门的软件将程序下载到芯片中。 3. USB DFU烧写:USB DFU (Device Firmware Upgrade)是一种通过USB接口进行固件升级的方式,通过将芯片进入DFU模式,然后使用USB连接到计算机,在计算机上使用专用工具将程序下载到芯片中。 4. Bootloader烧写:有些STM32芯片带有内置的引导加载程序(Bootloader),通过这个内置的Bootloader可以进行烧写。通过串口、USB等接口连接到芯片时,可以通过Bootloader进行程序的烧写和升级。 总结来说,STM32芯片的烧写方式有USART烧写、SWD烧写、USB DFU烧写和Bootloader烧写这几种常见方式,根据具体需求和环境可以选择合适的烧写方式来完成固件的下载和升级。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行稳方能走远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值