admin 管理员组

文章数量: 1087139


2024年4月30日发(作者:jfinal框架定义接口)

维普资讯

经验交流 

■■ 

单片机的ISP在线编程设计 

一九江学院 严青 屈晓-T- 

引 言 

随着电子技术的日益发展,芯片的规模越来越大,封 

装日趋小型化,相应地对系统板级调试的困难也在加大。 

1.2并行口编程简介 

Windows对系统底层操作采取了屏蔽的策略,但是 

在硬件或系统软件开发中只要涉及系统底层的操作,就不 

得不深人到Windows的内核去编写属于系统级的设备驱 

在传统的调试方式中,频繁的调试和更换程序需要频繁地 

插拔芯片,开发效率极低。AT89S系列单片机提供的ISP 

在线编程技术彻底地改变了传统的开发模式,开发单片机 

动程序。对并行口的读/写操作就是如此。为了绕过 

Windows安全保护机制,需要允许32位Windows程序直 

接对I/O口进行操作。这里使用由Yariv Kaplan编写的 

系统时不会损坏芯片的引脚,加速了产品的上市并降低了 

研发成本,缩短了从设计、制造到现场调试的时间,简化了 

生产流程,大大提高了工作效率,因此它是对市场定型产 

品进行现场升级和维护的经济、有效的方式,极大地促进 

了PLD产品的发展。 

WinIo库中的几个函数来实现对I/O口的读/写。 

(1)初始化与终止 

对端口读/写前后要分别初始化和终止。 

InitializeWinlo(); 

ShutdownWinlo(); 

1 PC机并行口 

1.1 并行口硬件接口简介 

标准并行口有25个引脚,其中数据端口引脚为2~ 

9,状态端口引脚为15、10~ ,。 , 

(2)安装与卸载 

如果操作系统是Windows98或Windows95,则需要 

调用驱动函数。 

InstallWinIoDriver(PSTR pszWinloDriverPath,bool 

IsDemandLoaded—false); 

RemoveWinloDriver(); 

13,控制端口引脚1、14、16、\O O O O O O O O O O O O O/ 

17用于连接器件,其他引脚 

25针并行口如图I所示。 

『__——————— 

(3)读/写i/o口 

GetPortVal(WORD wPortAddr,PDWORD pdw— 

PortVal,BYTE bSize); 

SetPortVal(W0RD wPortAddr,DW0RD dw— 

PortVal,BYTE bSize); 

: 7. 引 N 图1 25针并行口 

。 

并行口工作在SPP模式下,PC机是通过对3个8位 

端口寄存器的读或写来实现对它们的控制。端口寄存器 

分别是: 

◆数据端口(地址0x378)为D7~DO,对应引脚P9 

GetPortVal函数从指定端口读取一个BYTE/ 

WORD/DWORD类型的值;SetPortVal函数向指定端口 

写入一个BYTE/WORD/DWORD类型的值;wPortAddr 

P2: 

◆状态端口(地址0x379)为S7~S3,对应引脚P11、 

P10、P12、P13、P15; 

是指定一个端口地址值;pdwPortVal为指向一双字节型 

变量的指针,该变量存储从wPortAddr端口读取的值; 

dwPortVal为一双字节型变量写到wPortAddr端口中; 

◆控制端口(地址0x37A)为C3 ̄CO,对应引脚P17、 

P16、P14、P1。 

bSize指定读取字节数,值可以为1、2或4。 

注意:S7、CO、C1、C3信号的逻辑状态在连接器处是 

与相应寄存器位相反的。对这些位进行写操作时,写入的 

值应该与连接器处设置的值相反;同样,进行读操作时,读 

2 AT89S5X系列单片机 

2.1 AT89S51简介 

AT89S51是一个低功耗、高性能CMOS 8位单片机, 

取的值也与连接器处设置的值相反。 

paper@mesnet.conr.on(投稿专用) Micr。controllers&Embedded systems 6 5 

维普资讯

腿 

片内含4 KB ISP(In—System Programming)的可反复擦 

写1 000次的Flash只读程序存储器。该器件采用Atmel 

公司的高密度、非易失性存储技术制造,兼容标准MCS一 

51指令系统及8OC51引脚结构,芯片内集成了通用8位 

中央处理器和ISP Flash存储单元。功能强大的 

O-- 14

O- 2

O--- 3 

、_ 

, 

OO- 豆 

— 

O- 

o—

4 

\ 一 

- -W 

 18 

O- 6 

AT89S51可为许多嵌入式控制应用系统提供高性价比的 

解决方案。 

O--- l9 

O- 7 

o— 上 

O- jL 

O--- 2l 

O—

工作 

指示灯 

2.2 AT89S51串行编程时序及指令 

2.2.1 串行编程模式下的时序分析 

RST

SCK

:0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 

:0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0 

X X X X X X X X 1 

O- 9 

 22 

O- J 

O---- 23 

c>_ ll 

0一

 且

 

 

l2 

V 2S ((}NDI 

\D_ DB25(并行口 

并行 

图2 AT89S52下载线电路图 

MOSI: 

MISO: X X X X X X X X X 

2.2.2串行编程指令 

串行编程使用4字节协议,指令如表1所列。 

表1 串行编程指令 

指令

字节1 字节2 

0 

101

011

0 

4 ISP下载线的软件设计 

在硬件设计的基础上,通过对ISP时序和 

字节4

X XXX

XXX

X 

指 

令格 式

字节3 

作 

串行编程指令的分析,采用Visual C++6.0 

编写了下载线程序。其主要关键编程函数 

当RST=…

 

时,

编 程使能1 010

1 100

X XXXX 

XXX

O 1101001( 

输出)

打开串 口编程

略——编者注。 

芯 

片擦除

010

1 

1 100

O 

O1O

1 

00x

X XXX

X XXX

X XXXX XXXX XXX

擦除Flash 存储 器

阵列 

字节方式读 存储 器

数据 

结 语 

以下是作者在调试中获取的一些参数, 

读数据

(字节 

模式)

X XXX

A7A6A 5A4

A3A2A 1A0

A7A6A 5A4

A3A2A 

1A0

D7D6D 5D4

D3D2 D1 

0 000

A11A10A 9A8

0 

100

000

0 

XXXX 

A11

写数据

(字节 模式)

写 

加密位

D7D6D 

5D4

1DO

D3D2D 

字节方式向 

存储器

写 

入数据

写 

加密位

希望对大家有所帮助。 

参考资料: 

A10A 

9A8

1 

1001O10 11000B 1B2

1 

X XXXX XXX

晶体振荡器的频率为33 MHz(MAX), 

所以周期T一1/F一1/33 MHz一30 ns 

(MIN);SCK正脉冲宽度为8 x 30 ns一240 

加密位

读 

读签 

字节

0 010

0 100

0 

010

X 

XXX

X XX X

X XXXX 

XXX

LB3

XXX 

LB2LB 

XX

读 

加密位 

读签 

名字节 

A7 XXXX XXX签 名字节

1 

000

A11A1OA 9A8

0 

010

X XXX

ns(MIN);SCK负脉冲宽度为8x 30 ns一240 

ns(MIN);MOSI建立到SCK变高时间为30 

读数据

(页 

模式)

写数据

(页 

模式)

字节0

1 

000

A11A1OA 9A8 

0 

101

X 

XXX

字 节1~

255

字节 

字 

节1~

255

字节. 

页面方式读 

存储 器

数据 

页面方式向 存储器

写 

ns(MIN);SCK变高后MOSI保持时间为2 

x 30 ns(MIN);SCK变低到MISO有效时间 

为10 ns(MIN)~32 ns(MAX)(一般取16 

字节0

0 000

Al1A10A 9A8 

ns);芯片檫除指令周期为500 ms;串行字节 

3并行口与AT89S5X单片机的硬件设计 

通过对并行口和编程时序的分析,我们制作了 

AT89S5X单片机的ISP下载线。下面对并行口与单片机 

的连线作一简单介绍:并行口P2引脚连接单片机的P1.5 

引脚(MOSI);并行口P10引脚连接单片机的P1.6引脚 

(MISO);并行口P1引脚连接单片机的P1.7引脚(SCK); 

写周期为64x 30 ns+400 ns。 

实验数据: 

晶体震荡器的频率为33 MHz(MAX),所以周期T一 

1/F=1/33 MHz=30 ns(MIN);芯片擦除指令周期为200 

ms;SCK变高后MOSI保持时间为1 ms(MIN)。 

编者注:本文为期刊缩略版,全文见本刊网站www. 

并行口P17引脚连接单片机的RST引脚,如图2所示。 

mesnet.corn.cn。-E 

66 《车I;;缸 入主:鑫0刍阁))  ……… ,i.f-&士田、 

维普资讯

- -。 

经验交流 

《鼍誊强 

同步队列串行接口QS P I的研究与应用 

■电子科技大学 王晗 李F-军 郭志勇 

MCU同外部设备的数据传输有两种方式,一种是并 

行数据传输方式,另一种是串行数据传输方式。串行数据 

传输方式信号线少,协议简单,在长距离、低速率的传输中 

得到广泛应用,常用的有SPI、I C、UART等串行数据传 

输协议。其中,SPI协议为Motorola公司推出的同步串行 

外围接口协议,Motorola公司的低端MCU上基本都集成 

了SPI模块。在SPI协议的基础上,Motorola公司对其功 

能进行了增强,增加了队列传输机制,推出了队列串行外 

围接口协议(即QSPI协议)。使用该接口,用户可以一次 

内 

部 

墨 熟H。睥 一 

QSPI_DIN 

队列控制块 

性传输包含多达16个8位或16位数据的传输队列。一 

总 

线 

I一8/16位移位L 

导‘_J Il l童壹整J面  

l I墼塑童查整l 

QSPI_DOUT 

4 QSPI 】 

旦传输启动,直到传输结束都无需CPU干预,极大地提高 

了传输效率。该协议在随后推出的ColdFire系列MCU 

中得到广泛应用。 

总线时钟—( 卜 噩亘翌垂亘篁 墅: 

图1 QSPI模块的结构框图 

1 QSPl工作原理 

QSPI模块的结构如图1所示。与SPI相比,QSPI结 

构最大的特点是以8O字节的RAM取代了SPI的发送和 

接收数据寄存器。8O字节的RAM分成3部分:16字的 

发送RAM,16字的接收RAM和16字节的命令RAM。 

在QSPI模块的QWR寄存器中,NEWQP和ENDQP 

域分别决定了传输队列的起始点和结束点。起始点和结 

束点可以是16个QSPI 

传输控制组的任意一个。 

当QSPI传输启动时, 

QSPI模块将从起始点开 

始依次发送准备好的数 

这3部分形成了具有16个QSPI传输控制组的传输队列, 

每个QSPI传输控制组由1个命令RAM、1个发送RAM 

和1个接收RAM组成。每个QSPI传输的数据长度、片 

选等信息可由该QSPI传输控制组的命令RAM单独 

决定 。 

I QP-=NEWQP 

●一 

l 

l 

传输QP指向的数据 l QP=QP+1 

据直到结束点,整个过程 

无需CPU干预。典型的 

由于SP1只有1个8位的发送数据寄存器,所以CPU 

每次最多只能准备一个字节的待发送数据。而QSPI拥 

有具有16个QSPI传输控制组的传输队列,所以CPU每 

次最多可以准备16个待传输的数据,并且可以通过命令 

RAM设置每个待传输数据的长度。 

QSPI传输流程如图2所 

示,其中QP为传输队列 

指针,指向即将传输的 

数据。 

社,2005. 

图2典型的QSPI传输流程 

参考文献 

[1]王沫楠,等.单片机原理及应用[M1.北京:中国计量出版 

社,2007. 

E3]李朝青.单片机原理及接LI技术EM].北京:北京航空航天 

大学出版社,2005. 

E43 Atmel公司.AT89S5X系列单片机数据手册,2005—03. 

(收修改稿日期:2007-12-29) 

E2]曹克澄.单片机原理及应用[M1.北京:机械工业出版 

paper@mesnet.corn.cn(投稿专用) Micr。c。ntr。11ers&Embedded Systems 6 7 


本文标签: 传输 引脚 串行 编程 端口