增强型并行端口EPP编程
1、引言
标准并行端口SPP(Standard Parallet Port)为大家所熟知,但是基于SPP的扩展经常受到一些限制,如传输前进行“忙信号”的查询和传输后状态的握手,导致传输速率降低;再则数据线是单向的,由状态线完成的数据输入需要进行字节的拼接,因此又降低了数据的传输速率。
增强型并行端口协议从根本上改变了这一状况,它不但与SPP兼容,又能进行双向的高速数据传输。它的握手信号由硬件完成,数据传输速率最高可达到ISA总线的速度。
2、SPP简介
2.1、EPP读写周期及信号定义
增强型并行端口协议最初是由Intel、Xircom和Zenith Data System公司发起并制定的,它后以后的IEEE1284标准都极大的改善了并行端口的性能。EPP协议提供了数据写、数据读、地址写、地址读四种数据传输周期。
数据周期用于主机和外设间的数据传输,地址周期用于传送地址、通道、命令和控制信息。表1列出EPP与SPP信号的定义及相互关系。
表1、EPP信号描述
SPP信号EPP信号方向EPP信号描述
nSTROBEnWRITE输出低有效,表示写操作。高电平读周期
nAUTOFEEDnDATASTB输出低有效,表示数据的读写操作正在进行
nSELECTINnADDRSTB输出低有效,表示地址的读写操作正在进行
nINITnRESET输出低有效,外设复位
nIACKnINTR输入外设中断,用于对主机产生一个中断
BUSYnWAIT输入握手信号 ,低表示可以开始一个周期(置选通),高表示可以结束一个周期(清选通)
D[8:1]AD[8:1]双向双向地址/数据线
PE用户定义输入每种外设有不同的使用
SELECT用户定义输入每种外设有不同的使用
nERROR用户定义输入每种外设有不同的使用
附图是EPP数据写周期的时序图。因它的握手信号由硬件完成,整个数据传输过程发生在一个ISA I/O周期内,因而使用EPP传送数据,协调可以获得500KB/S~2MB/S的传输率。
2.2、EPP端口及寄存器
EPP占用并行口基地址+0~+7共8个相邻的I/O映像地址。基地址+3是EPP的地址口,对它进行I/O操作便产生地址周期;基地址+4是EPP的数据口,对它进行8位I/O读写操作,便产生数据读写周期。如软件使用16位或32位的I/O操作,则会用到基地址+4~+7映像地址。对基地址+0~+2的操作与SPP相同,这就保证了与SPP的兼容性。但由于EPP为双向端口,其寄存器的内容比SPP有所增加(如表2所示)。
口地址端口名BIT0BIT1BIT2BIT3BIT4BIT5BIT6BIT7
基地址+0数据口D0D1D2D3D4D5D6D7
基地址+1状态口TIEMOUT00nERRSLCTPEnACKnBUSY
基地址+2控制口STROBEAUTOFDnINITSLCIRQEPCD00
基地址+3EPP地址口D0D1D2D3D4D5D6D7
基地址+4EPP数据口0D0D1D2D3D4D5D6D7
基地址+5EPP数据口1D0D1D2D3D4D5D6D7
基地址+6EPP数据口2D0D1D2D3D4D5D6D7
基地址+7EPP数据口3D0D1D2D3D4D5D6D7
新增的位如下:
(1)TIMEOUT位:逻辑“1”表示EPP读写操作时发生超时错误;逻辑“0”表示无超时发生。
(2)PCD位(Parallel Control Direction并行口方向控制):在双向传输种,PCD位为“0”时进行写操作;为“1”时进行读操作,8位数据线处于读状态。
2.3、EPP1.9和EPP1.7
EPP1.7是指Xircom 1.7版的提案,Intel在最初的82360 I/O控制器中使用这一协议,而那时IEEE1284标准还没建立起来。EPP1.7与IEEE1284标准所规定的EPP1.9的区别在于,EPP1.7在读写周期开始时,nDATASTROBE或nADDRSTROBE置位时不考虑nWAIT信号的状态。这意味着外设不能通过清nWAIT来推迟一个EPP周期的开始。因而服从1284标准的外设可以在EPP1.7的主机上工作,而EPP1.7的外设不能在服从1284 标准的主机上工作。
EPP控制芯片中的看门狗时钟会防止系统锁死。一般来讲,EPP1.9在读写周期开始10us后,如果nWAIT仍没有响应,则发生TIMEOUT错误,状态寄存器的第0位TIMEOUT为“1”,EPP周期终止;而EPP1.7则是在EPP读写周期开始10us后仍未结束时,置TIMEOUT为“1”。
3、EPP编程方法
3.1、EPP模式的设置与基地址的选择
由于EPP控制芯片的生产厂家不同,具体的编程方式也有所不同,因而EPP协议对该模式的设置和检测没有统一的规定。比较实用的设置方式是在系统的CMOS中选择含有EPP模式的选项,再选择EPP协议的类型EPP1.7或EPP1.9,由系统完成对EPP芯片的设置。
并行端口的地址也可在CMOS中设置,如果操作系统为Windows 9x,可以在其中“控制面板”的“系统”窗口中设置。值得注意的是,基地址一般使用378H或278H,而不使用3BCH。因为EPP要求8个相邻的I/O端口,而3C0H可能为VGA设备所占用。
3.2、传输方向控制
并行端口的8位数据线在EPP模式下为双向数据线,数据传输方向由控制寄存器(基地址+2)的第5位控制。该位置“1” 时,禁止数据输出,可以从外部数据线上读取信号。改位置“0”时,可以执行EPP的写操作,如地址写或数据写操作。
3.3、数据、地址的读写操作
EPP模式设置后,数据传输非常简单,只需简单的端口读写即可实现,其C语言指令如下:
写一个字节的数据:outportb(base_addr+4,data)
写一个字节的地址:outportb(base_addr+3,value)
读一个字节的数据:data=inportb(base_addr+4)
读一个字节的地址:value=inportb(base_addr+3)
- 第 1 页:增强型并行端口EPP编程
- 第 2 页:状态检查及TIMEOUT位清除
本文导航
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%
相关阅读:
- [电子说] PLC编程软件离开了硬件,能模拟应用吗? 2023-10-24
- [电子说] DFRobot志愿者走进宁夏中卫支教活动带来趣味编程体验 2023-10-24
- [电子说] STM32速成笔记(1)概述 2023-10-23
- [编程语言及工具] Rust语言为什么这么卷? 2023-10-23
- [工业控制] PLC初学者怎么选择西门子还是三菱? 2023-10-23
- [工业控制] 西门子、三菱PLC编程指令大全收藏 2023-10-23
- [电子说] 为什么不能直接使用从PLC读取到的模拟量信号? 2023-10-23
- [嵌入式威廉希尔官方网站 ] C编程中指针的语法和工作原理 2023-10-21
( 发表人:小兰 )