磁动力电子--本站原创--PC标准并行接口-SPP  点击数量阅读数:    关 闭
 
 
 

PC标准并行接口-SPP

作者:温正伟 原载:电子报


  PC机中的并行接口一般以D型25针母接口安装在PC机的后面板上,通常也称打印接口或LPT接口。在IEEE1284标准中定义了多种并行接口模式,常用的有以下三种:

  SPP (Standara Parallel Port) 标准并行接口

  EPP (Enhanced Parallel Port) 增强并行接口

  ECP (Extended Capabilities Port) 扩展功能并行接口

  这几种模式因硬件和编程方式的不同,传输速度可以从50K Bits/秒到2MB/秒不等。一般用以从主机传输数据到打印机、绘图仪或其它数字化仪器的接口,是一种叫Centronics的36脚弹簧式接口(通常主机上是25针D型接口,打印机上是36针Centronics接口)。Centronics接口的协议也将在下面进行讨论。

  SPP模式是标准并行接口模式,它可以提供50K Bits/秒的典型传输速度,其最高的传输速度可达150K Bits/秒。可进行9Bits的并行输入(现在的板载并行接口一般支持数据口的双向传输故最大可达17Bits的输入)和12Bits的并行输出。通常可选择Nibble(4bits)或Byte(8bits)的方式进行输入数据,还有一种Bi-directional的双向传输方式,这种方式需硬件支持。SPP硬件是由8条数据线,4条控制线和5条状态线所组成,它们分别对应三个不同的寄存器来进行数据的读写操作。

表一:D型25针和36针Centronics的针脚定义

针脚(Centronics)
针脚(D-Type25)
I/O
SPP信号
寄存器
硬件反转
1 1 输入/输出 nStrobe选通 控制
2 2 输出/* Data0数据位0 数据  
3 3 输出/* Data1数据位1 数据  
4 4 输出/* Data2数据位2 数据  
5 5 输出/* Data3数据位3 数据  
6 6 输出/* Data4数据位4 数据  
7 7 输出/* Data5数据位5 数据  
8 8 输出/* Data6数据位6 数据  
9 9 输出/* Data7数据位7 数据  
10 10 输入 nAck确认 状态  
11 11 输入 Busy忙 状态
12 12 输入 Pager-Out
Pager-End缺纸
状态  
13 13 输入 Select选择 状态  
14 14 输入/输出 nAuto-Linefeed
自动换行
控制
32 15 输入 nError/nFault错误 状态  
31 16 输入/输出 nInitialize初始化 控制  
36 17 输入/输出 nSelect-Printer
nSelect-In选择输入
控制
19-30 18-25 Gnd Ground信号地    

注:没有在表中列出的Centronics引脚定义有:15保留(悬空),16逻辑地,17机壳地,18保留(悬空),33地,34保留(悬空),35 +5V。表中“I/O”栏中的“*”表示如果并行接口支持双向传输则该引脚可以输入数据,表中“SPP信号”栏中,信号名称前的“n”表示该信号是低电平有效的。例如“nError”表示如果打印机出错则这个针脚将为低电平,正常为高电平(这里的信号是指定于打印机的,其它的外设可能有不同的定义)。表中的“硬件反转”栏所表示的意思是,输入的信号先被并行接口硬件反相再送到相应的寄存器。例如“Busy”,外部设备输入一个逻辑信号1(TTL+5V逻辑电平),信号被反相送入状态寄存器,这时读状态寄存器Bit7(最后一位)为0,如输入信号为0,Bit7的值则为1。

  并行接口输出的是TTL标准的逻辑电平,输入信号也要符合TTL标准。这种特性可以使接口容易应用在电子设计中。大部分的PC并行接口能吸收和输出12mA左右的电流,如应用时小于或大于这个值,应使用缓冲电路。

  现在整合在主板上的并行接口通常可以使用3BCh,378h和278h这三个基地址,它们几乎都支持SPP,ECP和EPP模式,你可以在BIOS设置为并行接口选择基地址(地址值为16进制数加“h”表示)。3BCh这个地址在早期的并口打印机适配器上是不支持EPP和ECP模式的。三个不同基地址的地址段如表二:

表二:

3BCh - 3BFh
在早期的并口适配卡中不支技ECP
378h - 37Fh
 
278h - 27Fh
 

  如果系统有不只一个的并行接口,每个占用一个并行口基地址,那我们如何知道LPT1占用什么基地址,LPT2占用什么基地址?如:当系统只有一个主板整合的并行接口,在BIOS中设为使用278h基地址,自然LPT1占用278h,如果再往主板插入一张使用3BCh基地址的打印机适配卡,这时LPT1占用3BCh,LPT2占用278h。这就是说LPT1,LPT2,LPT3,并没有指定基地址,启动时BIOS程序分别以3BCh,378h,278h去检测使用该基地址的并行接口是否可用,第一个检测通过的为LPT1,依此类推,直到检测完成,结果保存在特定的内存地址中,以供操作系统或软件使用。所用的内存地址和LPT号的关系如表三。每个编号值占用2Bytes,如LPT1为378h,则内存地址0000:0408的值为78,0000:0409的值为03。

表三:

内存地址
编号
0000:0408-0000:0409
LPT1的基地址
0000:040A-0000:040B
LPT2的基地址
0000:040C-0000:040D
LPT3的基地址

注:在旧式的系统还可能有0000:040E-0000:040F(LPT4的基地址),现在新的BIOS更多的用这个内存去保存PS/2或别的设备的设置。

  在windows系统中要读取这几个内存地址可能有点困难,特别对于初学者来说。因此我们可以用直接检测端口的方法来检测并行接口基地址分配,其方法是向基地址写一个非FFh的值,再读出该基地址的值,如果读出的是写入的值而不是FFh,表明地址是可用的。这种方法在DOS或Win9x系统是很容易实现的,在WinNT或Win2000下可用第三方写端口控件或自行编写有Ring0特权的程序。下面一段检测基地址的汇编修改一下可以镶入到C,VC++,Delphi,C++Builder中(只能在Win9X或Dos下正常运行)。

 mov dx,Address //Address为基地址(如为控制、状态地址时向指定口地址读写数据)

 mov al,Data //Data为要向基地输出非FFh的数据

 out dx,al //向基地址写数据

 in al,dx //读基地址数据

 mov Result,al //向主程序返回读出的数据,再用主程序比较Data和Result的值,若相同则该基地址可用

  SPP标准并行接口有三个寄存器,分别为数据寄存器,状态寄存器和控制寄存器(通常称为数据端口,状态端口,控制端口)。

 数据寄存器:

  数据寄存器所占用的地址是并行接口的基地址,连接于接口的2-9针,如果你的并行接口不支持双向传输,则它只能输出数据。

表四:

地址
I/O
数据位
引脚
SPP信号
数据位为1时引脚电平状态
基地址
输出
(如果并口支持双向传输则也可输入数据)
Bit0
2
Data0
H (H为高电平,L为低电平)
Bit1
3
Data1
H
Bit2
4
Data2
H
Bit3
5
Data3
H
Bit4
6
Data4
H
Bit5
7
Data5
H
Bit6
8
Data6
H
Bit7
9
Data7
H

 状态寄存器:

  状态寄存器占用的地址是基地址加一,与接口的10,11,12,13,15针相连,这个寄存器是只读寄存器,其中包含一个IRQ中断寄存器(由Ack相反后形成),当有中断发生这个数据位为“0”。要注意的是Bit7(引脚11)在输入+5VTTL电平时,数据值为”0”,有反转的特性。

表五:

地址
I/O
数据位
引脚
SPP信号
数据位为1时引脚电平状态
基地址+1
输入
Bit0
/
保留
/
Bit1
/
保留
/
Bit2
/
IRQ (Not)
/
Bit3
15
Error
H
Bit4
13
Select In
H
Bit5
12
Paper Out
H
Bit6
10
Ack
H
Bit7
11
Busy
L

 控制寄存器

  控制寄存器占用的地址是基地址加二,与接口的1,14,16,17针相连,寄存器可读写。其中Bit0,Bit1,Bit3有反转的特性。通常用于打印机控制时,这个端口为只读。这个端口还有高阻特性,在应用时可以根据要求加电阻,以使电平足够高或足够低。Bit4为IRQ应用,当向Bit4写入“1”时,将使ACK(引脚10)信号反相后成为中断请求IRQ信号,通常为IRQ5或IRQ7。

表六:

地址
I/O
数据位
引脚
SPP信号
数据位为1时引脚电平状态
基地址+2
输入/输出
Bit0
1
Strobe
L
Bit1
14
Auto Linefeed
L
Bit2
16
Initialize Printer (Reset)
H
Bit3
17
Select Printer
L
Bit4
/
Enable IRQ Via Ack Line
/
Bit5
/
Enable bi-directional Port
/
Bit6
/
/
/
Bit7
/
/
/

 握手信号:

  使用标准PC并行接口的打印机会用到Centronics标准的握手信号。时序图见图一。首先数据加到数据寄存器,然后检查Busy(引脚11)是否为高,为高打印机处在以下状态之一:正在输入数据、正在打印操作、打印机出错、处在脱机状态,这时打印机不接收数据,Busy为低时,nStrobe(引脚1)输出一最小宽度大于1us的负脉冲,打印机随后接收数据并使Busy变为高,打印机接收完一个字节后回送给并行接口nAck(引脚10)一个宽度大于5us的响应负脉冲,这个信号可以被并行接口硬件反相之后作为IRQ中断信号或做为查询的状态信号,由于该信号的负脉冲较短,一般不会查询它,而是查询Busy。打印机状态回复,准备接收下一个字节。在应用标准并行接口的外部设备中并不一定就会用到这种握手信号,通常它们都有自己相应的握手信号,在我们自己的制作中也可以制定相应的握手信号。

图一:握手信号

  现在的板载的并行接口都会支持EPP和ECP模式,由于硬件上数据端口是支持双向传输的,所以在SPP模式下也可在数据端口中输入数据。如果你用的是旧式的并行接口功能卡或你不想用数据端口输入数据,而又要用并行接口采集8Bit的数据时,还可以用以下的两种方法。一种是用控制端口和状态端口的输入功能组成8Bit的数据输入,但要注意输入电平和所对应的数据位的相互关系,可以用软件进行调整控制。另一种方式只用到状态端口做输入,因一次只能读取4Bit也就是半个字节,故又称Nibble Mode。具体电路图请参看图二。电路中用nStrobe控制74HC157(或74LS157)当前是读取前半个字节还是后半个字节,读取后只要把前后半个字节合并就可。

图二:8Bit读取

 
本文相关信息:
收录时间:2005年前
整理时间:2006.6.30
作者:温正伟
原载:电子报
相关阅读:

电脑小彩灯
微机并口在电子制作和维修中的应用
打造电脑音源切换器
PC标准并行接口-SPP
并口测试示波软件Port1.0
PC机标准并行接口的原理和应用(上篇)
PC机标准并行接口的原理和应用(中篇)
PC机标准并行接口的原理和应用(下篇)
我的口供-献给使用并口的朋友们

相关网站:
广告:
 
 
   最佳浏览 800*600 粤ICP备06079880号
Copyright(C) 2001-2008 www.cdle.net All rights reserved.
GOTO TOP
 
 
网警