可以做兼职的网站推荐,水果网站模版,wordpress 如何改中文字体,高港网站建设目录 单片机的四种烧写方式简介 1.使用JTAG接口实现2.SWD接口烧录方式3.ISP烧写方式#xff0c;用UART实现#xff08;常用#xff09;4.SWIM单总线下载方式 烧录方式基本介绍烧录方式详述 1、ISP#xff1a;In System Programming2、IAP#xff1a;In Applicatin Program… 目录 单片机的四种烧写方式简介 1.使用JTAG接口实现2.SWD接口烧录方式3.ISP烧写方式用UART实现常用4.SWIM单总线下载方式 烧录方式基本介绍烧录方式详述 1、ISPIn System Programming2、IAPIn Applicatin Programming ① ISP和IAP最大的不同是由谁来触发进入BootROM。② 4种方式的目的相同即进入ISP子程序。 3、ICPIn Circuit Programing 总结 单片机的四种烧写方式简介
单片机是一种可编程控制器搭好硬件电路后可以利用程序实现很多非常复杂的逻辑功能与纯硬件电路相比简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程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这几个词。
ISPIn System Programing在系统编程IAPIn Application Programing在应用编程ICPIn 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、ISPIn System Programming
利用单片机的串行口接到计算机的RS232口通过专门设计的固件程序来编程内部存储器。芯片可以在目标板上不用取出来设计目标板的时候将接口设计在上面。所以叫在系统编程即不用脱离系统。程序升级需要现场解决但不必拆机器。比如利用STC-ISP对STC芯片编程如图祥见“STC_ISP下载软件问题汇总与解决”利用FlyMcu对STM32编程。 2、IAPIn Applicatin Programming
ISP的实现一般需要很少的外部电路辅助实现由芯片自身(或通过外围的芯片)通过一系列操作将代码写入。从结构上将Flash存储器映射为两个存储体当运行一个存储体上的用户程序时可对另一个存储体重新编程之后将控制从一个存储体转向另一个。比如STM32微处理器通过SEGGER J-Flash下载程序祥见“J-Link使用汇总(STM32F103)”。 MCU内部都是首先执行一段独立的Boot代码这段Boot代码一般是出厂预置或使用编程器烧录通常只有1k或4kSST通常是占用一块独立的BlockPhilips通常是让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子程序保存在FF00HFFFFH地址空间中达到引导至BootROM的目的。 殊途同归ISP、IAP所进入的BootROM里面驻留的Boot代码才是最终目标。
3、ICPIn Circuit Programing
1MCU只要处于上电状态即可不必预烧任何代码进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是对房子地基与房子的整体重构。