摘要:如何实现PC与单片机系统间的高速数据通信,是测量控制系统中经常遇到的难题。本文系统地介绍利用EPP接口协议实现高速数据通信的原理,并从硬件、软件两方面给出一个应用EPP接口协议的设计实例。 关键词:单片机系统 高速数据通信 EPP前言单片机系统中常常需要具备与PC机通信的功能,便于将单片机中的数据传送到PC机中用于统计分析处理;有时又需要将PC机中的数据装入单片机系统中,对单片机程序进行验证和调试。目前常用的通信方式是串行通信,但传输速率太低,以9600bps计算,传输1MB至少需要10min(分钟)以上。并行通信克服了串行通信传输速率低的缺点。标准并行口SPP(Standard Parallel Port)方式实现了由PC机向外设的单向传输,但实现PC机接收外设发送的数据则非常麻烦;而增强型并行口EPP(Enhanced Parallel Port)协议却很好地解决了这一问题,能够实现稳定的高速数据通信。一、EPP接口协议介绍EPP协议最初是由Intel、Xircom、Zenith三家公司联合提出的,于1994年在IEEE1284标准中发布。EPP协议有两个标准:EPP1.7和EPP1.9。与传统并行口Centronics标准利用软件实现握手不同,EPP接口协议通过硬件自动握手,能达到500KB/s~2MB/s的通信速率。1.EPP引脚定义EPP引脚定义如表1所列。
表1 EPP接口引脚定义引脚号SPP信号EPP信号方 向说 明1StrobenWrite输出指示主机是向外设写(低电平)还是从外设读(高电平)2~9Data0~7Data07输入/输出双向数据总线10AckInterrupt输入下降沿向主机申请中断11BusynWait输入低电平表示外设准备好传输数据,高电平表示数传输完成12PaperOut/EndSpare输入空余线13SelectSpare输入空余线14AutofdnDStrb输出数据选通信号,低电平有效15Error/FaultnDStrb输入空余线16InitializeSpare输出初始化信号,低电平有效17Selected PrinternAStrb输出地址数据选通信号,低电平有效18~25GroundGroundGND地线2.EPP接口时序EPP利用硬件自动握手实现主机与外设之间的高速双向数据传输,软件只须对相应端口寄存器进行读/写操作。(1)EPP写操作时序如图1所示。CPU实现向外设写数据的操作步骤如下:①程序对EPP数据寄存器执行写操作;②nWrite置低;③CPU将有效数据送到数据总线上;④nDStrb(nAStrb)变低(只要nWait为低);⑤主机等待nWait变高,确认数据发送成功;⑥主机等待nWait变高,确认数据发送成功;⑦EPP写周期结束。(2)EPP读操作时序如图2所示。CPU实现从外设读数据的操作步骤如下:①程序对相应EPP端口寄存器执行读操作;②nDStrb(nAStrb)置低(如果nWait为低);③主机等待nWait为高,确认数据发送成功;④主机从并行口引脚读取数据;⑤nDStrb(nAStrb)置高;⑥EPP读操作周期结束。3.EPP端口寄存器EPP接口除了保留SPP的3个端口寄存器以外,还新增了5个端口寄存器,如表2所列。
表2 地 址端口名称方 向基地址 0SPP数据端口写基地址 1EPP状态端口读基地址 2EPP控制端口写基地址 3EPP地址端口读/写基地址 4EPP地址端口读/写基地址 5EPP数据端口读/写基地口 6未定义(32位传输)读/写基地址 7未定义(32位传输)读/写EPP状态端口寄存器WAITINTRUSER1USER2USER3××TMOUTWAIT:Wait状态位(1有效);INTR:中断请求状态位(1有效);USER1~USER3:用户自定义;TMOUT:保留(EPP1.7)超时标志位(EPP1.9)。EPP控制端口寄存器。××DIRIRQENASTRBINITDSTRBWRITEDIR:方向位(1输入,0输出);IRQEN:中断使能位(1有效);ASTRB:地址选通位(0有效);INIT:初始化(1有效);DSTRB:数据选通位(0有效);WRITE:读/写状态位(0:写,1:读)。读取接口状态和控制接口都只须对相应的端口寄存器进行操作。以初始化为例:读操作初始化:outportb(port 2,0x24);//port为SPP数据端口地址写操作初始化:outportb(port 2,0x04);//port 2为EPP控制端口地址4.EPP1.7和EPP1.9EPP接口最先有EPP1.7标准定义,由于硬件厂商的原因,EPP现有两个标准:EPP1.7和EPP1.9,可以在BIOS/外围设备/并行口(BIOS/Peripheral Setup/Parallel Port Mode)方式中进行设置。两者有如下不同点:(1)EPP状态端口寄存器的最低位bit0,在EPP1.9中定义为TMOUT。在EPP操作时序中,如果PC机数据(地址)选通信号变低后,且在10μs时间内,外设未能将nWait置为低,则TMOUT置为1,表示延时。(2)EPP1.9标准中,只有当nWait为低时,才能开始一个操作周期;但在EPP1.7中,无论nWait状态如何,nAstrb(nDstrb)都会被置低,从而开始一个新的数据(地址)操作周期。
