并行端口接口资料.doc
《并行端口接口资料.doc》由会员分享,可在线阅读,更多相关《并行端口接口资料.doc(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流并行端口接口资料.精品文档.并行端口接口目录一、标准并行端口(SPP)1.1 并行端口导论1.2 硬件特性1.3 端口地址1.4 软件寄存器(SPP) 1.4.1 双向端口 1.4.2 并行端口用于8比特输入 1.4.3并行端口IRQ的使用1.5 编程二、增强型并行端口(EPP)2.1 增强型并行端口2.2 EPP硬件特性2.3 EPP握手(Hand shake)2.4 EPP软件寄存器三、扩展功能端口(ECP)3.1 扩展能力端口入门3.2 ECP硬件特性3.3 ECP握手3.4 RLE运行长编码3.5 ECP软件寄存器3.6 ECP扩展控
2、制寄存器(ECR)3.6.1 ECP的配置寄存器A(cnfgA)3.6.2 ECP的配置寄存器B(cnfgB)一、 并行端口1.1 并行端口导论并行端口在接口设计工程中是最常用的。该端口在任何规定时间内将允许输入达到9比特,输出达到12比特。该端口由4条控制线,5条状态线和8条数据线组成。在PC机后部常常可以见到作为D型25脚阴性连接的端口,或者是D型25引脚的阳性连接。这将是一个RS232串行端口和一个完全不同的端口。关于RS-232串行端口的大量资料可以查看网终止提供的信息。网址为:在1994所以前,连接比如打印机、扫描仪、CD-ROM等设备还没有设置并行端口如何工作的标准。一些人在他们的
3、驱动器中使用TTL(Transistor to Transistor Logic)技术,然而多数人(尤其是最近)使用CMOS(Comp Lementary Metal Dxide Semiconductors)技术。IEEE 1284-1994标准,说明了五种工作模式,它们是:1、 兼容模式2、 半字节模式(本文档中没有对该项进行描述)3、 字节模式(本文档中没有对该项进行描述)4、 EPP模式(增强型并行端口模式)5、 ECP模式(扩展能力模式)其目的是为了设计新型的驱动器和设备,他们之间能够彼此兼容且向下兼容并行端口(SPP),兼容模式,半字节模式和字节模式仅使用于并行端口卡上的标准硬件。
4、而EPP模式和ECP模式需要运行速度更快的附加硬件,并且仍旧向后兼容标准并行端口。正如通常所知“兼容模式”或是Centronics模式,仅以每秒50K字节的典型速度传送数据,但是能够达到每秒150K字节。为了接收数据,你必须把这种模式设为半字节式或字节模式。半字节模式在反方向能够输入一个半字节(4比特),例如从设备到计算机。字节模式使用并行双向的特点(仅在某些卡中有此特性)能够在反方向输入一个字节(8比特)数据。扩展型和增强型并行端口使用附加硬件以控制握手。为输出一比特数据到打印机(或者是其它设备上)可使用兼容模式,软件必须是有以下功能: 写字节到数据端口 检查,确定打印机是否忙?如果忙,打印
5、机不按收任何数据;如这样写的任何数据将被丢失。 设置选取通脉冲(引脚1)为低。来通知打印机在数据线上的数据正确。(引脚2-9) 在设置选通脉冲为低之后,等待大约5微秒后,重新设置选通脉冲为高。(step 3)这就限制了端口可能运行的速度,EPP和ECP端口通过硬件检查确认打印机是否忙,产生一个造通脉冲来解决这一不是。这意味着仅有一个I/O指令需要执行,这样速度就提高了。这些类型的端口,一秒中大约能输出1Mb,ECP端口还具有使用DMA通道的优点,这样不需执行I/O指令数据就能够被传输。1.2 硬件特性下面是D型25脚连接器(插孔)和(Centronics 34脚连接器)到“引脚输出”表D型25
6、脚连接器是计算机并行端口最常用的连接器,而Centronics连接器常见用于打印机。IEEE 1284标准明确说明了三种不同类型用于计算机并行端口的连接器,第一种类型为1284型A,它是D型25脚常用于计算机后部的连接器。第二种类型为1284型B,它是广泛用于打印机的36引脚Centronics连接器。IEEE 1284型C也为36引脚连接器,类似与Centronics连接器,但形状较小一点,该类型的连接器据说有一个接线柱弹簧锁(Clip latch)较好的电气特性,且易于安装,它还包括两个以上的信号引脚,这种信号被用来查看其它设备是否连接好,是否有电。1284型C连接器,被再次要求进行重新设
7、计,因此在不久的将来,我们将会看到新型的连接器。表一:D-型25脚并行端口连接器的引脚分配。Pin No(D-型25)Pin No(centronics)SPP Signaldirection Register HardwareIn/out Inverted11NStrokeIn/outcontrotYes22Data 0OutData33D1OD44D2OD55D3OD66D4OD77D5OD88D6OD99D7OD1010NAckInStatus1111BusyInSYes1212Paper-out /Paper-endInS1313Select InS1414n Auto-Linefee
8、d In/outControl1532n Error/n FaultInStatus1631n InitializeIn/outControl1736n select-printer/n select-InIn/outControlYes18-2519-30GroundGnd上表中在信号名前使用“n”提醒注意该信号的低有效。例如:n Error表示当该线上信号为低时打印机出错,该线通常为高,表示打印机正常工作。“Hardware Inverted ”(硬件反向)意味着信号是通过打印机卡硬件实现反向的。例如Busy线,施加于该引脚的信号为+5v(逻辑1)目被状态寄存器读取,该信号应在相应的位置被
9、回复为逻辑0。1.3 端口地址打印机/并行端口有3个常用的地址,已在下表2中列出。3BCh基址如今不是被典型使用的,但当并行端口连接视频卡时就使用该地址。固定用于LPT1 & LPT2的基址典型地为378h & 278h,小写字符h表示为16进制数,在不同机器中这些地址允许改变。表二:端口地址Address Notes:3BCh-3BFh 具体用于视频卡的并行端口不支持ECP地址378h37Fh 常用于LPT1278h27Fh 常用于LPT2最初打开计算机时,BIOS(Basic Input/ Output System)将确定端口的数目,并分配设备标号LPT1,LPT2,LPT3给它们。BI
10、OS首先查看地址3BCh,如果在此处发现了一个并行端口,该端口将被分配作为LPT1。然后查看地址378h,如在此处发现并行端口,将把下一个空闲的设备标号分配给它,该标号可能为LPT1前提为在3BCh处没有接口卡;或者为LPT2,在3BCh处有接口卡,最后将访问的地址为378h,进行和其它两端口一样的处理,这样就有可能使LPT2所对应的地址为378h,而不是所期望的278h。对于已分配设备LPT1,LPT2&LPT3而言,人们不用担心与他们的计算机接口设备。大多数时间基址是被用于端口接口而不是LPT1等,然而如你想找到LPT1或其他在线打印机设备对应的地址,你可查阅BIOS提供的表,当BIOS分
11、配地址给你的打印机设备时,它在内存中特定位置保存下来这些地址,因此我们可以查询到他们。表三:在BIOS数据区的LPT地址Start AddressFunction0000:0408LPT1的基址0000:040ALPT2的基址0000:040CLPT3的基址0000:040ELPT4的基址(注1)注1:在BIOS数据区的地址0000:040E可能在PS/2被用作扩展的基本输入输出系统数据区和新的Bioses。上表了列出了人们可以在BIOS数据区查找到打印机端口的地址,每一地址占用2个字节,下面的C语言的例子,演示了如何去读这些位置以得到你的打印端口地址。#include#includevoid
12、 main(void) unsigned int far*ptraddr;/*pointer to location of Brt Address */unsigned int address; A Address of Port*/int a;ptraddr=(unsigned int far*)0x00000408;for(a=0;a3;a+)address=*ptraddr;if(address=0) printf(“No port found for LPT%dn”,a+1);else printf(“address assigned to LPT%d is xhn”,a+1,addr
13、ess);*ptraddr+;1.4 软件寄存器标准并行端口(SPP)表3:软件寄存器OffsetnameRead/writeBit NoProperties(特性)Base+0Data PortWriteBit 7Data 7(Note-1)Bit 6Data 7注1Bit 5Data 5Bit 4Data 4Bit 3Data 3Bit 2Data 2Bit 1Data 1Bit 0Data 0Base+1Status PortRead OnlyBit 7BusyBit6BusyBit 5Paper out Bit 4Select inBit 3ErrorBit 2IRQ(Not)Bit
14、1ReservedBit 0ReservedBase+2Control portRead/writeBit 7UnusedBit6UnusedBit 5EnableBit 4Bi-Directional PortBit 3Enable IRQ Via AckBit 2Select PrinterBit 2Initialize PrinterBit 1Auto-linefeedBit 0Strobe 注1:如果端口为双向的,则读写选择可由数据寄存器来完成。基址常被称为数据端口或数据寄存器,它仅用于在并行端口数据线(引脚2-9)输出数据。该端口通常反为写端口,如你从该端口读入,你得到最近发送的字节
15、,可是如果你的端口是双向的,你能在这个地址上收得数据,想得到更多的详细资料,请参阅“双向端口”。状态端口/寄存器(基址+1)为一只读端口,任何写入该端口的数据均被忽略,该端口由5条输入线(引脚10、11、12、13、15),一个IRQ状态寄存器和2反向位组成。请注意位7(Busy忙)是一个低有效输入,例如如果位7偶尔为“0”,这意味着在引脚11上为+5v。同样地位2(IRQ not),如果位2为“1”,没有中断发生。控制端口(基址+2)打算用作为一个只写端口,当打印机联接到并行端口,使用四条“控制线controls”他们是选通脉冲,自动Linefeed,初始化和选择打印机,这些控制信号除初始化
16、外都被反向。打印机不发送信号去初始化计算机,也不通知计算机去使用自动Linefeed,然而,上述的四个输出也可被用作输入,如果计算机已经设置一引脚为高(例+5 v)而你的设备想设置它为低,你必须有效地解决端口,在总线上引起冲突,因此这些线是“开放式集电极open collector”输出(或CMOS设备的开放导管open drain)这意味着它有两种状态:低状态(OV)和高阻抗状态(开路)。通常打印机卡拥有一个内部提升电阻(Pull-up resistors),但这并不尽然。某些卡可能仅有开放式集电极输出,而另外一些可能有通常的图腾柱输出。为了使你的设备能正常工作于尽可能多的打印机端口,你一样
17、可使用外部电阻器。如你已拥有内部电阻,它将和外部的并行工作;如你用的是图腾柱输出,电阻器将被视为负载。一个外部4.7K电阻器可用于提升引脚为高。我不使用任何较低阻值的电阻器,仅假如你已拥有一个内部提升电阻,外部电阻器能并行有效地起作用,一个较低阻值的提升电阻。在高阻态时,并行端口中的引脚为高(+5V)。当并行端口取得引脚为低时,通过电阻的5V在输出引脚给出OV电压,在这种方式下,控制端口中的4个引脚可用于双向数据传输。可是控制端口必须被设置为xxxx0000以便能够去读取数据,即在端口所有引脚为+5V如果是你能降低为GND(逻辑0)。位4&5是内部控制信号,位4将用于IRQ(查看使用并行端口I
18、RQ)和位5将用于双向端口,这意味着你可输入8bit(DATA0-7)。这种模式仅当你的卡支持它时才成为可能,位6和位7是反向的。任何写向这两位的信息均会被忽略。1.4.1 双向端口Bi-directional Ports控制端口的位5可使并行端口的双向功能有效或无效,这种功能只存在真正的双向端口才有效。当该位设置为1时,引脚2-9进入高阻态。一旦处于该状态你能够在这些线上输入数据且能够以数据端口(基址)恢复数据。任何写向数据端口的数据将被储存起来,但在数据引脚上无效。为了关掉双向模式,设置控制端口的位5为“0”。然而某些端口不具有此相似的风格。(其中一个原因是因为在IEEE-1284以前没有
19、统一标准)。另外一些类型的端口需要设置控制端口的位6去使双向模式有效,设置位5使双向模式无效。不同的厂商采用不同的放式实现双向端口。如果你希望用你的双向端口输入数据,首先用一逻辑指针或万用表去检测以确定该端口确实为双向模式。1.4.2 使用并行端口输入8bits如果你的并行端口不支持双向模式,不要失望。在任何给定时刻你能输入最多9bits,为了实现这一操作,你可使用状态端口的5条输入线和控制端口的4条输入线(开放式集电报)。通常你仅能在任一给定时刻要么输入4bits(半字节)要么输入8bits(字节)。输入一个字节将使一条数据张空闲。我建议剩下引脚10空闲(Not-Acknowledgment
20、无应答),你可能利用它去产生一个中断请求,切记在你从控制端口读数据之前,必须把xxxx0100写入控制端口。1.4.3 使用并行端口的IRQDOS或Windows环境下,并行端口的中断请求不用于打印早期的OS/2版本使用他们,但也不较多。当用于类似高温报警器的监控设备接口时中断是适合的,你不知它何时何处会发生,使用中断请求方式用软件规律地探测端口以查看是否有事情况发生了变化的方式高效的多。如果你的计算机正执行其他任务,例如使用一个多任务操作系统,使用中断的好处也是显而易见的。使用中断的不足之处是难于编程,这已超出了本文探讨的范围,查看PC接口:使用中断的更多信息。并行端口的中断请求常用IRQ5
21、或IRQ7,但如果这个中断号已被使用也可能使用其它类型的中断号。下述情况也是可能的:如果卡仅用于打印,在卡上的全部中断都是无效的。你必须为地址020h处的PIC(Programmable Interrupt Controuer)编写程序以使能够响应你正使用的中断;然后在适当的中断向量位置设置ISR(Interrupt service Routine)程序。1.5 编程此处程序的源代码是C/C+的。输出一个字节是相当简单的。你可使用包含在dos.h库文件中的指令outportb(port address,byte)每8bits组成一个字节,每字节能表示十进制中的0255间的数字。端口中的每一位所
22、能表示的数值被表示如下:Bit 7 B6 B5 B4 B3 B2 B1 B0128 64 32 16 8 4 2 1如果我们想设置数据端口的位0为高,我们应使用outportb(基址,1);同样如使位7为高,应使用outportb(基址,128)。如果我们想设置多于两条线都为高,那么我们必须把需设置为高的相应位的数值加起来。例我们想置位0,3,5&6为高,我们必须输出为outportb为(基址,169)。Bit 7 B5 B3 B0128 +32 +8 +1 =169下面的例子假设端口地址为0*378:#include/*contains the prototype for outporb &
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行 端口 接口 资料
限制150内