EPP逻辑接口WinDriver底层驱动的可视化主备CAN监控节的设计

时间:2007-04-29

EPP逻辑接口WinDriver底层驱动的可视化主备CAN监控节的设计

上海豪威IC设计有限公司(201203) 怯肇乾

随着CAN总线在通信设计系统中的应用,出现了不少CAN节点监控产品。其中,以EPP并口为接口、以SJAl000做CAN协议控制器的微机监控节点的产品更是独树一帜。这类产品硬件构造简单、DOS监控软件设计简洁、通信快速、操作使用方便。本文即以这类产品为课题对其性能做进一步完善:(1)在EPP接口和SJAl000之间做可编程逻辑设计,使节点监护通信更直截了当。(2)在监控软件设计上用WinDriver做底层驱动进行可视化编程,以增强人机接口界面,使监控更加简洁方便。(3)扩展单节点监控为主、备双节点监控,使监护全面完善。

1系统总体硬件设计

系统总体硬件构成如图1所示。其中,2片SJAl000分别用于实现主节点和备用节点的CAN总线协议控制器,且为增强各自的驱动能力分别使用了1片82C250收发驱动器。2片SJAl000共用一套振荡电路和一套复位电路,复位电路为简单的阻容形式。由于EPP接口控制线己全部用做他用,故微机不能控制SJAl000做硬件复位,但为了调试方便,加入了按钮做意外手动复位。1片PLD(EPM7032ST-10)用于实现EPP接口和SJAl000之间的通信传输控制;电源取自外部CAN总线系统的+5V电源;发光二极管用做电源和主、备节点的收发指示。

2 EPP和SJAl000之间的接口逻辑设计

在EPP接口和SJAl000之间加入适当的逻辑接口,可以避免传统设计中对EPP控制线的重新定义和特殊通信函数的书写,缩短并口通信的时间,提高数据采集的实时性。这样,通过EPP读写SJAl000时只要读写EPP地址和数据寄存器就可以了。

按照EPP并口协议和SJAl000读写时序,本设计以EPP井口的3根控制线/write、/AddStrb、/DataStr的逻辑时序来产生SJAl000读写控制的ALE、/wr、/rd逻辑和反馈回EPP的Wait信号逻辑。特别定义EPP接口的/reset控制线做主、备SJAl000的片选信号,低电平选中主SJAl000,高电子选中备用SJAl000。主、备SJAl000的中断线相"与"后作为中断信号输入EPP井口中断状态线(EPP接口协议和SJAl000的读写时序已有不少文章做过介绍,在此不再赘述)。下面给出用Altera公司的AHDL语言书写的逻辑设计(采用AHDL语言其目的是借用Altera功能强大的Maxplus II做模拟分析)。

图2是MaxPlusII模拟分析"微机通过EPP写SJAl00寄存器结果"的波形图。图中,首先进行地址选通、传送多锁存地址;然后是写操作;一段是SJAl000中断发白后,主机响应并进行读操作。

3 WinDriver底层驱动程序的产生

实时数据采集程序的书写离不开中断的使用。为了在可视化编程中使用中断,必须选择适当的工具来书写底层驱动程序。目前,底层驱动程序的书写工具很多,如DDK、SDK、VtoolsD、WinDriver等,这里选用Jungo公司简单方便的开发工具WinDriver。

打开WinDriver的驱动向导,创建一个新的驱动程序。WinDriver检测外接硬件设备,产生连接设备列表,从中选用parallel port,指定WinDriver在一给定目录下用C或Pascal语言产生VB、VC++、Dephi或C++Builder工程项目文件。这里选用C语言和C++Builder开发工具,指定LPT为文件前缀。 在给定目录下,WinDriver的驱动向导可产生几个文件和1个C++Builder子目录。在产生的文件中,LPT.wdp、LPT_lib.h和LPT_Iib.c是编写应用程序必不可少的。LPT.wdp是WinDriver底层驱动程序和用户程序沟通的关键枢纽,LPT_Iib.h和LPT_Iib.c是WinDriver提供的己包装好的可直接使用的函数库。在其他文件中,LPT_diag.h和LPT_diag.c是WinDriver提供的并口传输测试程序,可作为书写应用程序的参考。下面给出产生的几个主要函数。

4 可视化应用程序的设计

设计可视化应用程序时,要在人机界面窗口中做主备CAN总线选择和接收对象选择。下面给出采用C++Builder5.5开发的部分程序片段(为简化叙述,这里给出的是总线活动全部接收,按1次接收按钮只接收1帧数据的程序,若总线无活动则定时自动退出)。

4.5程序的编译与发行

程序编译前,为建立起与WinDriver底层驱动程序的链接,必须做到:

(1)在工程项目.cpp文件开始嵌入:
# include<condefs.h>
USEUNIT("..\lpt_lib.c");

(2)在unit.cpp文件开始嵌入:
# include<1pt_1ib.h>

(3)在unit.cpp文件开始定义变量:
LPT_HANDLE hLPT;

程序分发使用前,对于Windows NT/2000/98/ME,必须把WINDRVR.SYS文件拷贝到C:\WINNT\SYST-EM32\DRIVERS下;对于98/ME,也可以把windrvr.vxd程序拷贝到用户windows\system\vmm32下,并使用wdreg.exe安装运行该程序,格式为:wdreg-vxd install。



  
上一篇:F1aSh存储器在TMS320C3X系统中的应用
下一篇:基于AM186ed微处理器的嵌入式系统以太网接口设计与实现

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料