82基于AT89SXX系列单片机的ISP编程Word文档格式.docx
《82基于AT89SXX系列单片机的ISP编程Word文档格式.docx》由会员分享,可在线阅读,更多相关《82基于AT89SXX系列单片机的ISP编程Word文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
并口简介:
计算机的并行端口工作在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
3
D1
4
D2
5
D3
6
D4
7
D5
8
D6
9
D7
10
nAck
S6
11
Busy
*S7
12
PE
S5
13
Select
S4
14
AutoFeed
*C1
15
nError
S3
16
nInit
C2
17
nSelin
*C3
18~25
GND
5.2.2基于ISP技术的下载电缆的编程实现
用计算机控制下载电缆实现JTAG协议,就是对并口3个I/O端口的读写操作,用0-1的变化来模拟JTAG时序。
在Win98和Win2000环境下读写I/O,需要驱动程序。
可以使用DriverLINXPortI/ODriver(可以从WWW下载)来实现I/O端口访问。
安装DLPORTIO以后,通过调用DLPORTIO.DLL动态连接库中的UCHARDLPORT_APID1PortReadPortUchar(INULONGPort);
VOIDDLPORT_APID1PortWritePortUchar(INULONGPort,INUCHARValue);
两个函数就可以访问位于378H、379H、37AH(这是缺省的LPT1设置)的3个并口I/O端口。
程序段1实现了对Altera下载电缆的一次电平赋值:
程序段1
Altera下载电缆电平赋值函数
VoidCAvrISPDlg:
:
Setbit(){
Unsignedcharvalue=0;
If(!
m_tck)value|=0x01;
m_tms)value|=0x02;
m_tdi)value|=0x40;
DlPortWritePortUchar(0x378,value);
Value=DlPortReadPortUchar(0x379);
If(value&
0x80)m_tdo=0;
Elsem_tdo=0;
}
通过以上程序依次改变JTAG各接口I/O的电平状态,模拟JTAG协议的时序,就可以访问支持JTAG标准的各种芯片。
5.2.3ISP协议的分析与实现
对AT89S5X系列单片机ISP编程不使用JTAG协议,而使用SPI同步串行接口协议,如图3所示。
针针这种8位SPI接口协议,我们使用数组来模拟时序:
时钟信号固定为unsignedcharsck[19]={0,0,1,0,1,0,1,0,1,0,10,1,0,1,0,1,0,1,0,0};
输出的数据信号由程序实现情况自动生成数组unsignedcharmosi[19];
输入的数据根据读入的信号生成数组unsignedcharmiso[19];
再调用上文的Setbit()函数,依次发送19位的JTAG接口I/O状态,同时读入返回信号,即完成一次对AT89S5X芯片的SPI单字节访问。
在单字节访问基础上,参考Atmel公司的AT89S5X数据手册的串行编程指令表中的指令格式,就可以实现ISP了。
表2为AT89S51串行编程指令表
表2AT89S51串行编程指令集
指
令
令
模
式
说
明
第1字节
第2字节
第3字节
第4字节
编程使能
10101100
01010011
XXXXXXXX
使能串行编程
芯片擦除
100XXXXX
擦除程序存储顺
读程序字节
00100000
XXXXA11~A8
A7~A0
D7~D0
字节模式读程序
写程序字节
01000000
字节模式写程序
写保护位
111000B1B2
读保护位
00100100
XXLB3~LB1XX
读当前保护位
读标志字节
00101000
XXXA5~A1
A0XXXXXX
标志数据
读取标志数据
读程序页
00110000
数据0
数据1…255
页模式读程序
写程序写
01010000
页模式写程序
注:
①串行编程要在RST端接高电平情况下实现;
②X表示此位关心;
③A11~A0是要访问字节地址;
④D7~D0是读写的数据;
⑤B1、B2是保护位;
⑥LB3~LB1表示3种状态。
针对AT89S51单片机,其标志字节为:
(00H)1EH、(02H)51H、(04)06H.
程序段2将得到AT89S51单片机的标志字节。
(其中SPIcomm()为SPI单字节访问函数)。
程序段2
获得AT89S51单片机标志字节的程序段
CStringstr;
for(addr=1;
addr<
3;
addr++){
m_comm=0x28;
SPIcomm();
m_comm=addr;
m_comm=0;
Str.Format(“0x%02X”,m_dat);
m_out+=str;
图4是AT89S51进行串行编程时的硬件原理图。
4小结
下载电缆为我们提供了深入芯片内部的触手。
通过JTAG标准协议,我们可以用下载电缆检查芯片焊接连通性、重新配置可编程器件、下载程序固件以及调试处理器的运行。
使用ISP技术可以大大加快硬件开发速度。
下载电缆与计算机软件的配合使用也可以降低开发成本,非常适合个人爱好者与初学者使用。
参考文献:
1.《单片机与嵌入式系统应用》
2.Atmel公司AT89C51资料
附:
另外一种下载线