您当前的位置:首页 > 计算机论文>计算机应用论文

利用EPP并行口实坝PC机之间通信的CAN总线设计

2015-07-09 11:00 来源:学术参考网 作者:未知

论文作者:曹琼 蔡淮 程焱 林敏

摘要  文章简要介绍了EPP并行口及CAN独立控制器s3^1000。并深入研究PC对SJAl000的读写。根据读写时序的产生,设计了两套硬件方案。同时。结合在实践中遇到的问题,指出了一些在CAN总线协议使用上需要注意的地方。
关键词EPP并行口 CAN总线 SJAl000 网络适配卡

利用EPP并行口实坝PC机之间通信的CAN总线设计

西南交通大学计算机与通信工程学院曹琼 蔡淮 程焱 林敏

摘要  文章简要介绍了EPP并行口及CAN独立控制器s3^1000。并深入研究PC对SJAl000的读写。根据读写时序的产生,设计了两套硬件方案。同时。结合在实践中遇到的问题,指出了一些在CAN总线协议使用上需要注意的地方。

关键词

l引言

CAN(ControUer Area Network)总线作为现场总线的一种,与其他总线相比可靠性高性价比合理。其主要特点有

(1)多主方式工作,非破坏性的基于优先权的总线仲裁技术;

(2)借助接收滤波实现多地址的帧传送;

(3)短帧结构数据,受干扰率低;

(4)发送期间丢失仲裁或由于出错而遭破坏的帧可自动重发;

(5)对于严重错误具有自动关闭总线功能,使总线其他操作不受影响;

(6)不关闭总线即可任意挂接或拆除节点,增强了系统的灵活性和可扩展性;

(7)统一的标准和规范,使各设备之间具有较好的互操作性、互换性和通用性等。

正是由于CAN总线的这些优良性能,目前已应用于船舶制造、工业控制、建筑保安系统中,而且正成为许多领域的发展方向。

2 EPP并行口

  为了实现大量数据的快速、准确传输,数据通信已经成为自动化系统的关键技术之一。计算机标准串、并行口是PC机的基本部件之一,利用计算机的标准串、并行口来作为PC机与CAN总线的通信接口,既方便又经济。但是由于串行通讯口的通讯效率较低,难以完成大量、实时性高的数据传输工作,而传统的SPP并行口只能实现数据的单向传输,但高级并行接口(EPP)则可以进行高速的双向数据传输,是进行大量数据传输的一种理想选择。

2.1 EPP概述

  增强型并行口EPP(Enhanced Parallel Port)是一种与标准并行口SPP(Standard Parallel Port)兼容的高性能的并行连接口。在实际应用中,由于EPP并行口具有8位双向数据端口、状态端口和控制端口,因此,EPP可作为8位总线,灵活使用。EPP协议又极大地改善了PC机并行口的数据传输能力,使得并行口的数据传输速率可以很容易达到l一2Mbps。EPP协议定义了各种单/双向信号以满足各自的特殊需要。

 

2.2 EPP寄存器介绍

  EPP协议定义的信号分别对应三个不同的寄存器,在PC机中,并行口l寄存器的基地址一般为378H,该地址包含读入和读出两个寄存器的双缓冲寄存器,对应ADO…AD7双向数据/地址端口;输入操作EPP信号的定义及其描述表l

 表l列出了EPP信号的定义及其描述。

并行口引脚号

EPP信号

数据方向

定义

l

/WRITE

输出

低电平写,高电平读

2—9

AD[O…7]

双向

双向数据/地址线

lO

INTR

输入

外设中断

ll

WAIT

输入

握手信号

12

用户定义

输入

按不同的外设自定义

13

用户定义

输入

按不同的外设自定义

14

/DATASTB

输出

低电平有效,表示正在进行数据读写

15

用户定义

输入

按不同的外设自定义

16

RESET

输出

低有效,外设复位

17

/ADDSTB

输出

低电平有效,表示正在进行地址读写

18—25

GND

信号地

注:①输出,表示由计算机发向外设;输入,表示由外设发向计算机。

②加“/”表示信号低电平有效。

EPP寄存器定义表2

378H

AD7

AD6

AD4

AD4

AD3

AD2

ADl

ADO

379H

WAllr

INTR

自定义

自定义

自定义

无定义

无定义

无定义

37AH

无定义

无定义

READ ENABLE

IRQ ENBALE

/ADDSTB

/BESTE

/DATA

/write

  时使用输入寄存器,输出操作时使用输出寄存器。单向状态端口和单向控制端口的寄存器地址分别为379H和37AH,其定义见表2。这三个寄存器是与标准并行口SPP兼容的,但实际上除了这三个寄存器之外,EPP还定义了其它几个寄存器。

  EPP不需要从主机送来的信号就能执行数据交换。当主机把数据写到数据缓冲区时,总线自动产生数据选通信号。同样,从端口读人数据时也是自动产生数据选通信号来表示系统正准备接收下一批数据。

3 CAN独立控制器SJAl000

sJAl000是一种独立控制器,主要用于移动目标和一般工业环境中的区域网络控制(CAN),是Philips半导体PCA82C200 CAN控制器(BasieCAN)的替代产品。其基本特性有

(1)引脚与PCA82C200独立CAN控制器兼容。

(2)有扩展的接收缓冲器64字节,先进先出(FIFO);

(3)支持CAN2.0A和CAN2.0B协议;

(4)通信位速率可达IMbps。而且它增加了一种新的工作模式(PeliCAN),这种模式支持具有很多新特性的CAN2.0B协议。

4CAN总线收发器PCA82C250

PCA82C250是CAN控制器和物理总线间的接口。器件可以提供对总线差动发送、接收的能力。采用双线差分驱动,有助于抑制汽车等恶劣电气环境下的瞬间干扰。其主要特性有

(1)与ISO/DIS 11898标准全兼容;

(2)高速性,最高可达IMbps;

(3)具有抗汽车环境下的瞬间干扰能力,保护总线能力;

(4)降低射频干扰的斜率控制;

(5)热保护;

(6)总线与电源及地之间的短路保护;

(7)低电流待机方式;

(8)掉电自动关闭输出;

(9)可支持多达110个节点相连接等。

5 适配卡设计

  CAN总线的卓越性能为工业控制提供了一种可靠的数据通信,为了扩展CAN总线的监控和管理功能,应设计一块适配卡,连接PC机的并行口,该卡上具备CAN接口和PC接口特性,它完成的任务主要是PC机与总线之间的通信。

  为此,适配卡的主要组成有:CAN总线控制器(sJAl000)、CAN总线驱动器(PCA82C250)、EPP并行端口。sJAl000是集成的独立CAN控制器,它负责完成CAN总线通信协议的物理层和数据链路层的功能。sJAl000片含有控制寄存器、命令寄存器、状态寄存器、中断寄存器和收发寄存器。PC机通过读写这些寄存器来实现对sJAl000的控制;芯片的TX0、TXl、RX0、RXl引脚用于与CAN总线的接口。PCA82C250是专门用于CAN总线收发驱动的9脚芯片,TXD、RXD引脚分别接收和发送驱动后的信号;CANH、CANL引脚接至双绞线或同轴电缆等传输介质。使用PCA82C250可以扩大通信距离,能提高系统的抗干扰能力,保护总线,降低射频干扰,实现热防护等。sJAl000的中断输出信号/INT接到EPP的INTR中断后,通过中断方式实现PC机与CAN控制器的通信。由于SJAl000的中断输出信号是低电平有效,而EPP的中断信号是高电平有效,所以在他们的连线之间必须加一个反向器。根据通信读写时序的产生,设计了一种由软件产生读写时序的电路和一种由硬件产生读写时序的电路。

5.1软件产生读写时序电路

  连线说明:sJAl000的ADO~AD7直接与EPP并行口的ADO~AD7相连;ALE直接与nWrite相连;/RD,/WR分别与nAddStrobe和nDataStrobe相连;/INT的引线反向后与EPP的INTR相连(如图l所示)。

  此种电路设计需要软件产生访问外设芯片所需的读写时序。在我们的应用程序中,对sJAl000的读写函数分别为ReadReg和SetReg,用汇编语言实现如下(如表3所示)

5.2硬件产生读写时序

  连线说明:nWAIT信号为外设发送给PC的握手信号,以便PC在访问慢速外设时插入等待周期。

读写函数表表3

void SetReg(im port,int Value)

//通过双向口向sJAl000发送数据,port为sJAl000寄存器的地

址,value为要设置的值

im ReadReg(int port)

//读取SJAl000寄存器的值,port为sJAl000寄存器的地址,返回的值为该寄存器的值

{

_sflm

}

mov esx,0

//临时寄存器清零

mov dx,37ah

mov al,0dSh

out dx,al

//WRITE高,ALE低电平,地址选通

mov dx,378h

mov eax,port

out dx,al

//将要访问的sIAl000寄存器地址放上数据线

mov dx,37ah

mov a1,0d4h

out dx,al

//WRITE高。ALE高,将地址信号锁存

mov a1,0d5h

out dx,al

//WRITE高,ALE为低电平,地址选通

mov dx,378h

mDv eax,value

out dx,al

//把要写的数据送上数据总线

mov dx.37a}I

mov a1.0ddh

out山.且J

//WRITE低,可写,ALE低,地址选通,将数据写入sJAl000

mov aI,0d5h

out(1x,al

//复位,WRITE为低,ALE低

}

}

}

int retumcode=0

asm

}

mo~e,sx,0

mov dx,37alI

mov a1,0d5h

out dx,al

//READ为低电平,ALE低,地址选通

lnov dx,378h

mov e.sx,port

out dx,al

//将要访问的sJAl000寄存器地址放上数据线

mov(b,37ah

mov a1,0d4h

out dx,al

//READ低,ALE高,将地址锁存

mov a1.0d5h

out dx.al

//READ低,ALE低,地址选通

mov dx.37aIl

mov a1.0d7h

//READ为低,ALE低,数据被送上数据线

out cb,al

mov a1.0f7h

out dx.al

/,lREADENABLE为1.允许数据读入

mov eax.0

mov dx,378h

.m al,dx,//从效据总线读人寄存器

mov returneode。eax

[nov dx,37ah

mov a1,0f5h

out dx,aL//READ高,ALE低

mov a1,0d5h

out dx,al//恢复,关掉READENBLE

}

ieturn retumcode;

}

注:向控.I端口37AH的ADDSTB,DATASTB,WRITE位写入1时,并行口17、14和1;I脚均为低电平;相反写入0时,三个引脚均为高电平。

  SJAl000的访问时间在40ns以内,所以PC在访问sJAl000时完全可以不用插入等待周期。nWAIT可由nAddrStrobe和nDataStrobe信号经过一个与非门后产生。由于sJAl000的ALE是下降锁存地址信号,所以将nAddrStrobe反相后与ALE相连。在EPP的数据读/写周期时,sJAl000的RD和WR控制信号应该有效,而在地址读/写周期时应该无效。sJAl000的RESET脚与并行端口的nRESET脚相连,由PC机向sJAl000提供复位信号。。

  地址/数据读写说明:握手信号nWAIT由nAddrStrobe和nDataStrobe信号经过一个与非门后再延迟一段时间产生,然后可利用EPP并行口的数据/地址周期来产生sJAl000芯片的读写时序。sJAl000芯片的读写时序分为地址锁存和数据读写。地址锁存解决的是地址的写入和地址锁存信号的产生;数据读写是数据的读写以及相应的读写控制信号的产生。所以,可以利用EPP的地址写周期来产生SJAl000读写时序的地址锁存部分,并用EPP并行口的数据读写周期来产生SJAl000读写时序的数据读写部分。

  数据写周期的时序如图3所示,其步骤

(1)程序向EPP的DATA端口发送一个I/O写周期命令;

(2)插入nWRITE信号,同时数据出现在并行端口数据线上;

(3)当nWAIT信号变成低电平之后,插人数据选通信号;

(4)端口等待来自外设的应答信号(取消nWAlT信号);

(5)取消数据选通信号,EPP周期结束;

数据读周期的时序如图4所示,其读数据的步骤

(1)程序中向EPPDATA端口发送一个I/O读周期命令;

(2)当nWAIT信号变成低电平之后,插入数据选通信号;

(3)端口读取数据位,取消数据选通信号;

(4)端口等待来自外设的应答信号(取消nWAIT信号);

(5)EPP周期结束;

(6)ISA周期结束。

  地址写和地址读周期除了把nDataStrobe信号替换成nAddStrobe之外完全一样。相关引脚直值表如表4所示。

5.3两种设计的比较

  实验表明,采用软件产生读写时序设计的硬件比较简单,便于调试,但是程序编写比较复杂(需编写程序产生SJAl000的读写时序);用硬件产生读写时序设计的硬件稍微复杂,硬件调试也复杂一些,但是应用程序的编写要简单一些(不用编写程序产生SJAl000的读写时序),而且端口读写的速度也快得多。

6 设计中存在的几个问题

(1)PCA82C250第8脚与地之间的电阻Rs称为斜率电阻,它的取值决定了系统处于高速工作方式还是斜率控制方式。把该引脚直接与地相连,系统将处于高速工作方式。在这种方式下,为避免射频干扰,建议使相关引脚的真值表表4

/nData

/nAddr

/nWrite

/WR

/RD

ALE

备注

0

l

0

0

l

0

数据读,地址锁存

O

l

l

l

O

0

数据写,地址锁存

l

0

0

0

l

l

地址写,地址选通

l

O

1

l

0

l

地址读,地址选通

1

l

0

l

l

0

地址数据均无效.等待

l

l

l

l

l

l

地址数据均无效,等待

注:①标加“/”表示低电平有效。加字母“n”表示是并行口的引脚。

②因为地址和数据不能同时被选通,所以,真值表中就不列出它们同时被选通的情况。

用屏蔽电缆作总线;而在波特率较低、总线较短时,一般采用斜率控制方式,上升和下降的斜率取决于Rs的阻值。实验数据表明,15~200k为Rj较理想的取值范围。在这种方式下,可以使用平行线或双绞线作总线。

(2)SJAl000的TXl引脚悬空,RXl引脚的电位必须维持在约O.5Vce上,否则将不能形成CAN协议所要求的电平逻辑。如果系统传输距离近,环境干扰小,可以不用电流隔离,这样可以直接把PCA82C250的VRFF端(约为0.5Vcc)与RXl脚相连,从而简化电路。

(3)必须将sJAl000的中断信号取反之后才能接到PC机并行口的中断引脚上,这样才能保证硬件中断的正确触发。

7 通信控制程序

  根据系统要求和硬件设计原理,编写的通信控制程序应该完成以下功能:在通信控制主界面中可以加载并行口驱动程序,初始化sJAl000;发送、接收数据;监测寄存器的变化;软件复位等附加功能。

8  结束语

  在此设计中,我们掌握了有关CAN总线和EPP并行口的基本知识,设计了一个基于EPP协议的用于PC机间通信的CAN总线适配卡。编写了相应的驱动程序(有关配套软件的具体问题,不在此介绍),经实践证明,两种方案均可行。为了进一步满足应用的需要,在完善组网设计和功能管理方面,CAN还有很多理论和技术方面的问题有待解决。其中包括标准的开放式应用层协议的制定、更灵活的网络拓扑结构的提出和使用,更简单、经济的单片式CAN芯片的研制等等。

参考文献

1邬宽明.CAN总线原理和应用系统设计.北京航空航天大学出版社。1996

2阳宪惠.现场总线技术及其应用.清华大学出版社, 1999

3 SJAl000 Stand-alone CAN controller DATA SHEET. PHILIPS公司产品说明书。1997

4 PCA82C250 CAN controller interface DATA SHEET。 PHILIPS公司产品说明书,2000

5安格斯生.《并行端口大全》中国电力出版社,2001

6饶家明.CAN总线智能节点的设计和实现.《工业仪表与自动化装置》.2002;5

7张培仁.采用EPP协议的CAN总线监控节点的设计与实现.《计算机应用》第21卷。第2期

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页