EPP接口协议的原理及实现PC与单片机系统间高速传输的电路设计

网友投稿 307 2022-11-07

EPP接口协议的原理及实现PC与单片机系统间高速传输的电路设计

前言

1.EPP引脚定义EPP引脚定义如表1所列。

2.EPP接口时序

(1)EPP写操作时序如图1所示。

①程序对EPP数据寄存器执行写操作;

③CPU将有效数据送到数据总线上;

⑤主机等待nWait变高,确认数据发送成功;

⑥主机等待nWait变高,确认数据发送成功;

⑦EPP写周期结束。

(2)EPP读操作时序如图2所示。

CPU实现从外设读数据的操作步骤如下:

①程序对相应EPP端口寄存器执行读操作;

②nDStrb(nAStrb)置低(如果nWait为低);

③主机等待nWait为高,确认数据发送成功;

④主机从并行口引脚读取数据;

⑤nDStrb(nAStrb)置高;

⑥EPP读操作周期结束。

3.EPP端口寄存器EPP接口除了保留SPP的3个端口寄存器以外,还新增了5个端口寄存器,如表2所列。

WAIT:Wait状态位(1有效);

INTR:中断请求状态位(1有效);

USER1~USER3:用户自定义;

TMOUT:保留(EPP1.7)超时标志位(EPP1.9)。EPP控制端口寄存器。

(1)EPP状态端口寄存器的最低位bit0,在EPP1.9中定义为TMOUT。在EPP操作时序中,如果PC机数据(地址)选通信号变低后,且在10μs时间内,外设未能将nWait置为低,则TMOUT置为1,表示延时。

(2)EPP1.9标准中,只有当nWait为低时,才能开始一个操作周期;但在EPP1.7中,无论nWait状态如何,nAstrb(nDstrb)都会被置低,从而开始一个新的数据(地址)操作周期。

二、EPP接口传输数据的一个实例

GAL译码电路方程式为/O1=/I1*/I2*/I3*I4*/I5,EPP接口选通地址为2000H。当单片机执行如下指令:

MOV DPTR,#2000H

MOVX @DPTR,A

就将寄存器A中的数据锁存到数据总线上,便于PC机利用EPP接口进行读操作。

C语言例程:

#define SPPDATA 0x0378 //定义各寄存器地址

#define SPPSTAT 0x0379

#define SPPCNTL 0x037A

#define EPPDATA 0x037C

#include

FILE *fp;

Int data;

Long i;

int k;[page]

fp=fopen(filename,“wb”); //打开要存储数据的文件

outportb(SPPCNTL,0x24);

//向控制端口发00100100代码,初始化为读操作模式for(i=0;i《524288;i++)

{

while(!((inportb(SPPSTAT))&0x80))

//查询是否发送完毕

{}

data=inportb(EPPDATA); //读数据

fputc(data,fp); //将数据存入文件

}

fclose(fp); //关闭文件

单片机汇编语言程序为:

FLAG1 BIT P1.7 ;标志位

FLAG2 BIT P3.4

NUM EQU FFFFH ;要传输数据端的字节个数

COMMUN:MOV DPTR,#STADD

COMM1:MOVX A,@DPTR

PUSH DPH

PUSH DPL

MOV DPTR,#EPP_CE

MOVX @DPTR,A

POP DPL

POP DPH

SETB FLAG1 ;将P1.7置高

CLR FLAG2 ;将P3.4置低

JB FLAG1,$;查询P1.7为低,即nDStrb为低,表示PC读操作已完成

SETB FLAG2 ;将P3.4置高

SETB FLAG1 ;将P1.7置高

INC DPTR

CJNE NUM,COMM1 ;循环NUM次

RET

实际应用该接口电路,能实现1MB/s的传输速率,并且性能稳定可靠。

如果应用EPP1.9标准,硬件电路不用变动,软件中可以省略对nWait进行判断的环节,速率能接近2MB/s。

结束语

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:​观点 | 40批次智能手机18批次存安全隐患,质检总局只发结果不点名另有深意
下一篇:观点 | 从马化腾分享的三个案例,看“互联网+”如何为传统企业赋能
相关文章

 发表评论

暂时没有评论,来抢沙发吧~