机电之家资源网
单片机首页|单片机基础|单片机应用|单片机开发|单片机文案|软件资料下载|音响制作|电路图下载 |嵌入式开发
培训信息
赞助商
基于uPSD3254A单片机的EPP并口通信技术
基于uPSD3254A单片机的EPP并口通信技术
 更新时间:2008-8-19 13:37:32  点击数:96
【字体: 字体颜色

图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[i] = 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机读取状态寄存器时读取到该用户自定义状态为低时,将数据重发,保证了通信的可靠性。

  • 上一篇: 基于单片机的等精度数字测频
  • 下一篇: SH69P42单片机在电磁炉控制中的应用
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    关于我们 | 联系我们 | 广告合作 | 付款方式 | 使用帮助 | 机电之家 | 会员助手 | 免费链接

    点击这里给我发消息66821730(技术支持)点击这里给我发消息66821730(广告投放) 点击这里给我发消息41031197(编辑) 点击这里给我发消息58733127(审核)
    本站提供的机电设备,机电供求等信息由机电企业自行提供,该企业负责信息内容的真实性、准确性和合法性。
    机电之家对此不承担任何保证责任,有侵犯您利益的地方请联系机电之家,机电之家将及时作出处理。
    Copyright 2007 机电之家 Inc All Rights Reserved.机电之家-由机电一体化网更名-声明
    电话:0571-87774297 传真:0571-87774298
    杭州滨兴科技有限公司提供技术支持

    主办:杭州市高新区(滨江)机电一体化学会
    中国行业电子商务100强网站

    网站经营许可证:浙B2-20080178-1