为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

avr单片机与pc机打印口高速双向数据通信接口

2012-03-31 5页 pdf 370KB 24阅读

用户头像

is_786710

暂无简介

举报
avr单片机与pc机打印口高速双向数据通信接口 AVR单片机与PC机打印口高速 双向数据通信接口 胡平平王晶杰 (北京机械工业学院计算机及自动化系,北京100085) 摘 要 文章给出了一个简单而又实用的利用PC机打印口进行高速双向数据通信的接口,详细介绍了接口的原理和 Windows环境下驱动程序的设计,并以该接口与AVR单片机的连接为例,介绍了它的使用方法。最后给出了各种情况下 通信性能的测试结果。 关键词数据通信EPP接口Windows驱动程序单片机 文章编号1002—8331一(2005)25—0112—04文献标识码A 中图分类号TP334 Th...
avr单片机与pc机打印口高速双向数据通信接口
AVR单片机与PC机打印口高速 双向数据通信接口 胡平平王晶杰 (北京机械工业学院计算机及自动化系,北京100085) 摘 要 文章给出了一个简单而又实用的利用PC机打印口进行高速双向数据通信的接口,详细介绍了接口的原理和 Windows环境下驱动程序的,并以该接口与AVR单片机的连接为例,介绍了它的使用方法。最后给出了各种情况下 通信性能的测试结果。 关键词数据通信EPP接口Windows驱动程序单片机 文章编号1002—8331一(2005)25—0112—04文献标识码A 中图分类号TP334 TheHighSpeedBidirectionalDataCommunicationInterface betweenAVRSCMandPCPrinterPort HuPingpingWangJingjie (Computer&AutomationDepartment,BeijingInstituteofMachinery,Beijing100085) Abstract:Asimpleandpracticalhigh-speedbidirectionaldatacommunicationinterfacewithPCprinterportisgiven. ItshardwareprincipleanddriverprogrammingforWindowssystemarediscussedindetail.ItsapplicationbetweenAVR SCMandPCprinterportisgivenandtheperformencesinseveralcasesaretestedanddiscussed. Keywords:datacommunication,EPPinterface,Windowsdriver,SCM 基于PC机的数据采集和监测控制系统往往用各种单片 机构成现场部件.因为它具有高可靠、低成本、小体积和抗干扰 性好的特点,而PC机则完成数据处理和构成友好易用的 人机界面。在这样的系统中,单片机与PC机间的数据通信是 不可缺少的一个环节。传统系统多利用PC机的串行接口与单 片机进行数据通信。一则因为系统的数据量不大,--贝tl因为大 多数单片机都内置了串行接口,数据通信只需要简单的软件编 程即可实现。 随着计算机的发展,一方面传统串行接口因速率太低而逐 渐被淘汰,尤其是便携计算机.已很少再配备传统的串行接 13了;另一方面,应用系统要求的数据通信量也不断增加, 传统串行接口已不能满足要求。虽然新型USB串行接口的 出现解决了PC机传统串行接口速率低的问题,但同时也大 大增加了通信的软硬件成本,造成用于通信的成本和复杂 性大于现场设备本身的现象。在批量较少的情况下,问题更 为突出。 在PC机提供的各种接13中,打印接口一直是必备的接 口.而且已经从SPP方式的单向输出接El扩充为EPP和ECP 方式的双向接口,其通信速率也可以达到500KBytes/s到 2MBytes/s。利用PC机打印接口进行数据双向通信的成本和 复杂性又远比USB接口低,因此是单片机与PC机问数据通 信的一个较好的替代。与利用传统的串行接口通信方案 相比.该方案涉及到硬件接口设计和Windows驱动程序设计 两个额外的问题,本文就这两方面的问题给出了较为详细的 论述。 基金项目:北京市科委资助科技项目(编号:KM200311232136) 1122005.25计算机工程与应用 l EPP端口通信原理 1.1 EPP端口的引脚和定义 用于进行数据双向通信的EPP端口相关的引脚和定义如 表1所示。 表1 EPP端口相关引脚的定义和说明 7 注:Base表示EPP端口的基地址,一般为378h;!表示状态相反。 1.2 EPP端口的操作 EPP端口的操作分数据和地址两种,通过对数据寄存器和 地址寄存器的读写操作可以完成数据和地址的输入和输出。在 端口上,则以nDStrb和nAStrb分别为低加以区分。除了这两个 信号外,数据和地址操作的其他信号状态完全一样。每一条对 数据或地址寄存器的读写指令,便会自动启动并完成一次EPP 端口的输入或输出操作。EPP端口的寄存器地址和定义如下: 基地址(378h):端口数据输出,锁存输入地址。 基地址+1(379h):状态输入端口,bit6~bit3分别为端口引 脚10,12,13和15的状态。 万方数据 基地址+2(37Ah):控制输入/输如端口(该端Elbit4必须 置l才能使外部中断信号线nIntr的上升沿产生打印端口 中断)。 基地址+3(37Bh):地址寄存器。 基地址+4(37Ch):数据寄存器。 1.3 EPP端口输入操作时序 任何时候,当nWait为低时读数据或地址寄存器的指令将 产生图1所示的输入操作时序。在IOR为低后,nWrite保持为 高表示输入,主机检测到nWait为低后使nDStrb或nAStrb变 低.表示开始输入操作。当有效的输人数据在ADO~AD8上准 备好时,外设可以使nWait变高,这时主机使nDStrb或nAStrb 变高,数据(地址)被读人到特定的寄存器,输入操作结束。为进 行下一次操作,外设必须使Wait变低。 IOR:——_\!塑旦堕墅兰兰笪!!厂——一 nWrite: nDStrb/nAStrb:———]、厂——一 nWait:厂————、ADO--AD7:二二二二二二二]C巫匾巫匾X二 图1 EPP端口输入操作时序 1.4 EPP端口输出操作时序 任何时候,当nWait为低时写数据或地址寄存器的指令将 产生图2所示的输出操作时序。在10W为低后,nWrite也变为 低表示输出,同时将有效的输出数据送到ADO~AD8。主机检测 到nWait为低后使nDStrb或nAStrb变低,表示开始输出操作, 外设得到数据后,可以使nWait变高,这时主机使nDStrb或 nAStrb变高,输出操作结束。为进行下一次操作,外设必须使 Wait变低。 (端口内部参考信号) 10W nWrite nDStrb/nAStrb ADO竺AD7兰支兰兰三j三~ :一—————j—————』,、L———二———~LLj—————/,L————一 图2 EPP端口输出操作时序 由上述操作时序可知,EPP的输入和输出操作可以在一个 ISA总线的I/0读写周期内完成,因而其速度非常快,可以达 到500KBytes/s到2MBytes/s。 2 EPP接口设计 从上面的介绍可以看到,EPP数据传输采用的是异步应答 方式.尽管其最高传输速率可以达到ISA总线的I/O读写速 率.但在实际应用中的传输速率要取决于外设的使用和处理方 式。EPP端口和单片机最简单的连接是在单片机方采用软件控 制方式.由软件产生响应的应答信号,这种方式需要几个单片 机的指令才能完成一次数据的传输,是最慢的方式。用少量的 芯片构成EPP接口,以便自动产生EPP的应答信号并提供必 要的状态信号,这种方式可以最大限度地提高数据的传输速 率。图3给出一种EPP接口的原理图,下面做一简单介绍。 图3中的接口没有使用EPP端口的nAStrb信号,因此只 能进行数据的输入和输出。图的左端为与EPP端口相连的各 种信号线。右端为与单片机相连的各种信号线。 图3 EPP数据传送接口的原理图 主机向单片机送数据:在OBE为高时。主机可以向EPP的 数据寄存器写数据,该操作使nWrite和nDStrb先后变低,两者 的或信号使INTa/IBEa(OBE)变低,由于nDStrb变低导致 nWait为高.于是主机将使nDStrb变高,这个高电平将ADO— AD7的数据锁存到锁存器A中。而此时nWait变低,一次EPP 数据输出结束。INTa/IBEa(OBE)为低一方面通知单片机可以 取走数据.另一方面通知主机不能再输出数据。单片机方在 INTa/IBEa为低时,可以使OEa为低从锁存器A读出数据到 DBIa上,为低的OEa信号又使INTa/IBEa(OBE)变高,一次数 据传输结束。 单片机向主机送数据:在OBFa为低时。单片机可以在CPa 上产生一个高电平脉冲把DBOa上的输出数据锁存到锁存器 B中,CPa变高时,其反信号将nIntI/IBF(0BFa)信号变高,一 方面通知主机可以取走数据,另一方面通知单片机不能再输出 数据。主机在nIntr/IBF信号变高时,便可以从EPP的数据寄存 器读数据,该操作将使nDStrb变低,于是锁存器B的OE为 低,一方面使锁存器B的数据送到EPP的ADO—AD7上,另一 方面使nIntr/IBF(OBFa)信号变低。由于nDStrb变低导致nWait 为高,于是主机将使nDStrb变高。将数据读入主机,此时nWait 变低,一次数据传输结束。 图3中除了两个锁存器外,其余的电路可以很方便地用一 片GALl6V8实现。该GAL的编程方程如下所示: module_EppAvr titleqnterfaceforEPPandAVRdataexchange’ EppAvrdevice"P16V8C’; ”InputPins nDStrb,nWrite,OEa,CPapin1,2,3,4; ”OutputPins nWait,OE,CP,INTa,nIntrpin12,13,14,15,16; EQUATIONS CP=nDStrb#nWrite: OE=nDStrb#!nWrite; nWait=!nDStrb; INTa=!(OEa&!(CP&INTa)); nIntr=!(!CPa&!(OE&nIntr)); end 计算机工程与应用2005.25113 万方数据 3接口的使用 接口中各信号与EPP端口的连接如表1同名信号所示. OBE可以连接到EPP端口引脚12、13和15中的任何一个(这 里假设连接到引脚12上)。接13与单片机的连接是:DBIa和 DBOa分别接到单片机的8位输入和输出端13;对于没有读写 控制信号的单片机,Ea和CPa只能接到单片机的输出I/O线 上,通过多条指令完成数据的输出和输入;对于有读写控制信 号的单片机,Ea和CPa应该和读写控制及译码信号结合,用一 条指令便可完成数据的输出和输入。OBFa和IBEa分别接到单 片机的两个输入I/O线上(采用中断方式时,这两个信号应该 连接到单片机的外部中断线上)。 我们用AVR单片机AT90S8535构成的系统与上述接口 相连.由于资源限制,DBIa和DBOa都接到了8535的PORTC。 因此在数据的输入和输出转换时.都要对端口PORTC的方向 进行重新设置;又因为8535没有读写控制信号.每次输入和输 出都需要多条指令完成,因而对数据通信的最高速度会有一定 的限制。在交替输入和输出的情况下,一次数据的输入或输出 需要五条指令;在连续输人或输出的情况下,一次数据的输入 或输出需要三条指令。如果在8MHz的主频下单片机每条指令 需要0.125us,因此两种情况下的最高通信速率限制分别约为 1.6MB/s和2.6MB/s,基本上与EPP端口的最高速率相当。从 本文后面给出的结果可以看到,单片机方面的这一限制并不是 影响通信速度的主要因素。 查询方式数据传输:主机端通过读I/O地址Base+l得到 nIntr和OBE的状态,当nIntr为1时,表示有数据从单片机送 来,主机可以读I/O地址Base+4得到数据;当OBE为1时.表 示单片机已取走数据,主机可以将数据写到I/O地址Base+4 将其发送到接口供单片机读取。单片机方面.当IBEa为O时。 表示有数据从主机送来,单片机可以将OEa置低从DBIa得到 数据;当OBFa为0时,表示主机已取走数据,单片机可以将数 据送到DBOa上然后在CPa上产生一个正脉冲将数据发送给 主机。 中断方式数据传输:将EPP的L/0地址Base+2的bit4置 l,nIntr由低变高时可以产生主机的打印中断,INTa(低电平有 效)则可以当作单片机的中断信号,从而在两方都能实现数据 的中断接收。此外。OBFa的低电平状态也可以当作单片机的另 一路中断信号,以实现数据从单片机到主机的中断方式发送。 双方对数据的读写方法与查询方式一样。 4 EPP数据传输驱动程序的编写 上面介绍的数据通信过程中涉及到主机对EPP的啪端 口的读写操作,这在Windows环境的应用程序中是无法实现 的,必须靠驱动程序来实现。下面简单介绍一下用WinDriver 编写驱动程序进行EPP数据通信的方法。 4.1编写驱动程序 启动WinDriver的DriverWizard。选择Createanewdriver project。在SelectYourDevice页面的列表中选中Parallelport。 在DefineandTestResourceforYourDevice页面的各选项单 中做如下设置: I/O选项单:IORangel的范围设置为0x378到0x37f(默 认值)。 Interrupts选项单:In认的InterruptNumber值设置为7.触 1142005.25计算机工程与应用 发方式为EdgeTriggered(默{)A.值)。 Registers选项单:保留control(2),status(1)和strobe_data0 (4)三个寄存器即可(括号内数字为地址偏移量offset的值)。 在SelectCodeGenerationOptions页面选中C和MSDe. veloperStudio6,5。 最后为项目文件取名并保存到某个文件夹中。按Finish结 束后,MSVC++IDE将自动打开项目文件,编译连接,可以得 到WinDriver生成的一个基于控制台的测试程序,在该程序的 基础上便可以编制EPP端口的数据通信程序。 4.2查询方式EPP数据通信程序 在WinDriver生成的EPPDRV_diag.C中(其中EPPDRV是 您为项目取的名字),保留对EPPDRV_Open(&hEPPDRV)和 EPPDRV』lose(hEPPDRV)的调用,将其间的代码改为您自己 的通信代码,即可完成Windows环境下基于控制台的查询方式 EPP数据通信程序。这里给出从EPP端口读和写一个字节的 子程序。 #defineOBE0x20 //OBE连接到EPP端口的12脚,为1时可以输出 #defineIBFOx40 //IBF(即nIntr)连接到EPP端口的10脚,为1时输入有效 #defineINTEN0x10 //控制端口的中断允许位 从EPP读人一个字节,返回一1表示无可用数据:返回0—255为读 到的数据 intReadEppByte(EPPDRVHANDLEhEPPDRV) f if(EPPDRV_Readstatus(hEPPDRV)&IBF) returnEPPDRV_Readstrobe_data_0(hEPPDRV)&Oxff; elsereturn一1; j 将一个字节输出到EPP,返回FALSE表示不能输出(上一 次输出还没有取走),返回TRUE表示输出成功 BOOLWriteEppByte(EPPDRV—HANDLEhEPPDRV,BYTEData) f if(EPPDRVReadstatus(hEPPDRV)&OBE) { EPPDRV_Wntestrobedata0(hEPPDRV,Data); returnTRUE; l elseretumFALSE; J 4.3 中断方式EPP数据通信程序 对上面查询方式EPP数据通信程序进行如下改动: (1)在EPPDRV_Open(&hEPPDRV)调用成功后加入下面 语句允许中断并使能打印口中断: EPPDRV_IntAEnable(hEPPDRV, EPPDRV_IntAHandlerRoutine); EPPDRVWriteeontrol(hEPPDRV, (BYTE)(EPPDRV—Readeontrol(hEPPDRV)IINT_EN)); //读一次数据以便能产生下一次中断 EPPDRV_Readstrobe_data._0(hEPPDRV); (2)在EPPDRV—Close(hEPPDRV)调用之前加入下面语句 禁止中断: if(EPPDRVIntAIsEnabled(hEPPDRV)) 万方数据 EPPDRV_IntADisable(hEPPDRV); EPPDRV_Wfitecontrol(hEPPDRV. (BYTE)(EPPDRVReadcontrol(hEPPDRV)&~ INT_ENABLE_BIT)); (3)修改中断响应程序,在其中加入对EPP端13数据的读 入处理 void EPPDRV_IntAHandlerRoutine(EPPDRV_HANDLE hEPPDRV,EPPDRV_IntA_RESULT女intResuh) ( if(EPPDRV_Readstatus(hEPPDRV)&IBF) f //取新收到的数据 RecData=EPPDRV_Readstrobe_data_0(hEPPDRV); DataOk=TRUE://置数据收到标志 IntNum++; 】 ) 其中RecData、DataOk和IntNum都是全局变量,当DataOk 为TRUE时,RecData则为新收到的数据,主程序中用完该数 据后应将DataOk置为FALSE,以免重复使用;IntNum则用于 计算中断接收数据的个数。另外,为保证中断方式数据通信成 功.应在Windows系统的硬件设备管理中允许打印端I:1使用中 断并将其中断号设定为7。 5 结论 我们将上述EPP接13电路和AVR单片机AT90S8535构 成的系统相连,验证了接13的正确性,并在主机不同操作系统 下进行测试,得到如表2所示的数据。 表2中单片机方的程序是用AVR汇编语言编写的,均采 用查询方式;主机方WinXP和Win98下的程序都是WinDriver 生成的VC++控制台程序,主机方Win98DOS下的程序是用基 于DOS的X86宏汇编语言编写的(WinXP下的命令提示符环 境已经不支持基于DOS的X86宏汇编程序对某些端El的访 问)。测试使用的主机为SamSungV30笔记本电脑(P4-2.66G)。 表2 EPP端口通信测试结果 运行环境和方式 双方同时收发 主机发单片机收单片机发主机收 从表2的数据可以得到下述结论: (1)Windows系统下程序对端口的访问速度不如DOS系 统下的程序。 (2)WinXP系统下程序对端口的访问速度优于Win98 系统。 (3)WinDriver用户方式下的驱动程序中断方式的执行效 率不如查询方式,即中断处理的代价比较大。 (4)对EPP端口通信速度的限制因素主要在主机方而不 是单片机方。 鉴于上述情况,在Windows系统下对EPP端口的处理,最 好用查询方式.将数据输入和输出查询程序分别放在两个独立 的线程中去完成.这样即可以得到较高的数据通信速率,又易 于编程实现通信程序各种处理任务。(收稿日期:2005年1月) 参考文献 1.IntroductiontotheIEEE1284ParallelPortStandard.http://www. f却o.com/1284int.htm 2.伍丁红.增强并行口EPP及高速并行口A/D转化转换器的设 计【J].电子技术应用,1998;(2):47-48 3.朱世鸿.可编程逻辑器件PLD实用设计技术[M】.北京:电子工业出版 社.1994 (上接105页) 优化控制还缺乏一个有效的手段,只能通过建议的方法提出优 化策略,最终由人工完成对数据库的调整。未来可以在这方面 进行更深入的研究[sJ。 (3)7rPCCkader为数据库系统的性能优化和自管理研究 提供了一个平台,未来可以进一步将它的研究成果扩展到其他 应用程序和数据库自管理程序中唧。(收稿日期:2005年5月) 参考文献 1.TransactionProcessingPerformanceCouncil(TPC)TPCBENCH— MARKTMC StandardSpecificationRevision5[S].2004-04 2.Quest公司:BenchmarkFactoryReferenceManual.http://www quest.com 3.TPCCouncil.http://www.tpc.org/ 4.MartinP.Luri(IBM公司):在Linux上模拟大规模并行数据库处理. http://www-900.ibm.com/developerWorks/cn/dmdd/library/techarti- cles/02031urie/02031urie_eng.shtml 5.GLanfranchi.PDellaPeruta,APerroneeta1.Towardanewlands— capeofsystemsmannagementinanautonomiccomputingenviron— mentiJ].IBMSYSTEMSJOURNAL,2003;42(1) 6.人大金仓信息技术有限公司.KingbaseES管理员手册与JDBC开发 手册(KingbaseES产品技术文档) 7.Johnson.OCP:Oracle9i性能调整学习指南JosephC[M].电子工业出 版社 8.LWRussell.SPMorgan.EGChron.Clockwork:Anewmovementin autonoticsystems[J】.IBMSYSTEMSJOURNAL,2003;42(1) 9.JKephart.DChess.TheVisionofAutonomicComputing[J].Computer Magazine,IEEE,2003;(1) 10.印是.Java与面向对象程序设计教程【M].第一版,高等教育出版社 计算机工程与应用2005.25115 万方数据 AVR单片机与PC机打印口高速双向数据通信接口 作者: 胡平平, 王晶杰, Hu Pingping, Wang Jingjie 作者单位: 北京机械工业学院计算机及自动化系,北京,100085 刊名: 计算机工程与应用 英文刊名: COMPUTER ENGINEERING AND APPLICATIONS 年,卷(期): 2005,41(25) 引用次数: 0次 参考文献(3条) 1.Introduction to the IEEE 1284 Parallel Port Standard 2.伍丁红 增强并行口EPP协议及高速并行口A/D转换器的设计[期刊论文]-电子技术应用 1998(2) 3.朱世鸿 可编程逻辑器件PLD实用设计技术 1994 相似文献(5条) 1.期刊论文 汪洋.叶湘滨 利用EPP接口协议实现高速数据通信 -单片机与嵌入式系统应用2001(1) 如何实现PC与单片机系统间的高速数据通信,是测量控制系统中经常遇到的难题.本文系统地介绍利用EPP接口协议实现高速数据通信的原理,并从硬 件、软件两方面给出一个应用EPP接口协议的设计实例. 2.期刊论文 郭荣军 用嵌入式汇编检测打印机联机状态 -电脑开发与应用2003,16(4) 在Windows98环境下,详细介绍了打印机接口、数据通信原理、用C++Builder5.0的嵌入式汇编功能,通过直接对打印机端口的读写实现了打印机联机 状态的检测,实现很方便且检测到的状态比其他方法更好.最后提出了利用PC机的打印机接口应用于其他数据通信场合的设想. 3.期刊论文 汪洋.王湘祁.叶湘滨.隋卫平 基于EPP的便携式数据采集处理系统 -仪器仪表学报2001,22(z1) EPP(Enhanced Parallel Port,增强型并行口)接口协议解决了PC与数据采集系统间的高速双向数据通信问题。本文提出了利用EPP接口实现便携式数 据采集处理系统的一般架构,并举出了一个利用EPP接口实现PC与单片机数据采集系统的通信的实例。 4.会议论文 汪洋.王湘祁.叶湘滨.隋卫平 基于EPP的便携式数据采集处理系统 2001 EPP(Enhanced Parallel Port,增强型并行口)接口协议解决了PC与数据采集系统间的高速双向数据通信问题.本文提出了利用EPP接口实现便携式数 据采集处理系统的一般架构,并举出了一个利用EPP接口实现PC与单片机数据采集系统的通信的实例. 5.期刊论文 曹海燕.葛艳蕊.CAO Hai-yan.GE Yan-rui EPP协议及其在光释光断代仪中的设计与应用 -河北省科学 院学报2006,23(3) 在矿物研究、地质样品年龄测定以及考古等领域,光释光仪器有着举足轻重的地位,而如何实现仪器与计算机的高速数据通信是仪器运行的关键.作者 阐述了EPP协议,并给出了接口电路的.实验表明,EPP接口电路工作良好,符合要求. 本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjgcyyy200525034.aspx 下载时间:2010年1月4日
/
本文档为【avr单片机与pc机打印口高速双向数据通信接口】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索