单片机ISP、IAP、ICP、JTAG、SWD编程技术介绍
随着科学技术的不断发展,单片机的编程技术也是越来越丰富了。简单统计一下目前大家比较熟悉的编程方法有以下几种:ISP、IAP、ICP、JTAG、SWD、UART。那么这些编程技术都有什么特点,又都是什么原理呢?今天我们就来给大家普及一下。
IAP
IAP的英文全称是In Application Programming,从英文字面意思来翻译的话,就是“在应用编程”.
IAP的运行原理是:指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。在实现IAP功能时,单片机内部一定要有两块存储区,一般一块被称为BOOT区,另外一块被称为存储区。单片机上电运行在BOOT区,如果有外部改写程序的条件满足,则对存储区的程序进行改写操作。如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能。
IAP技术是从结构上将Flash存储器映射为两个存储体,当运行一个存储体上的用户程序时,可对另一个存储体重新编程,之后将程序从一个存储体转向另一个。
IAP的实现非常灵活,通常可利用单片机的串行口接到计算机的RS232口,通过专门设计的固件程序来编程内部存储器,可以通过现有的INTERNET或其它通讯方式很方便地实现远程升级和维护。
ISP编程
ISP的英文全称是In System Programming,英文字面意思为:在系统编程,ISP技术可以对已经焊接到电路板上的单片机进行编程, 而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。
ISP技术的优势是不需要编程器就可以进行单片机的实验和开发,单片机芯片可以直接焊接到电路板上,调试结束即成成品,免去了调试时由于频繁地插入取出芯片对芯片和电路板带来的不便。
ISP的实现一般需要很少的外部电路辅助实现。
ICP编程
ICP的英文全称是In Circuit Programing,意为:在电路编程。如果单片机已经焊接到电路上,但又需要再次烧写程序,如果拆卸单片机会非常不方便,这时就用到ICP编程,这一点与ISP比较像。
ICP编程的特点是:MCU只要处于上电状态即可,不必预烧任何code在MCU里面;(2)烧录范围涵盖整颗MCU,包括APROM, DataFlash, CONFIG, LDROM和 ROMMAP。
JTAG编程
JTAG的英文全称是Joint Test Action Group(联合测试行为组织);JTAG 主要应用于:电路的边界扫描测试和可编程芯片的在线系统编程。
JTAG口会因为单片机的不同,其接口数量也不等,一般有10,14,20引脚的JTAG接口。
SWD编程
SWD最大的好处就是节省PCB 的空间和布线难度,SWN采用J-LINK编程模式。
SWD 模式比 JTAG 在高速模式下面更加可靠。 在大数据量的情况下面 JTAG 下载程序会失败, 但是 SWD 发生的几率会小很多。基本使用 JTAG 仿真模式的情况下是可以直接使用 SWD 模式的, 只要你的仿真器支持。 所以推荐大家使用这个模式。
在单片机 GPIO 刚好缺一个的时候, 可以使用 SWD 仿真, 这种模式支持更少的引脚。
在板子的体积有限的时候推荐使用 SWD 模式, 它需要的引脚少, 当然需要的 PCB 空间就小啦! 比如你可以选择一个很小的 2.54 间距的 5 芯端子做仿真接口。
UART编程
顾名思义,UART编程是利用串口进行编程。
说了这么多,可能把大家搞糊涂了,下面我们通过一张图来说明一下这几重编程方式的层次关系
从图上看,ISP和ICP是处于最顶层的技术。描述的是一种编程结构,所用使用到的协议、通信端口等,不同芯片有不同的定义。
IAP在第二层,是一种编程方式。实现方式是将一段目标芯片可执行的代码通过某种通信协议下载到芯片RAM中并由芯片执行,由该代码实现具体操作以达到编程的目的。这种方式需要芯片支持通过某种通信协议对芯片的RAM进行读写并能控制其CPU。这是在编程结构下的一种编程方式,像AK100Pro、SmartPRO 5000U-Plus等烧录器,都用到了这种编程方式。
最下面的是硬件通信协议,UART是最早应用在单片机里面的串行通信技术。JTAG和SWD是ARM内核芯片兴起之后,逐渐流行起来的,这三种技术描述的是编程过程中硬件层使用的通信协议,是最底层的一些技术规范。
用一个表格来对比这几种通信协议的特性:
综合上面的内容,只要UART、JTAG、SWD这些硬件通信协议能保证电气连接的规范性和稳定性,那么ISP、IAP就能对芯片正确地编程。
冒牌的单片机
视频加载中...
一、前言
前天,测试了这颗雅特力单片机 F421,遇到了问题。下面使用刚刚得到的 AT-LINK下载器对它进行调试。由于原来手工制作的电路板已经有些破损,下面使用一分钟制板方法,重新制作测试电路板。查看一下前面单片机遇到的问题的具体原因。
二、制作测试电路板
一分钟之后,得到了测试电路板。这个电路板采用了双面覆铜板,检查电路制作的情况,可以看到其中有一处存在着缺陷,下面进行手工修复。
焊接电路板。使用一颗新的 G8U7单片机,这颗芯片也是我从淘宝上购买的。其他的器件都从前面测试电路板上拆卸下来。清洗之后进行测试。使用探针夹子将 ATLINK 接入单片机,使用 AT ICP软件进行链接。很可惜,现在无法进行链接。
重新对芯片进行焊接。检查电路板连线。但是依然无法访问该单片机。的确令人感到不可思议。现在单片机静态功耗为 7mA,不知道这个数值是否正常。因为是测试电路,电路本身比较简单。至此,现在还无法继续进行下面的测试了。
此时,我只好默默地重新拿出来 ST-LINK调试器,查看是否能够连接到这颗AT32F421单片机,心理有些忐忑,不知道结果如何。如果AT-LINK都无法连接的单片机,ST-LINK难道能够链接吗? 最后的结果只能用一个词来形容,“神奇”。居然能够连接上 AT32单片机。这说明电路板没有问题,问题还是出现在调试器上。

再次测试 AT-LINK,故障依旧。使用 Keil环境进行调试,同样是错误的。
下面更换一颗F421单片机,这颗单片机应该是昨天 雅特力技术人员寄送过来的。神奇的事情发生了,现在可以通过 ICP连接到单片机了。Keil环境下,也能够连接单片机。这只能说明一个事情,那就是我购买的 F421单片机是一个假的单片机。
接下来,使用ST-LINK 对 该单片机进行调试,结果发现无法连接上了。现在这能说明一个事情,那就是我购买的是一颗假的冒牌单片机。左边是我购买的单片机,右边是雅特力技术人员发送的单片机。它们的芯片文字有着明显的差异。左边假冒的单片机,文字笔画比较粗,右边雅特力单片机则表面文字细腻,只有在偏振光下才能够看的清楚。现在终于真相大白了。
※总 结 ※
本文测试了雅特力单片机 F421G8U7,自己购买的单片机原来是不良商家使用ST单片机假冒雅特力的单片机。表面文字比较粗糙。这个事情让我体会到现在市场上单片机的混乱情况。
相关问答
单片机 程序烧录,说文件没法打开,点确定,确定两次,然后点下载...如果是用STC系列单片机,STC-ISP下载软件是STC官网发布的STC系列单片机...©2024中关村在线版权所有京ICP备14061128号{{title}}{{adW...
我用电脑键盘控制 单片机 灯为何不亮呢,请各位帮帮忙!-ZOL问答使用51单片机内部定时器和EEPROM即可实现有用(0)回复展开查看全部8条讨论...©2024中关村在线版权所有京ICP备14061128号{{title}}{{adWord}...
atmega16 单片机 输出pwm驱动电机?比如快速PWM方式,定点使用ICP寄存器,这时改变ICP的值,就改变了PWM频率,当然占空比也跟着变化了,需要你重新调整。Atmega16的OC1A和OC1B输出两路PWM的程序,...
CPU和 单片机 不同在哪?-ZOL问答STC单片机冷启动打开电源开关启动为冷启动在单片*运*状态复位重新启动为热启动有用(0)回复Beyond_DevilsRAM数据存储器,主要是指程序运行中的数据。...
单片机 中断响应时间肿么计算-ZOL问答单片机开发板参考:吴鉴鹰单片机开发板(有详细的视频教程,板子功能全面,适合学习使用有用(0)回复471253982a因为页面在组织数据和组织页面元素。第一次访问...
单片机 延迟400ms的程序肿么编啊,-ZOL问答你先把HEX文件编译出来,再在PROTEUS里,在单片机属性里有一选项,把HEX文件在电脑中的路径填进去,点确定就能用了有用(0)回复liliqiu712当然可以,学单片机你只...
单片机 中断 看的我直蒙-ZOL问答单片机一般都有很多个中断向量,看你需要什么样的中断需求(中断请求),通过设置中断向量来完成中断需求。然后在中断程序里写入你想完成的工作,CPU会在做完中断程...
手工焊接 单片机 怎么样不连锡-ZOL问答你问的是焊接贴片的单片机吧?如果是焊接插脚的,是不会连锡的。但是,焊接贴片...©2024中关村在线版权所有京ICP备14061128号{{title}}{{adWord}}{{fa...
怎么将汇编程序烧进stc系列的 单片机 -ZOL问答请去STC官网,他们有在keil中添加stc单片机的教程和库,照着教程做就行了,很简单...©2024中关村在线版权所有京ICP备14061128号{{title}}{{adWord}}...
学习c语言和 单片机 的笔记本用什么硬盘-ZOL问答©2024中关村在线版权所有京ICP备14061128号{{title}}{{adWord}}{{factory}}{{title}}{{adWord}}{{factory}}{{...