《匠人手记》推荐网上购书渠道:
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
卓越亚马逊网 购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

 匠人观点: 好记性不如烂笔头  
 黑色幽默:三鹿门——后世畅想

用下载电缆实现AT89S5X的ISP编程
程序匠人 发表于 2005-11-17 22:51:00  阅读全文 | 回复(0) | 引用通告 | 编辑

用下载电缆实现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 并行端口定义表

引脚号 名   称 数据位
1 nStrobe *C0
2 D0 D0
3 D1 D1
4 D2 D2
5 D3 D3
6 D4 D4
7 D5 D5
8 D6 D6
9 D7 D7
10 nAck S6
11 Busy *S7
12 PE S5
13 Select S4
14 Auto Feed *C1
15 nError S3
16 nInit C2
17 nSelin *C3
18~25 GND GND

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字节
编程使能 10101100 01010011 XXXXXXXX XXXXXXXX 使能串行编程
芯片擦除 10101100 100XXXXX XXXXXXXX XXXXXXXX 擦除程序存储顺
读程序字节 00100000 XXXXA11~A8 A7~A0 D7~D0 字节模式读程序
写程序字节 01000000 XXXXA11~A8 A7~A0 D7~D0 字节模式写程序
写保护位 10101100 111000B1B2 XXXXXXXX XXXXXXXX 写保护位
读保护位 00100100 XXXXXXXX XXXXXXXX XXLB3~LB1XX 读当前保护位
读标志字节 00101000 XXXA5~A1 A0XXXXXX 标志数据 读取标志数据
读程序页 00110000 XXXXA11~A8 数据0 数据1…255 页模式读程序
写程序写 01010000 XXXXA11~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),以便参考;也可以访问:http://51kaifa.nease.net或者email:blmv@eyou.com。

本站提示:AT89S5X及AVR系列单片机串行下载软件
BLMV ISP软件 Ver1.01 下载地址:http://www.cetinet.com/download/list.asp?id=258
硬件支持本站的FPGA/CPLD并口下载线 请浏览:http://www.cetinet.com/ad_Altera/
软件需要VB/VC++的并口驱动包 下载地址:http://www.cetinet.com/download/list.asp?id=257

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    往日酷贴

     
     
     

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!