|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; `: ~7 _" }/ D& Z3 k0 d* |- C1 X1 B
摘要
4 K8 T& v+ Q) d1 c& Y5 t文章给出了一个简单而又实用的利用PC机打印口进行高速双向数据通信的接口,详细介绍了接口的原理和
" W6 l* y( I3 E9 R' SWindows环境下驱动程序的设计,并以该接口与AVR单片机的连接为例,介绍了它的使用方法。最后给出了各种情况下9 @( r, _3 \" J5 ]7 j' \0 d7 ]) w4 a1 s
通信性能的测试结果。1 W M8 t* b; l* ?+ Q( h( Q# }
* o/ ] L+ X. o" J1 R: C( J j关键词:数据通信 EPP接口 Windows 驱动程序 单片机( e: D- }9 ^: R$ @8 b
2 ~; t( k# i$ M2 R( ?5 q V6 t9 r基于PC机的数据采集和监测控制系统往往用各种单片
C$ m3 v3 `( z机构成现场部件,因为它具有高可靠、低成本、小体积和抗干扰1 h P T6 _0 ~! }8 v
性好的特点,而PC机则完成数据分析处理和构成友好易用的
3 ]1 W# Z- _! p. O, a' A人机界面。在这样的系统中,单片机与PC机间的数据通信是* q1 K7 J7 x( c- ?4 Z5 m/ l$ ]
不可缺少的一一个环节。传统系统多利用PC机的串行接口与单
7 A1 d0 K3 Z0 t, |! {片机进行数据通信,一则因为系统的数据量不大,二则因为大
% o) J( Z5 M1 e& m& {多数单片机都内置了串行接口,数据通信只需要简单的软件编
7 `# y' U% q! d5 S* [8 l程即可实现。
, {# ~% p# K6 @9 ] ^随着计算机的发展,一方面传统串行接口因速率太低而逐7 z) ~9 l b2 v( d1 _' _/ {) w6 G/ H
渐被淘汰,尤其是便携计算机,已很少再配备传统的串行接5 ]' O8 l) R& j$ t
口了;另一方面,应用系统要求的数据通信量也不断增加,1
4 a+ J$ s$ `$ L# o( ?0 H传统串行接口已不能满足要求。虽然新型USB串行接口的I
# F% f) r0 F. }出现解决了PC机传统串行接口速率低的问题,但同时也大( ^6 v4 x z* |' E: Z* ~# S: L
大增加了通信的软硬件成本,造成用于通信的成本和复杂!
: f" v) t7 x! i x性大于现场设备本身的现象。在批量较少的情况下,问题更
. E o, s0 C' }- e5 _8 n为突出。
( y/ Y% w4 E0 _9 [9 R在PC机提供的各种接口中,打印接口一直是必备的接5 F$ R, z4 p* @9 S V1 d! A9 r- \
口,而且已经从SPP方式的单向输出接口扩充为EPP和ECP( y, y6 y9 | \$ t% y1 Y
方式的双向接口,其通信速率也可以达到500KBytes/s到
/ s. {. W# q# X4 M2MBytes/s。利用PC机打印接口进行数据双向通信的成本和* M9 g- c q6 _! s( j, s
复杂性又远比USB接口低,因此是单片机与PC机间数据通4 J* C) i8 y& O
信的一个较好的替代方案。与利用传统的串行接口通信方案
& Q! _+ G: [- [. C相比,该方案涉及到硬件接口设计和Windows驱动程序设计1 I' W7 z4 x6 ?3 C2 j# v
两个额外的问题,本文就这两方面的问题给出了较为详细的
, e k& h7 Z( J: s) V论述。# w% u y- R8 _2 D3 A
' t% \7 o: z! D+ [1、EPP端口通信原理
8 D" j8 d# O2 R) a" f1.1
/ H! J& i8 S" j: H X, Y5 Q) E7 kEPP端口的引脚和定义4 h+ J8 f# t) Q5 L6 S
用于进行数据双向通信的EPP端口相关的引脚和定义如
6 k3 }0 Q. o N0 q! Q0 M表1所示。% h# z9 f0 O8 {- ^# n
[2 v9 S; T4 {6 z6 u1.21 r" s# f; {$ Y" k: ]
EPP端口的操作.% l1 K5 U" ^: V0 M4 k& m: ]
EPP端口的操作分数据和地址两种,通过对数据寄存器和
. Z0 a5 Z9 z. _7 X' o地址寄存器的读写操作可以完成数据和地址的输人和输出。在
6 t: e& y/ l3 ~端口上,则以nDStrb和nAStrb分别为低加以区分。除了这两个
" P- v. c1 J/ T, A/ I8 T9 }信号外,数据和地址操作的其他信号状态完全一样。每-条对- U. T' j6 k6 A8 n
数据或地址寄存器的读写指令,便会自动启动并完成一次EPP4 b0 J' x1 }) u, p# D
端口的输人或输出操作。EPP端口的寄存器地址和定义如下:
6 x+ |$ X! s# I- P, j1 ^+ V3 l' |基地址(378h):端口数据输出,锁存输人地址。
! O9 Y: r0 n4 @4 T* y基地址+1 (379h):状态输人端口,bit6~bit3分别为端口引
0 B0 n5 T. g7 ]8 U3 G7 B, ? V% R脚10,12,13和15的状态。
1 w% C$ Q$ t$ f/ e b
7 X5 u9 m1 k0 R: J& i6 }8 G4 ]
0 Y- P* r4 `" @/ r+ n: N' \
% P/ j2 a; b0 H* ^" `附件下载:
; u$ V" G' I3 G& ?6 t* j9 x- O5 r0 q+ |+ j4 t
|
|