DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 116|回复: 0
打印 上一主题 下一主题

基于uPSD3254A单片机的EPP并口通信技术

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 16:16:18 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
摘要:介绍了并口的EPP(Enhanced?Parallel?Port)接口协议及其高速数据通信的原理,并在ST公司uPSD3254A单片机及其开发环境PSDsoft?EXPRESS基础上完成了一个应用EPP接口协议的实现方案。
关键词:EPP协议??uPSD3254A??PSDsoft?EXPRESS

引言:

????在IbM公司推出PC机开始,并口已经是PC机的一部分。最初并口就是为代替串口来驱动高性能点阵式打印机[1],并口通信有SPP、EPP、ECP三种传输模式,SPP模式是半双工单向传输的,传输速率仅为15Kb/S;EPP增强型模式采用双向半双工数据传输,传输速度高达2Mb/S;ECP扩充型模式采用双向全双工数据传输,传输速率比EPP高。在设计和实现方面,EPP模式比ECP模式更灵活、简洁、可靠,在工业界得到了更多的实际应用[2]。本文介绍的是一种基于uPSD3254A的EPP增强并口的设计,其核心是使用uPSD323X内部的CPLD实现EPP接口与PC机上并口之间的高速硬件通信,实际测试中速度达到了900Kb/S。

1?EPP协议介绍

????EPP协议是由Intel、Xircom、Zenith三家公司联合提出的,于1994年在IEEE1284标准中发布。EPP协议有EPP1.7和EPP1.9两个标准,可以在PC机的?bIOS/外围设备/并行口(bIOS/Peripheral?Setup/Parallel?Port?Mode)方式中进行设置[3]。与传统并行口标准利用软件实现握手不同,EPP接口协议通过硬件自动握手,能达到500Kb/s~2Mb/s的通信速率。

1.1?EPP工作模式的寄存器和引脚定义?

????PC并口采用25针的Db型阴极接口,EPP工作模式的25个引脚的定义如表1所示。

????????????????????????? 表1??EPP协议引脚定义?


引脚号

EPP信号

方向

是否反向

说明


1

nWrite

输出



低电平表示写,高电平表示读


2"9

Data0"7

输出/输入



数据


10

Interrupt

输入



上升沿触发中断


11

nWait

输入



低电平传输数据/地址,高电平传输结束


12

Spare

输入



EPP未定义,可用户自定义


13

Spare

输入



EPP未定义,可用户自定义


14

nDstrb

输出



低电平表示数据传输


15

Spare

输入



EPP未定义,可用户自定义


16

nReset

输出



低电平有效


17

nAstrb

输出



低电平表示地址传输


18"25

GND






????在寄存器方面,EPP定义了8个寄存器,继承了SPP的3个寄存器,其中EPP与SPP共用状态寄存器和控制寄存器,保证了EPP模式和SPP模式软硬件兼容型,其寄存器定义如表2所示。将并口设置为EPP方式时,需要在PC机的bIOS中设置并口工作于EPP方式,寄存器组的基地址(bASE)通常设为0x378。

???????????????????????????? 表2??EPP寄存器定义?



地址

端口名称

读/写


bASE+0

SPP数据端口




bASE+1

SPP/EPP状态端口




bASE+2

SPP/EPP控制端口




bASE+3

EPP地址端口

读/写


bASE+4

EPP数据端口

读/写


bASE+5"+7

用户自定义

—?
?
1.2?EPP读写周期?

?????为了能进行有效的EPP数据通信,必须遵循EPP的握手时序。与SPP的软件握手相比,EPP采用硬件完成的握手实现了高速的数据通信速度。EPP协议共分为四种周期:数据写周期、数据读周期、地址写周期和地址读周期,数据周期用于计算机和外设间传送数据;地址周期用于传送地址、通道、命令、控制和状态等辅助信息。

1.2.1?EPP数据/地址读周期如图1所示

? EPP数据/地址读周期CPU读操作步骤如下:

1)程序对EPP数据寄存器(base+4)/地址寄存器(base+3)执行读操作

2)nDstrb/nAstrb被置低如果nWaite信号为低,否则等待

3)主机等待nWaite为高表示数据发送成功

4)从并口中读取8位数据/地址

5)nDstrb/nAstrb被置高

6)EPP数据/地址读周期完成?




?????????????????????????????????
????????????????? 图1?EPP?数据/地址读周期

1.2.2?EPP数据/地址写周期如图2所示

??? EPP数据/地址写周期CPU写操作步骤如下:

1)程序对EPP数据寄存器(base+4)/地址寄存器(base+3)执行写操作

2)将nWrite信号置低(低表示写操作)

3)将要写的数据/地址数据送到数据总线上

4)nDstrb/nAstrb被置低如果nWaite信号为低,否则等待

5)主机等待nWait握手信号为高表示发送成功

6)nDstrb/nAstrb被置高

7)EPP数据/地址写周期完成?

??????????????


????????????????????????? 图2?EPP?数据/地址写周期

??? 其中,使用EPP1.7?(Pre?IEEE?1284)?握手标准时,则nDstrb/nAstrb信号不考虑nWait是否为低,直接被置低开始一个新的读/写周期;如果使用EPP1.9握手标准,则只有在nWait信号为低时,nDstrb/nAstrb信号才会被置低开始一个新的读/写周期。但是EPP1.7和EPP1.9都要求nWait信号为高时一个读/写周期才结束[3]。

??? 由于nWait、nWrite、nDstrb、nAstrb等信号传输后反向(见表1),因此图1和图2?中的时序是从PC端考虑的,nWait信号表示单片机发出的原始信号,在PC端实际采用的是与单片机发出的原始信号取反后的信号。

2?uPSD323X及其开发环境介绍

??? ST公司的uPSD3254A是带8032内核的Flash可编程系统器件,具有在线编程能力和超强的保密功能;256+32Kbytes的Flash存储器;片内8K的SDRAM;带有16位宏单元的3000门可编程逻辑电路(CPLD),可以实现EPP接口等一些不太复杂的接口和控制功能,50个I/O引脚等。

??? 由于uPSD3254A采用8032内核,因此可以完全得到Keil?C51编程器的支持,PSDsoft?EXPRESS是ST公司开发的基于Windows平台的一套软件开发环境。只要点击鼠标即可完成对地址锁存器、Flash、可编程逻辑电路等外设的所有配置和写入。使用PSDsoft?EXPRESS工具对uPSD3200系列器件的可编程逻辑电路的操作简单、直观。

3.基于uPSD3254A的EPP接口实现


3.1?硬件接口

??? EPP增强并口的速度最高可达到500Kb/s~2Mb/s,这对外设的接口有很高的要求,如果外设响应太慢,系统的整体性能将大大下降。但如果采用可编程逻辑器件,使接口的响应完全由硬件来完成,系统的整体性能将大大提高。这种实现方案可以达到并口中的速度极限,而且保密性好,EPP接口(EPP1.9)外设硬件接口原理如图3所示。

?????????


?????????????????????? ? 图3?EPP接口外设硬件接口图

??? 在本设计中,uPSD3254A采用主动连续接收PC机并口的数据,当需要数据时,连续接收PC的数据,否则PC一直等待nWait信号有效。而当外设准备好数据上传到PC机时,PC机采用的是中断方式接收外设的数据。

3.2?CPLD逻辑编程

???????在PSDsoft?EXPRESS工具中,将PA端口(D0~D7)配置成带有时钟上升沿触发的寄存器类型(PT?clocked?register)的输入宏,Pb4(nWrite)、Pb6(nDstrb)、Pb7(nAstrb)配置成CPLD逻辑输入(logic?input)口。nDstrb信号和nAstrb信号各自取反再相与后的值作为输入宏单元的时钟。上述对PA、Pb端口的配置用方程式表示如下:

EPP_D0.LD?=?!nDstrb?&?!nAstrb;

EEP_D1.LD?=?!nDstrb?&?!nAstrb;

EEP_D2.LD?=?!nDstrb?&?!nAstrb;

EEP_D3.LD?=?!nDstrb?&?!nAstrb;

EEP_D4.LD?=?!nDstrb?&?!nAstrb;

EEP_D5.LD?=?!nDstrb?&?!nAstrb;

EEP_D6.LD?=?!nDstrb?&?!nAstrb;

EEP_D7.LD?=?!nDstrb?&?!nAstrb;

nAstrb.LE?=?1;

nDstrb.LE?=?1;

????数据正向传输过程:即计算机向外设单片机传输数据(即EPP数据写周期)为例,计算机首先把nWrite信号置为低,表明是写周期,同时将数据放到数据总线上,然后检测nWait信号,如果nWait为低则置低nDstrb信号。此时,!nDstrb?&?!nAstrb信号会出现一个上升沿,此上升沿会将PA端口的数据锁存到输入宏;当单片机检测到nDstrb为低时将nWait信号变高表示外设正忙接收数据并处理,同时读取数据总线上的数据。当计算机检测到nWait信号为高后就会将数据握手信号nDstrb变高,EPP数据写周期结束。上述EPP数据的锁存和nDstrb握手信号的产生都由硬件产生,因此数据传输速度快。整个数据传输过程可以在一个I/O周期内完成。

???????数据反向传输过程:单片机准备好数据需要上传到计算机时,uPSD3254A将数据放到PA端口,同时置低Intr信号线,向计算机申请一个中断,而计算机则由一个硬件驱动程序来处理并口的硬件中断。计算机首先把nWrite信号置高,表示当前为读周期,当计算机读取EPP数据口时同样会检测nWait信号。如果nWait为低,然后置低nDstrb并读取数据总线上的数据。单片机在检测到nDstrb为低时马上将nWait信号置高,PC机在nWait为高后自动将nDstrb信号置高,完成一个数据周期的读(相对PC机而言)过程。

3.3单片机数据接收程序

sbit?nwait?=?P1^0;

sbit?ERROR?=?P1^1;

sbit?nDstrb?=?Pb?&?0x40;

void?parallel_rcv(unsigned?long?rcv_count)?????//并口接收,rcv_count为接收字节数

{

???????unsigned?long?i;

????rcv_data?=?(unsigned?char?*?)&rcv_buffer;??

???????reread_sign?=?1;????????????????????????????????????????//非错误态

???????while(reread_sign?==1)

???????{

??????????????for(i=0;i<rcv_count;i++)????????????????????????????//接收数据

??????????????{

???????????????????nwait?=?1;???????????????????????????????????//PC端反向后为低,表示外设准备好接收

?????????????????????while(nDstrb)?????????????????????????????//等待nDstrb为低时完成数据传输并锁存

?????????????????????nwait?=?0;???????????????????????????????????//完成写周期,

?????????????????????rcv_data?=?UPSD_xreg.IMC_A;??//从锁存的输入宏中读取数据

??????????????}????????????????????????????????????????????????????????????????????//接收完成?????

??????????????ERROR?=?error_check(rcv_data);????????????????//检测错误,1为正确,0为错误

??????????????if(ERROR)??????????????????????????????????????????????????????

??????????????{

?????????????????????reread_sign?=?0;????????????????????????????????????????//无错则退出while循环???????

??????????????}

??????????????else???????????????????????????????????????????????????

??????????????{

?????????????????????ERROR?=?1;?????????????????????????????????????????????//校验有错则while循环继续

??????????????}

???????}

???????该程序为单片机数据接收(即PC写数据)子程序,其中rcv_buffer为接收缓存区,error_check为对接收的数据进行校验.如果出错,则将用户自定义引脚12置低,PC机读取状态寄存器时读取到该用户自定义状态为低时,将数据重发,保证了通信的可靠性。

参考文献

[1]?余张国,李众立,张晓琴,李磊民.基于EPP协议的AVR与PC并行通信系统的设计.PLC&FA,2004:(5)
[2]?霍晓方.用68HC908GP32单片机实现EPP增强并口的接口技术.单片机与嵌入式系统应用,??20064)
[3]?Interfacing?the?Enhanced?Parallel?Port.pdf.?http://www.beyondlogic.org?

作者简介:

方耀湘(1982-),男?湖南省湖南大学电气与信息工程学院硕士研究生,研究方向:电子技术应用。??

黎福海(1964-),男,广西人,湖南大学电气与信息工程学院副教授,目前研究领域:数字信号处理。

胡兆斌(1963-),男,陕西人,深圳美安可有限公司总工,目前研究方向:工业印刷技术。

                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-9-20 15:02 , 耗时 0.109320 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表