学海荡舟手机网

主页 > 实用文摘 > 教育文摘_22 > > 详细内容

用下载电缆实现AT89S5X的ISP编程_单片机论文

摘要:下载电缆被广泛应用于电子系统设计与调试过程中。本文介绍它的基本原理和编程控制方法;针对目前单片机的isp串行编程模式列举实例,简要介绍at89s5x的串行编程的方法和部分协议,使用vc编程,应用下载电缆实现对at89s5x系列单片机的isp编程;文末提出统一下载电缆硬件或软件的设想,并提供可以下载支持多种单片机isp编程软件的网址。

    关键词:下载电缆 串行编程 at89s5x isp

引言

随着电子技术的日益发展,芯片的规模越来越大,封装日趋小型化,相应的对系统板级调试困难也在加大。ieee制定了标准测试端口与边界扫描的标准ieee std 1149.1,这就是jtag接口协议。jtag接口通过tck、tdi、tdo、tms四根信号线,以串行模式为系统提供了对复杂芯片的各引脚连通性测试,进步还能实现对可编程芯片的配置与处理器芯片的调试等等。下载电缆就是一种使用计算机的并行端口通过软件的仿零点实现jtag接口协议,访问可编程芯片的廉价工具。本文使用的下载电缆是altera公司为其可编程逻辑器件开发的byteblastermv电缆。isp(在系统可编程的简称)是最先由lattice公司提出的一种技术,是通过同步串行方式实现对其可编程逻辑器件的重配置。isp与jtag的接口协议很相像,只是后者形成了标准。isp现在已经成为一种概念,它的提出改变了传统硬件系统开发的流程,大大方便了开发者,加快了开发速度。现在大多数的可编程器件(fpga、cpld、dsp、mcu……)都支持isp特性。单片机也不例外,atmel公司推出的at89s系列51单片机也符合isp特性。

1 下载电缆的硬件

要实现jtag接口协议可以使用专用的ic,如74lvt8980、74lvt8990,它与mcu配合可以提供高速的jtag串行访问,成本较高。下载电缆则是实现jtag接口协议的廉价方案。它仅命名用74hc244做线路驱动,由计算机的并行端口引出i/o作为tck、tdi、tdo、tms等信号线。由于并口在spp模式下共有3个端口——数据输出端口、控制输出端口、状态输入端口,各种下载电缆究竟从那个端口引出jtag信号线几乎都不相同,图1、图2是两种下载电缆的原理图。

并口简介:

计算机的并行端口工作在spp模式下,对它的控制是通过数据输出端口、控制输出端口、状态输入端口来实现的。

并行口有25个引脚,其中包括8位数据线、5位状态线、4位控制线。

数据端口(378h):d0~d7用于数据输出。

状态端口(379h):*s7(busy)、s6(nack)、s5(pe)、s4(select)、s3(nerror)。

控制端口(37ah):*c3(nselin)、s2(ninit)、*c(anutofeed)、*c0(nstrobe)。

()(端口地址是缺省的lpt1设置;*表示此引脚有反向器)

表1为并行端口定义。对应原理图有:

altera的下载电缆

tck、tdi、tms、tdo分别对应d0、d6、d1、*s7;

atmel的电缆

tck、tdi、tms、tdo分别对应*c0、d0、*c3、s6。

表1 并行端口定义表

引脚号名   称数据位
1nstrobe*c0
2d0d0
3d1d1
4d2d2
5d3d3
6d4d4
7d5d5
8d6d6
9d7d7
10nacks6
11busy*s7
12pes5
13selects4
14auto feed*c1
15nerrors3
16ninitc2
17nselin*c3
18~25gndgnd

2 下载电缆的编程方法

用计算机控制下载电缆实现jtag协议,就是对并口3个i/o端口的读写操作,用0-1的变化来模拟jtag时序。在win98和win2000环境下读写i/o,需要驱动程序。本文使用driverlinx port i/o driver(可以从www.sstnet.com下载)来实现i/o端口访问。安装dlportio以后,通过调用dlportio.dll动态连接库中的

uchar dlport_api d1portread portuchar(in ulong port);

    void dlport_api d1portwrite portuchar(in ulong port,in uchar value);两个函数就可以访问位于378h、379h、37ah(这是缺省的lpt1设置)的3个并口i/o端口。程序段1实现了对altera下载电缆的一次电平赋值:

程序段1

altera下载电缆电平赋值函数

void cavrispdlg::setbit(){

unsigned char value=0;

if(!m_tck)value|=0x01;

if(!m_tms)value|=0x02;

if(!m_tdi)value|=0x40;

dlportwriteportuchar(0x378,value);

value=dlportreadportuchar(0x379);

if(value & 0x80)m_tdo=0;

else m_tdo=0;

}

通过以上程序依次改变jtag各接口i/o的电平状态,模拟jtag协议的时序,就可以访问支持jtag标准的各种芯片。

3 isp协议的解析与实现

对at89s5x系列单片机isp编程不使用jtag协议,而使用spi同步串行接口协议,如图3所示。

    针针这种8位spi接口协议,我们使用数组来模拟时序:

时钟信号固定为unsigned char sck[19]={0,0,1,0,1,0,1,0,1,0,10,1,0,1,0,1,0,1,0,0};

输出的数据信号由程序实现情况自动生成数组unsigned char mosi[19];

输入的数据根据读入的信号生成数组unsigned char miso[19];

再调用上文的setbit()函数,依次发送19位的jtag接口i/o状态,同时读入返回信号,即完成一次对at89s5x芯片的spi单字节访问。

在单字节访问基础上,参考atmel公司的at89s5x数据手册的串行编程指令表中的指令格式,就可以实现isp了。

表2为at89s51串行编程指令表。

表2 at89s51串行编程指令集

指  令指  令  模  式说  明
第1字节第2字节第3字节第4字节
编程使能1010110001010011xxxxxxxxxxxxxxxx使能串行编程
芯片擦除10101100100xxxxxxxxxxxxxxxxxxxxx擦除程序存储顺
读程序字节00100000xxxxa11~a8a7~a0d7~d0字节模式读程序
写程序字节01000000xxxxa11~a8a7~a0d7~d0字节模式写程序
写保护位10101100111000b1b2xxxxxxxxxxxxxxxx写保护位
读保护位00100100xxxxxxxxxxxxxxxxxxlb3~lb1xx读当前保护位
读标志字节00101000xxxa5~a1a0xxxxxx标志数据读取标志数据
读程序页00110000xxxxa11~a8数据0数据1…255页模式读程序
写程序写01010000xxxxa11~a8数据0数据1…255页模式写程序

注:①串行编程要在rst端接高电平情况下实现;②x表示此位关心;③a11~a0是要访问字节地址;④d7~d0是读写的数据;⑤b1、b2是保护位;⑥lb3~lb1表示3种状态。

针对at89s51单片机,其标志字节为:(00h)1eh、(02h)51h、(04)06h.

程序段2将得到at89s51单片机的标志字节。(其中spicomm()为spi单字节访问函数)。

程序段2

获得at89s51单片机标志字节的程序段

cstring str;

for(addr=1;addr<3;addr++){

m_comm=0x28;

spicomm();

m_comm=addr;

spicomm();

m_comm=0;

spicomm();

m_comm=0;

spicomm();

str.format(“0x%02x”,m_dat);

m_out+=str;

}

图4是at89s51进行串行编程时的硬件原理图。

4 小结

下载电缆为我们提供了深入芯片内部的触手。通过jtag标准协议,我们可以用下载电缆检查芯片焊接连通性、重新配置可编程器件、下载程序固件以及调试处理器的运行。

小到8位单片机at89s5x、avr的串行编程,可编程器件max7000的配置;大到32位嵌入式处理器的调试,上万门fpga芯片的配置都可以见到下载电缆的身影。例如,arm使用下载电缆的jtag仿真可以通过embeddedice接口实现对arm的开发调试,或者使用arm的边界扫描特性为嵌入式系统板下载启动程序等等。

目前下载电缆的使用越来越多,各个厂商分别推出了自已的符合jtag标准的芯片或者是使用isp技术的新产品。与此同时,下载电缆的种类也非常多,大多数的区别仅在于并口信号与jtag信号的对应关系不同。往往有时候开发一个产品,要用到很多种不同的电缆。我们希望可以使用一种标准的下载电缆来实现所有jtag应用;或者是通过一个计算机程序可以通过配置文件来使用各种下载电缆。在我们的blmvisp软件中,就支持了现有的两种电缆。

使用isp技术可以大大加快硬件开发速度。下载电缆与计算机软件的配合使用也可以降低开发成本,非常适合个人爱好者与初学者使用。

有兴趣的读者可以下载blmvisp演示版的vc源程序压缩包(demo_blmvisp.zip),以便参考;也可以访问://51kaifa.nease.net或者email:blmv@eyou.com。