位置:51电子网 » 技术资料 » 接口电路

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

发布时间:2008/6/3 0:00:00 访问次数:616

随着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

随着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

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!