硬件接口开发系列之 ---

59
硬硬硬硬硬硬硬硬硬 --- 硬硬硬硬硬硬

description

硬件接口开发系列之 ---. 并行端口编程. 并行端口编程学习要点:. Ⅰ. 什么是接口 Ⅱ. 为什么需要并行端口 Ⅲ. 模数转换和数模转换 Ⅳ. 并行打印机适配器介绍 Ⅴ. 并行适配器的编程使用 Ⅵ. 增强型端口和扩展型端口的学习使用 Ⅶ. 并行端口的数据位的扩展 Ⅷ. 运用实例一 ( 完整的数据采集系统 ) Ⅸ. 并行端口编程在其他方面上的运用. Ⅰ. 什么是接口. - PowerPoint PPT Presentation

Transcript of 硬件接口开发系列之 ---

Page 1: 硬件接口开发系列之 ---

硬件接口开发系列之 ---

并行端口编程

Page 2: 硬件接口开发系列之 ---

并行端口编程学习要点:Ⅰ. 什么是接口Ⅱ. 为什么需要并行端口 Ⅲ. 模数转换和数模转换Ⅳ. 并行打印机适配器介绍Ⅴ. 并行适配器的编程使用Ⅵ. 增强型端口和扩展型端口的学习使用Ⅶ. 并行端口的数据位的扩展Ⅷ. 运用实例一 ( 完整的数据采集系统 )Ⅸ. 并行端口编程在其他方面上的运用

Page 3: 硬件接口开发系列之 ---

Ⅰ. 什么是接口

接口是由硬件 , 软件或两者共同构成 , 允许两个不同的部件相互作用的系统。这里推荐的是并行接口,它广泛存在于 PC及其兼容机上,在持续提高技术要求的同时,仍能保留与原并行接口的兼容性。在过去的几年里,并行接口作为一种连接磁盘备份系统, CD 唱盘, LAN 适配器以及各种各样高性能打印机的方式,越来越受到程序员的喜爱。

Page 4: 硬件接口开发系列之 ---

Ⅱ. 为什么需要并行端口

1. 什么是数据采集

2. 为什么需要并行接口

Page 5: 硬件接口开发系列之 ---

1. 什么是数据采集

数据采集就是获取某一现象的有关信息的过程。这项工作如果用计算机在做的话,就要通过一些硬件接口将数据从传感器及其配套元件传送到计算机中,有计算机运行合适的软件(数据采集程序)从而获取,显示,处理并存储数据。而并行端口编程技术正好就是解决从外围硬件到计算机的接口(数据传输)问题

Page 6: 硬件接口开发系列之 ---

数据采集系统常涉及的硬件:

从功能上讲常用的有各种简单的门电路,缓冲器集成电路,总线收发器集成电路,触发器电路,锁存器集成电路,计数器,解码器,编码器和多路转换器集成电路等。从数字集成电路系列上讲, TTL 系列是最受欢迎的数字集成电路之一,其中 74XXX 又是 TTL 系列中最重要的产品。之后,设备加工和制造技术的提高使得 74 系列发展出了速度高,低功耗和性能稳定的几种子系列,也就是我们所说的 74LS,74ALS,74S 和 74F ; CMOS系列是集成电路中另一个非常重要的系列,从最初的超低功耗 4000系列,发展到现今的 4000, 74HC,74HCT 和 74C 等系列并存。

Page 7: 硬件接口开发系列之 ---

一个简单的计算机辅助数据采集系统方图:

传感器

传感器

传感器

传感器

接口硬件 计算机

外界的实验或工业过

结构硬件把传感器的输出信号转换成计算机可以识别的

形式

通过合适的通信链路来连接计算机和硬件设备接口电路

Page 8: 硬件接口开发系列之 ---

2. 为什么需要并行端口将外部硬件连接到 PC 机上,可以选择通过 RS-232,插入式总线接口线路板 ,SCSI总线 ,新式计算机的 USB接口和并行打印机适配器接口来实现。但是 RS-232串口传输数率低 ; 插入式总线板试探和测量不便,还可能对人和机器有危险 ;SCSI和 USB 接口传输数率很高 ,但是普通场合使用时没有什么必要的 , 并且不是每个机器都有这两种接口 ;在所有这些传输方式中 ,综合考虑传输速度和机构的简单性 ,并行打印机端口是最好的 , 所以我们需要它。

Page 9: 硬件接口开发系列之 ---

Ⅲ. 模数转换和数模转换

1. 数模转换器概念和流行制造技术2. 常用数模转换器( DAC)3. 模数转换器概念和流向制造技术4. 常用模数转换器( ADC)

Page 10: 硬件接口开发系列之 ---

1. 数模转换器概念和流行制造技术

数模转换器( DAC) 就是用来把数字信号转化成模拟信号的一种电子设备,通常这种设备是以电流或电压的形式输出的。数模转换器在具体实现中通常采用如下电路实现:电流开关型 DAC ,阵列电路型 DAC , R-2R梯状 DAC ,脉冲宽度调制器( PWM)DAC ,复乘 DAC 。

Page 11: 硬件接口开发系列之 ---

2. 常用数模转换器( DAC)

(1) DAC 0800系列数模转换器是 8位电流输出型单片电路(2) AD 588 使用双刻度的完全电压输出的数模转换器(3) AD 7548 一种能够直接与 8位微处理器数据线连接的 12 位电压输出的数模转换器(4) MAX 521 一种八进制的 8位电压输出的数模转换器

Page 12: 硬件接口开发系列之 ---

3. 模数转换器概念和流行制造技术

模数转换器( ADC) 是一种把模拟信号(以电压或电流的形式)转化成计算机能够处理的数字信号的设备。模数转换器在具体实现中通常采用如下电路实现:FLASH ADC ,采样模数转换( Sampling ADC) ,集成模数转换器( Integrating ADC) 。

Page 13: 硬件接口开发系列之 ---

4. 常用的模数转换器( ADC)

(1) ADC 0804 一种采用古老的工业标准,单芯片的模数转换器。(2) MAX 158 一种 8通道, 8位的快速采样模数转换器(3) MAX 186 一种 12 位, 8通道的串行模数转换器(4) MAX 111 一种由 MAX 开发的串行,14 为双通道模数转换器

Page 14: 硬件接口开发系列之 ---

Ⅳ. 并行打印机适配器介绍

1. 并行打印机端口结构2. DATA 端口3. CONTROL 端口4. STATUS 端口5. 通过并行适配器进行打印6. 使用并行打印机适配器

Page 15: 硬件接口开发系列之 ---

1. 并行打印机端口结构 并行端口在计算机工业至少使用过四个不同的名称:并行打印机适配器, Centronics适配器, Centronics端口或简单称为并行端口。在 PC 个人电脑行业中,并行端口专门指符合早期并行打印机适配器规则(后来功能得到增强)的端口。 并行打印机端口又分为三个独立的端口:一个输出端口向打印机发送数据( 8 根信号线的 DATA 端口),还有一个输出端口用来传输选通信号和复位信号( 4根信号线的 CONTROL 端口);一个输入端口从打印机中读取应答信号,忙信号及出错信号( 5 根信号线的 STATUS 端口 ) 下面是并行打印机适配器结构方框图和端口信号线定义表:

Page 16: 硬件接口开发系列之 ---

并行打印机适配器结构方框图:数据位

控制位

地址位

Pc系统总线

数据总线( D7:D0)

IOR* IOW*

A9-A0

IRQ5/IRQ7

数据写

数据写

控制写

控制读

状态读

缓冲

器 1

锁存器2

缓冲器2

缓冲器3

所存器1

开关驱动

数据端口( 8 位)控制端口( 4 位)

状态端口( 5位)

25

针D

行输出连接器

三太缓冲器 4 OE*

IRQ

使能

Page 17: 硬件接口开发系列之 ---

DB-25

Centronic

寄存器r i I/

O数据位 名称 功能

1 1 Control

输出 C0* nSTROBE

低电平有效。表明数据线上有有效数据到达

2-9 2-9 Data 输出 D1-D8

DATA1-DATA8

把位数据线,只有在 SPP指令下才输出数据

10 10 Status

输入 S6 nACK 一插入低电平的形式出现,表明最后一个字节已经接收完毕

11 11 Status

输入 S7* BUSY 以插入高电平的形式出现,表明打印机处于忙状态。

12 12 Status

输入 S5 PE 没有打印纸

13 13 Status

输入 S4 SELECT

一插入高电平的形式出现,表明打印机处于在线待命状态

14 14 Control

输出 C1* AUTO FEED

低电平有效信号。通知打印机对于遇到的每个回车自动换行

15 32 Status

输入 S3 nERROR

该信号由打印机发送给计算机,表明打印机处于错误状态

16 31 Control

输出 C2 nINIT 低电平有效信号。该信号用来对打印机进行复位

17 36 Control

输出 C3* nSELECT-IN

低电平有效信号。表明已经选中了打印机

18-25 19.21.23.25.27.29.30.34

GROUND

Page 18: 硬件接口开发系列之 ---

2. DATA 端口从并行打印机适配器结构方框图 中看出,适配器的 DATA 端口有一个缓冲器和一个锁存器组成。如果 CPU想向打印机输出数据,它就向锁存器中发送一个 8位数据。锁存器的输出端标记为 D0-D7 ,另外还可以在 25针的连接器管脚 2-9上得到锁存器的输出信号 D0-D7 。 DATA 端口的输出信号也与缓冲器输入端相连,缓冲器是作为一个读回输入端口出现的,读回输出在锁存器里的数据。 DATA 端口的 16进制地址为 x78h或 x7Ch(其中 x可以是 2 或 3)。下面是一个选自 IBM PC/AT 的技术手册并进行了适当修改的 DATA 端口详细数图电路图:

Page 19: 硬件接口开发系列之 ---

DATA 端口详细输出电路图:

数据写

数据读

PC

系统数据总

线

输出使能

74LS374 74LS2442

3456

7

8

9

C=0.0022uF

输出使能信号

输出连接器管教数据 0

数据 7命令译码器

时钟

Page 20: 硬件接口开发系列之 ---

3. CONTROL 端口适配器的 control端口可以产生对打印机进行控制的必要信号。如上面并行打印机适配器信号表所示, control端口的 D 型( 25 针)输出连接器上有 4 个输出信号,除此之外,还有一个称之为 IRQEN 的信号,驱动程序可以在 STATUS 端口信号( nACK)的帮助下,使用该信号对中断信号的产生与否进行控制。 CONTROL 端口的所有状态信号可以通过回卷缓冲器读回,该集成电路就是下图的 74LS240,它可以把通过的信号反相。而 IRQEN 信号是通过一个 74LS126 三态缓冲器来读取的。整个读取过程是由命令译码器中的控制读信号来进行控制的下面是 CONTROL 输出端口框图:

Page 21: 硬件接口开发系列之 ---

CONTROL 输出端口框图:

1oc1

oc1

1

oc1

oc1 1

16

14

17

+5v

R=4Kc

R=27

C=0.0022uf

C0*

C1*

c2

C3*

输出连接器管脚

IRQ EN(bit c4)

74ls128

输出使能信号

74ls240

控制写

控制读

74ls174

Pc 系统数据总线D0

D4

D3

D0

D4

时钟

Page 22: 硬件接口开发系列之 ---

4. STATUS 端口通过 STATUS 端口中各种各样信号,打印机适配器可以很方便地读取打印机的状态 ,STATUS 端口在物理地址上与 DATA 端口相邻,标准16进制地址是 0x379或 0x3BD 。 STATUS端口中实际上只有标记为 S3-S7五个信号才是真正有用的信号。通过 CONTROL 端口的某个信号,可以选通 STATUS 中的 S6信号,该信号还可以作为中断输入( IRQ5或 IRQ7) 。打印机适配器的原始设计者很可能考虑到利用中断向打印机输出每一字节数据,但是在早期的PC 中,中断后执行中断子程序的延迟时间较长,所以利用中断来驱动打印机并不太适合下面是 STATUS 端口电路模型。

Page 23: 硬件接口开发系列之 ---

STATUS 端口电路模型 (IBM PC/AT手册)

11

10

15

12

13

74LS240

输出是能信号

D形输出连接器管脚 BUSY

nACK

PE

SELECT

nERROR

S7

S6

S5

S4

S3

74LS126

命令译码器

状态读

D7

D3

来自 CONTROL 端口第四位 (I

RQ EN)

到IRQ5

或IRQ7

PC 系统数据总线

Page 24: 硬件接口开发系列之 ---

5. 通过并行适配器进行打印DATA端口位

有效数据

0.5us

0.5us 0.5us

7us 5us

nSTROBE

BUSY

nACK

Page 25: 硬件接口开发系列之 ---

由上图并行打印机适配器时序图可以看出 ,除了 DATA

端口信号之外 ,只有三个信号可以用来向打印机传输数据,并从打印机读取状态信息。这三个信号是: nSTROBE, , BUSY ,和 nACK 。在经过一定的延迟时间之后, PC 就会设置DATA 信号线为适当的逻辑状态,并产生 Nstrobe 信号(一个下行脉冲),脉冲过后,信号恢复高电平,但是DATA 端口的数据还会保持一段时间的有效期。为了响应 PC 发送来的下行 Nstrobe 信信号,打印机会把 BUSY 信号设置位高电平,而且高电平一直要持续下去,直到打印机使用完了传输来的数据之后,也就是产生了一个 ack脉脉下降沿之后一段时间, BUSY 信号才能在此变为低电平,只有检测到 BUSY 信号位低电平时,才可以继续向打印机传输数据。

Page 26: 硬件接口开发系列之 ---

6. 使用并行打印机适配器在标准的并行端口上,我们可以使用一个 5位输入端口,一个 4 位输出端口和另一个 8位输出端口。其中的这个 4 位输出端口也可以则为 4位输入端口使用。所用这 17 个信号线都可以进行编程控制,并且都是通过 TTL 电平跟 PC进行数据交换的。我们还可以自从中获得一个中断信号。并行端口的信号线通过一个 25针 D 型凹型连接器连接在 PC 的背面上,要想连接 PC 和打印机,必须使用一个一端 25针凹型连接器,另一端 36针 Centronics 凸型连接器这种现成的电缆进行连接。在选择电缆时选择高质量电缆很重要,我们有必要保证所使用电缆的长度和质量。

Page 27: 硬件接口开发系列之 ---

1. PC 数据域2. 端口的访问3. 并行端口的示警盒:发光二极管和读取开关4. 并行端口的电源开关电路5. 读取 DIP 开关状态6. 使用标准并行端口进行数据传输内务操作

Ⅴ. 并行适配器的编程使用

Page 28: 硬件接口开发系列之 ---

1. PC 数据域当我们想要使用并行接口与一个非打印机设备连接的时候,首先需要解决的问题就是知道并行端口适配器的地址。大多数 PC都使用了三个可能的并行端口地址之一。 PC 最多能够辨认三个逻辑并行适配器,我们可以通过检验BIOS 中数据域 (MS-DOS 用于保存大多数硬件的地址 ) 来确认 PC 是否安装了并行适配器,要是安装了的话,从该数据域中可以编程获得并行适配器基地址,也就是 DATA 端口的地址,STATUS 端口地址比 DATA 端口地址高一位 ,CONTROL 端口地址比 DATA 端口地址高两位。

Page 29: 硬件接口开发系列之 ---

2. 端口的访问要注意的是并行端口的两个内部端口,也就是 STATUS 和 CONTROL 端口是不完整的 (本该8位 ,但是我们在两端口上仅能分别得到 5和 4 位信号位 ) 。另外在这两端口中的许多信号和输出连接器之间连接了反相器,而 DATA 端口就没有,可以很容易的使用。比如用 C语言表达,要传输数据到输出端口,我们可以使用如下的函数命令 outportb(port_address,data); 要从输入端口读取数据,我们可以使用如下函数命令 :Data_variable=inportb(port_address);

Page 30: 硬件接口开发系列之 ---

3. 并行端口的示警盒示警盒是一个可以简化修理故障的设备。在 RS-232串行端口中就有一个普通的示警盒。这里所描述的示警盒由几个发光二极管,电阻器和一对跳线组成,并把它们连接在一个带有 25针 D 型连接器的 PCB板上,从下面的具体连接线路图中可以看到发光二极管与 DATA 和control端口的输出连接在一起,图中还使用了两组跳线,这样数据即可以从 control端口传向 LED, 也可以发送到 DATA 端口; STATUS 端口信号还可以通过跳线跟 DATA 端口信号断开,这样就使得我们可以通过编程为 DATA端口发送随机序列,还可以通过 STATUS 端口读回该随机序列。

Page 31: 硬件接口开发系列之 ---

4. 并行端口的电源开关电路 要控制真实的设备,我们需要通过一定的设备来控制其供电电源,如炉温控制系统中的电源,我们既可以采用简单的开关模式,也可以采用连续变化的模式。控制简单设备,我们仅仅需要继电器就可以了。要控制继电器(包括机电和固态),我们还需要某种类型的开关,例如晶体管开关,但不能处理超过 5伏的电压,也只能承受小电流,而大多数继电器需要更高的电压和电流,所以我们需要高电压和大电流容量的开关,我们最好直接找一个集成的开关来使用,要是集成的元件不能满足我们的要求的话,我们就不得不采用分离元件来自己动手设计解决了。

Page 32: 硬件接口开发系列之 ---

但是我们有时遇到的情况是需要开关工作在很高的频率下,列入来驱动步进电机的开关,这是我们就要选用 MOSFET 开关了,并且从长远来看MOSFET 开关有取代晶体管开关的趋势,尤其是在高速度和高功耗的场合。但是,这种 MOSFET 开关需要合适的驱动器,并且这种开关电压与一般的数字输出电压电平 TTL 存在差异,不过,如果使用的是 TTL阈值电压的 MOSFET驱动器就可以解决这个问题了。 ULN2003A驱动器就是一种采用 TTL阈值电压的集电极开路输出的 MOSFET 开关驱动器,它由 7对集电极开路,发射极正常的高电压,高电流达林顿二极管, ULN2003A输出电压与 TTL 兼容,下面就是一个用它来驱动一个电感性电路的电路图:

Page 33: 硬件接口开发系列之 ---

驱动电感性电路的 ULN2003 驱动器电路:

控制继电器 1

控制继电器 2

控制继电器 3

TTL 输入信号 ULN2003ANC

Common

NO

继电器1

继电器2

继电器3

+Vcc(<50 v)

Page 34: 硬件接口开发系列之 ---

5. 读取 DIP 开关状态DIP 开关示时非常有用的设备 ,可以用来完成用户的选择和某种设置 ,下图就是并行适配器的 DIP 开关接口实例。图中核心部件 165是一个可以并行预制输入和串行输出的移位寄存器 , 通过SER级连 ,LOAD预制 ,CLK脉冲使 165锁存器数据向输出管脚QH移位。工作时 ,首先发送一个 LOAD 信号,然后连续产生 24 个 CLK信号 ,在每一个时钟信号之后,程序读取 S7*状态并保存在一个变量中,最后将分散的 24 个变量合适地处理,就可以知道3个 DIP 开关的设置状态了。

Page 35: 硬件接口开发系列之 ---

并行端口适配器的 DIP 开关接口电路( 44页扫描 )

HCT165

WS_DIP-8

CLK

LO

AD

(D0

)

SH/LDINHCLKH

GFED

CB

A

QH

QH

1

89

16

HCT165

WS_DIP-8

CLK

SH/LDINHCLKH

GFED

CB

A

QH

QH

1

89

16

HCT165

WS_DIP-8

CLK

LO

AD

(D0

)

SH/LDINHCLKH

GFED

CB

A

QH

QH

1

89

16

S3

S1

S2

SER

SER

SER

数据(S7*)

7

9

7

9

7

9

U1

U3

U2

Page 36: 硬件接口开发系列之 ---

6. 使用标准并行端口进行数据传输内务操作

标准的并行端口的 DATA 端口不是双向的,所以要通过它向计算机传输数据是我们通常是使用 STATUS 端口,因为有限所以一个字节要分成两次来读取,并且传输一个字节处理器至少要执行 10条指令,其中至少5条要和并行端口适配器打交道,这样 I/O端口指令的执行就成为了数据传输的速率瓶颈 (200-300Kbps) 。解决该问题的一个方法就是使用带有双向 DATA 端口的并行打印机适配器,只是需要在在接收数据时切换一下 DATA 端口数据传输方向。这就引出了高速增强型 (EPP) 和扩展型 (ECP) 端口

Page 37: 硬件接口开发系列之 ---

Ⅵ. 增强型端口和扩展型端口的学习使用

1. IEEE 1248 1994标准2. 增强型并行端口3. EPP寄存器4. EPP BIOS调用5. 使用 EPP 的高速数字 I/O6. EPP控制芯片的编程7. 扩展性能端口8. 高级适配器的电器接口

Page 38: 硬件接口开发系列之 ---

1. IEEE 1248 1994标准于 1991 年成立的 IEEE 1248委员会终于在 1994 年提出了新的标准 -IEEE 1248标准,为PC 和外设之间定义了双向通信协议,数据传输上比原来的并行端口快 20-50倍。该协议同时保持了向下的兼容性。 IEEE 1248标准不仅确定了数据传输协议,并且为数据传输定义了物理和电器接口。另为该协议还提供了一种方法,通过这种方法主机和外设可以确认所支持的数据传输模式,并通过协议来决定采用何中数据传输模式。具体上来讲 IEEE 1248提供了5种传输模式如下表:

Page 39: 硬件接口开发系列之 ---

正向传输兼容模式: Centronics或标准模式反向传输半字节模式:通过 status信号线每次传输四个字节字节模式:通过 data信号线每次传输一个字节,

我 们称之为“双向”端口双向传输EPP 模式:高速增强型并行端口ECP 模式:扩展型并行端口

Page 40: 硬件接口开发系列之 ---

2. 增强型并行端口EPP 在 IEEE 1248委员会成立之前就开始被使用了 (Intel,Xircom, 和 Zenith Data Systems共同开发完成的),但是 IEEE 制定的 EPP协议和已经开始使用的还是有些细微的差别的, EPP协议中定义了 CCP 中的信号,在这17根信号中有 14根信号用来进行数据传输、握手和选通,剩下的 3个信号可以由外设设计者用来确定产品类型。由于篇幅这里就不符上EPP 信号定义表和数据写、数据读、地址协和地址读周期时序图了。

Page 41: 硬件接口开发系列之 ---

3. EPP寄存器为了使 EPP 并行端口协议具有向下的兼容性,则EPP 模式中寄存器的的定义使用也要向下兼容标准的并行端口,具体是 SPP DATA 端口地址加 1 是 SPP 模式 STATUS 端口地址,加 2 是SPP 模式 CONTROL 端口地址;加 3为 EPP ADDRESS 端口地址,加 4-7 是 EPP DATA 端口地址,在使用中,一般把加 4地址作为 DATA 端口地址。加 5到加 7三个 I/O地址有时供各种硬件设备使用,有时用来实现 16位或 32 为软件接口 (大多数控制器用这些地址来支持 32 位 I/O指令 ),

有时可能作为配置寄存器使用,有时它们根本什么都不作。

Page 42: 硬件接口开发系列之 ---

4. EPP BIOS调用直接向 I/O控制器(使用 EPP 模式)写入数据通常可以获得最快的数据传输速率,但是在某些情况下,我们可能会用 EPP BIOS调用来进行数据传输。使用 BIOS|调用允许数据传输不通过 I/O 控制芯片实现,另外即使主机没有具用 EPP 功能的端口,也可以通过软件来模仿 EPP 模式,不过数据传输速率要打折扣。 EPP BIOS 通过一些有用的 BIOS 例程调用提供了一个使用单一 I/O周期和数据传输的方法 ,具体调用有: Install Check,Set Mode,Interrupt Control,EPP Reset,Address Read,Address Write等,这里就不细说了。

Page 43: 硬件接口开发系列之 ---

6. EPP控制芯片的编程几乎所有的 PC 电脑上都安装了 EPP控制器芯片,由于各种各样的的制造商为了各自的目的使用了不同的 EPP控制器芯片,所以很难开发出一种能够直接应用在所有 EPP控制器上的程序代码。我们已经知道了 EPP 端口有 5个寄存器,我们必须通过编程使 EPP控制器工作在 EPP操作模式下,才可以使用 EPP ADDRESS 和 EPP DATA 端口寄存器,而 EPP 端口默认是工作在兼容的 SPP 模式下,所以要更改工作模式,我们就要合理配置EPP控制芯片上的扩展配置寄存器 (ECR, 通常定位在相对于并行适配器基址的偏移地址为 0x402h) 。

Page 44: 硬件接口开发系列之 ---

我们可以通过向 ECR寄存器中写入适当的数据来选择特定 EPP控制器所支持的操作模式。因为各个制造商自己都已经选择了特定的字节模式,例如 SMC公司使用的就是 FDC37C665/66芯片,该芯片需要向 ECR寄存器中写入一个字节的内容来对操作模式进行选择(准确来说是 ECR寄存器的第 5 , 6 , 7三位决定了操作模式, FD芯片的模式描述表这里就不提供了);国家半导体公司使用的是 PC87332芯片,它的 ECR 模式配置方式(也就是 ECR 的 5 , 6 , 7 位是怎样决定操作模式)跟 SMC公司的 FD芯片是不完全相同的。所以我们看出,要编写通用的 EPP控制芯片程序是不可能的,但是对所有的芯片我们可以采用类似的方法对各种端口进行访问,另外我们也找到了对 EPP芯片直接进行访问的方法: 1 。监测系统是否安装了 EPP控制芯片 2 。为特定的 EPP芯片选择正确的模式字节,从而决定 EPP 工作模式 3 。向 EPP ADDRESS 端口或 DATA 端口写入数据,并执行需要的 EPP传输。

Page 45: 硬件接口开发系列之 ---

7. 扩展性能端口扩展性能端口( ECP) 是 HP 和 Microsoft公司共同提出的,最初的目的是为了获得一种高性能,并能在 pc和高级打印机 /扫描仪等设备之间获得多功能传输通道的端口。 ECP跟EPP 相比定义了更加强有力的协议,通过该协议可以在并行适配器上共存多个逻辑设备。 ECP还允许通过外设传输数据的同时进行实时数据压缩( RLE技术),对于扫描仪和打印机等需要传输大块数据的设备来说,该特征是很有用的,但前提是外围设备和主机必须支持这种 RLE特性。

Page 46: 硬件接口开发系列之 ---

8. 高级适配器的电器接口IEEE 1248委员会不仅定义了许多有用的数据传输模式,还定义了两种级别的电气接口:级别Ⅰ的电气接口是专门为不需要高速操作,只需要使用反向数据传输功能的产品和设备而做,是为近距离应用而设计的;对于需要在完全的EPP 和 ECP 模式下工作以及远距离的设备来说,我们推荐使用级别Ⅱ电气接口规范,级别Ⅱ电气规范比较复杂,大家要是有兴趣可以了解,这里不细说了,但是符合 IEEE 1248级别Ⅱ规范的驱动器和接收器集成电路已经由 Texas Instrument和 National Semiconductor公司生产出来了。

Page 47: 硬件接口开发系列之 ---

Ⅶ. 并行端口的数据位的扩展

1. 在标准并行适配器上扩展2. 使用 EPP进行扩展3. EPP 中的 8255-PPIO接口

Page 48: 硬件接口开发系列之 ---

1. 在标准并行适配器上扩展在标准的并行是配器上进行扩展的一个方法就是,把 DATA 端口信号看成是某些类型的数据线,并把它们连接到锁存器电路输入端,这时我们可以使用 CONTROL 端口的 4 信号线来作为 4 个锁存器的选通信号,如下图所示。这样就可以根据选通的通道来获取 DATA 端口数据。如果我们需要扩展的端口不止 4 个,我们可以把 CONTROL 端口的 4根信号输出到解码器中,比如我们可以使用一个 4/16译码器,这样我们就可以扩展出 15个数字输出端口。

Page 49: 硬件接口开发系列之 ---

在标准并行适配器上扩展 4 个数字输出口电路:

8 位的 DATA 端口

74HCT273*4

数字输出0-7

数字输出 8-15

数字输出 16-23

数字输出 24-31

C0*

C1*

C2

C3*

标准并行适配器信号

Page 50: 硬件接口开发系列之 ---

2. 使用 EPP进行扩展使用标准并行适配器端口作为输入和输出最大缺点就是,由于软件附加费的原因而导致传输速率的降低。而我们又知道EPP非常适合用在数据传输速率较高的场合,我们这里研究的就是如何使用 EPP进行常规的 I/O扩展。对于扩展 I/O口来说关键的就是在产生数据选通信号之前,获取目标设备的地址信息并对其进行解码。下图就是一个简单的扩展电路。要想向数据锁存器中写入数据,程序必须首先设置该数据锁存器的地知道地址锁存器中,然后把数据发送到 DATA 端口即可。

Page 51: 硬件接口开发系列之 ---

使用 EPP 进行 I/O 端口的常规扩展电路图:

到其他数据锁存器

数据锁存器 *3

地址译码器

地址锁存器

EPP 信号

地址和数据总线地址选通信号数据选通信号

8

位I/O

8位I/O

8

位I/O

8位

Page 52: 硬件接口开发系列之 ---

3. EPP 中的 8255-PPIO接口

使用 8255 芯片的优点是,我们可以不必进行任何硬件修改,而仅仅通过编程使其作为输入或输出口来工作,这样,仅仅一个 8255就可以满足各种 I/O需求了。对于 8255-PPIO 芯片我们都很熟悉了,就不再提了。下图就是把 8255 芯片连接到并行适培器接口上,具体说是EPP 接口上的电路图解。

Page 53: 硬件接口开发系列之 ---

EPP 和 8255 之间的接口电路( 165 页扫描):

Page 54: 硬件接口开发系列之 ---

要想向并行端口传输数据,必须首先把 8255的端口地址发送到地址锁存器中, PC 就会向指定的端口写入输出(或读去指定端口的输入)数据。关于,软件上的驱动程序,可以使用 BIOS 例程实现,不过我们也可以使用直接访问并行适配器寄存器地址的代码实现,或者让并行适配器工作在标准模式下。

Page 55: 硬件接口开发系列之 ---

Ⅷ. 运用实例一 ( 完整的数据采集系统 )

在介绍完了如何设计并行打印机适配器如各种数字元器件的接口电路之后,现在我们就可以完成一个完整的实例了—一个完整的数据采集系统。在这个实例中使用了 8位的模拟 I/O组件, ADC选用了快速, 8通道的 Maxim公司8位 ADC,除了 ADC 外,还使用了一个单通道的 8位数模转换器,专门位数字输出准备的 8位数字输出锁存器和一个 8位数字输入缓冲器(分成两个 4 位的来用)下面是该系统中的核心电路图,也就是 ADC 与并行适配器的接口电路方框图,至于完整的电路图在后面附上。

Page 56: 硬件接口开发系列之 ---

ADC 与并行适配器的接口电路方框图:

三态

开关*

1

三态开

关*0

S4-S7

C0-C2

3/8

译码器

触发器CS*RD*

时钟清除

通道选择输入

模拟电压输入

MAX158数据 0

数据 7

IN0

IN7

Page 57: 硬件接口开发系列之 ---

完整的 8 位模拟数字输入和输出的电路图解 (121页扫描 ) :

Page 58: 硬件接口开发系列之 ---

从上图可以看出,图中描述了模数转换器接口的完整电路图解,包括数字输入和数字输出部分,来自并行端口的信号出现在连接器的 J1 DB-25管脚上。这些信号包括 D0-D7 : DATA 端口的输出管脚; C0*,C1*,C2,C3* : CONTROL 端口的管脚; S4,S5,S6 和 S7 : STATUS 端口管脚;还有接地信号。

74HCT138译码电路的输出 Y0-Y7分别标记为 SEL_0-SEL_7 ,其中 SEL_0 与 74HCT74(U4-A) 集成电路的管脚 1 相连接,这个 74HCT74 集成电路在这里是作为一个 D 触发器出现的。 SEL_1 信号驱动该触发器的管脚 3(时钟输入信号)。值得注意的是,这两个信号除了这些外还有别的用处,驱动相关 74HCT244 集成电路的相关引脚。在这个例子里, ADC 转换后的 8 位数字是分两次从 STATUS 端口读入的。 U5 和 U6 扩展了两个 8 位数字输出 I/O 口; U7A 和 U7B 一起扩展了一个 8 位的数字输入 I/O 口。

Page 59: 硬件接口开发系列之 ---

Ⅸ. 并行端口在其他方面上的运用:

并行端口除了多用在数据采集系统之中外,还有很多常常使用的地方,这些运用到目前为止也是比较成熟的,具体有:使用并行端口做 EPROM仿真器;使用并行端口作为主机接口;管理设备编程器和使用并行适配器的波形特性产生波形等等,这里我们就不一一细讲了。所以我们可以总结说,并行端口设计和编程使用是很有用而又不是很难的一门技术,我们电子专业的研究生更应该努力学好它。