电工学习网

 找回密码
 立即注册
查看: 4872|回复: 1
打印 上一主题 下一主题

单片机烧写程序步骤

[复制链接]
跳转到指定楼层
楼主
发表于 2020-3-25 16:46:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
  早期一般是将调试好的单片机程序写入到 ROM、 EPROM 中,这种操作就像刻制光盘一样,实在高电压方式下写入,PROM 是一次性写入,存储内部发生变化,有些线路或元件就被烧断,不可再恢复,所以叫做烧写,EPROM 可以使用紫外线将原来写入的内容擦除,重新烧写,目前大量采用 EEPROM,是可以电擦写的存储器。
  单片机启动时会直接运行这些芯片中的程序,完成既定的功能。
  所谓烧写,其实就是对单片机中的 rom 进行擦写。现代工艺下,rom 已经可以进行多次擦写,但在早期,rom 只能一次性设计好,例如早期的 plc,把二极管上的丝烧了后就永久编码出 1。而我们知道,单片机程序经编译连接后传给机器便是机器语言,简而言之就是一大堆 1 和 0。在少些过程中,我们将烧不烧一大堆 MOS 管和 BJT 的丝或连不连上通道来表示这些 1 和 0。
单片机烧写程序步骤

  烧写的三种方式:
  1. 把单片机当做一个 ROM 芯片,早期的单片机都是如此。将单片机放在通用编程上编程时,就像给 28C256 这样的 ROM 中写程序的过程一样。只是不同的单片机使用的端口,编程用的时序不一样。
  2. 像 AT89S52 或 AVR 单片机一样,在单片机上有 SPI 接口,这时用专用的下载线将程序烧写到单片机中。这时不同的是,单片机的 CPU 除了执行单片机本身的指令之外,还能执行对 ROM 进行操作的特殊指令,如 ROM 擦除、烧写和校验指令。在编程 ROM 时,下载线先通过传输这些指令给 CPU 执行 (擦除 ROM、读入数据、烧写 ROM、和校验 ROM),这样完成对单片机的 ROM 的烧写。此外,现在普遍使用的 JTAG 仿真器也是这样,单片机的 CPU 能执行 JTAG 的特殊指令,完成对 ROM 的烧写操作。
  3. 引导程序,即单片机中已经存在了一个烧写程序。启动单片机时首先运行这程序,程序判断端口状态,如果符合“要烧写 ROM”的状态存在,就从某个端口(串口、SPI 等等)读取数据,然后写入到单片机的 ROM 中。如果没有“要烧写 ROM”的状态,就转到用户的程序开始执行。像 AVR 单片机的 bootloader 方式、STC 的串口下载方式,还有其他单片机的串口编程等等都是这样。

回复

使用道具 举报

沙发
 楼主| 发表于 2020-3-25 16:47:47 | 只看该作者
单片机是一种可编程控制器,搭好硬件电路后,可以利用程序实现很多非常复杂的逻辑功能,与纯硬件电路相比,简化了硬件外围的设计、方便了逻辑的设计、丰富了逻辑的输出。不同厂家的单片机需要不同编程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引脚。以20引脚JTAG为例,所设计的JTAG烧写电路如下图所示:

单片机烧写程序步骤
上图中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等芯片来实现,通过MAX232实现的UART烧写电路如下所示:

单片机烧写程序步骤
在与单片机连接的时候,一定要注意交叉连接,所谓交叉连接即,单片机的TXD接串口RXD,单片机的RXD接串口TXD,否则数据通信失败。51单片机在使用该方式下载时需要断一下点再上电才能下载。
STM32单片机可以使用UART来实现程序下载,但是需要选择BOOT的模式,现在通过CH340G芯片可以实现自动ISP的下载方式,即不需要手动设置BOOT模式。
4.SWIM单总线下载方式
这种下载方式是针对STM8系列的单片机,这种方式只需要一根线即可实现程序的下载,所使用的工具为ST-Link,如下图所示:

单片机烧写程序步骤
以上为几种常见的烧写方式以及所使用的工具,欢迎大家留言评论,如果转载请注明作者信息和头条出处,感谢支持。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-19 13:12

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表