0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Windows2000上实现CAN总线适配器的接口设计

电子设计 来源:数字技术与应用 作者:王林泓;蔡运富 2020-04-08 08:06 次阅读

现场总线作为二十世纪80年代发展起来的新兴技术,在工业现场已有了广泛的应用。在比较有影响力的几种现场总线中,CAN总线以其突出的优点不仅大量应用于工业现场,而且在楼宇自动化、智能终端设备等民用领域也有了长足的发展。

现场总线网络技术的实现需要与计算机相结合。以往CAN总线网络与计算机的连接采用RS232、ISA或PCI接口。但是随着计算机接口技术的发展,ISA接口已经逐渐被淘汰;RS232接口数据传输率太低;PCI虽然仍是高速外设与计算机接口的主要渠道,但其主要缺点是占用有限的系统资源、设计复杂、需有高质量的驱动程序保证系统的稳定,且无法用于便携式计算机的扩展。随着USB1.1、USB2.0规范的相继制定,为外设与计算机的接口提出了新的发展方向。USB的主要特点有:外设安装简单,可实现热插拨;通讯速率高,USB1.1全速传送速率为12Mbps,与标准串行端口相比,大约快100倍;支持多设备连接;提供内置电源

本文给出一种在Windows2000下使用USB1.1协议实现CAN总线适配器的设计方法。整个设计主要开发适配器的固件及计算机的驱动程序、应用程序,以达到用USB接口连接现场CAN总线网络的目的。

1、 适配器硬件接口设计

适配器硬件电路由微控制器、CAN总线接口、USB总线接口和DC-DC隔离电源模块等组成。原理框图如图1所示。

微控制器P89C51RD2是Philips公司生产的增强型MCS-51兼容单片机,片内集成64KB闪存和1KB扩展RAM,双数据指针,4级中断优先级,7个中断

内置看门狗,可编程时钟输出,在6时钟模式下工作,速度是标准51单片机的两倍。此时外部最高频率可达20MHz。在高速、大程序容量、中小规模数据处理场合是一款非常理想的单片机型。

CAN总线接口使用Philips公司的独立CAN总线控制器SJA1000,并由光耦6N136进行总线隔离。SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制,符合CAN2.0A和2.0B规范,最高速率可在达1Mbps。CAN总线收发器采用PCA82C250。

PDIUSBD12是Philips公司推出的全速USB接口器件,完全兼容USB1.1规范。图1中D+引脚信号电平通过器件SoftConnect命令内部上拉,从而向主机表示为一个全速设备。EOT引脚自动检测USB接口的VBUS电压以确定USB电缆是否连接到了主机。SUSPEND是双向引脚,用以向微控制器指示器件是否挂起。当有USB总线事件发生时,引脚向微控制器发出中断信号。PDIUSBD12支持总线复用和非复用两种并行接口模式,以方便连接不同类型的微控制器。图1中采用总线复用方式,当用奇数地址访问PDIUSBD12时被认为是命令,偶数地址访问则被认为是数据读写。

各器件都需要外部时钟信号,而且它们自身也都有可编程的时钟输出功能,这就给系统的时钟设计带来了便利。图1中微控制器6时钟运行模式下,外部为12MHz晶振。P89C51RD2的P1.1引脚产生6MHz方波作为PDIUSBD12的输入时钟;通过PDIUSBD12的SetMode寄存器编程使CLKOUT输出时钟频率为24MHz,作为SJA1000的外部输入时钟。

在Windows2000上实现CAN总线适配器的接口设计

2 、软件设计

软件设计包括微控制器的固件设计和计算机端USB驱动程序两部分。

2.1 微控制器固件编程

固件编程是USB数据传输系统中终端设备程序设计的一个重要概念。微控制器通过固件是程序与计算机进行数据交换。固件设计的目的是:使PDIUSBD12在USB上达到最大的传输速率;增加系统的可扩展性和硬件无关性。

固件要实现的内容:一是对SJA1000初始化,接收CAN总线送来的数据,收集CAN网络状态信息,并将主机的数据下发到CAN网络;二是对PDIUSBD12初始化,完成USB总线连接过程,并组织CAN网络和主机之间的数据传送。设计中采用KeilC51软件编译环境,C51和ASM混合编程方式。SJA1000和PDIUSBD12都有完善的中断机

微控制器可以通过读它们的中断寄存器获得总线事件。为了提高固件的运行效率,主程序对系统进行实始化后开放中断,在中断服务程序中对事件进行分析和必要的处理,并设置相应的变量标志和数据缓冲区。主程序则循环查询变量标志,调用相应的子程序进行处理。这种程序结构使得主程序能够在前台处理各种数据传送任务,同时又可以通过中断在后台及时处理总线事件。

2.1.1 CAN协议实现

SJA1000支持BasicCAN和PeliCAN两种协议模式。在适配器设计中采用了BasicCAN模式。中断设为电平中断方式,SJA1000中断服务程序框图如图2所示。

2.1.2 USB1.1协议实现

PDIUSBD12支持所有的四种USB数据传输方式。在适配器的设计中使用了控制传输、中断传输和批量传输。控制传输中只用来传递控制信息,固定使用端点0;中断传输使用端点1,用来传送CAN网络状态信息;批量传输用来实现主机和CAN网络节点之间的数据传送,使用端点2。

2.2 驱动程序设计

USB驱动程序属于WDM(Windows driver module)类型。WDM驱动程序是分层的,引入了FDO(Function Device Object)和PDO(Physical Device Object)两个新类来描述硬件,每一个物理硬件有一个PDO,但是可以有多个FDO,在驱动程序中直接操作的是PDO和FDO。系统通过全局唯一标识符GUID实现驱动程序的识别。应用程序和WDM驱动程序通信时,系统为每个用户请求打包形成一个I/O请求包发送到驱动程序。

图3是Windows中USB的通信层次结构模型。图4系统软件方块中的底部是Windows系统提供的驱动程序,包括主控制器驱动程序(OPENHCI.SYS或者UHCD.SYS)、HUB驱动程序(USBHUB.SYS)是一个类驱动程序(USBD.SYS)。

Windows2000下驱动程序的设计工具是VC++和Win2000DDK,但是直接使用DDK编程有相当大的难度。目前有第三方软件厂商提供了一些驱动程序开发工具,如Jungo公司的WinDriver、Compuware公司的DriverStudio等。这些工具仍然是基于WindowsDDK的,但是进行了新的封装,提供了驱动程序设计向导。

适配器设计中采用了DriverStudio作为驱动程序开发工具。利用其中的DriverWorks一步步地作出选择并修改少量参数,即可生成驱动程序框架和测试台应用程序框架,对USB设备的通用性部分支持得很好。在程序框架,对USB设备的通用性部分支持得很好。在VC++中对向导生成的代码作修改,并对设备特殊功能部分添加处理代码,然后用VC++编译为*.SYS文件,就是一个完整的驱动程序。SoftIce是DriverStudio的另一个调试工具,可以对驱动程序进行操作系统内核级的跟踪与调试。

生成驱动程序后,编写相应的INF文件是重要的一步。INF文件在操作系统发现新硬件之后向系统指明应该安装的驱动程序、系统向设备提供的服务以及注册表项要修改的内容。

基于USB接口的CAN总线适配器经过试验运行证明:在中小规模和短时大数据块传送时,能够很好地完成网络通信任务。USB接口是计算机外设的发展趋势,目前主要用在中低速场合。随着USB2.0规范的推出,又逐渐向高速应用发展。因此将现场总线网络和计算机接口相连的适配器具有广泛的应用前景。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    1911

    浏览量

    130551
  • usb
    usb
    +关注

    关注

    60

    文章

    7867

    浏览量

    263612
  • 适配器
    +关注

    关注

    8

    文章

    1910

    浏览量

    67833
收藏 人收藏

    评论

    相关推荐

    USB转串口驱动器CAN接口适配器

    2针的接线柱端子,提供CAN总线接口。2、USB2CAN适配器上有一个LED指示灯,当适配器断电
    发表于 04-21 14:25

    USB转CAN适配器、转换器

    、USB2CAN适配器上有一个LED指示灯,当适配器断电时为熄灭,电且不通讯的时候为常亮,有数据通讯时为闪亮。产品主要性能1、USB接口
    发表于 05-11 09:26

    Ginkgo USB-CAN接口适配器

    :基于Ginkgo USB-CAN接口适配器实现CAN总线bootloader上位机软件,利用
    发表于 10-09 15:09

    Ginkgo USB-CAN总线适配器

    上的波特率大小;STM32 CAN波特率计算器:计算STM32单片机的CAN总线波特率参数的小软件;应用实例简介:基于Ginkgo USB-CAN
    发表于 10-09 15:17

    快速使用Ginkgo CAN适配器教程

    1.1 概述Ginkgo USB-CAN总线适配器是带有USB2.0接口和2路CAN接口
    发表于 10-11 15:21

    纬图Ginkgo USB-CAN接口适配器

    。 ZLG_CANtest:CAN数据的发送接收显示软件。源码完全公开的应用实例基于Ginkgo USB-CAN接口适配器实现
    发表于 11-03 09:49

    快速使用Ginkgo CAN适配器教程

    1.1 概述Ginkgo USB-CAN总线适配器是带有USB2.0接口和2路CAN接口
    发表于 12-17 09:30

    Ginkgo USB-CAN总线适配器的使用

    1.1 概述Ginkgo USB-CAN总线适配器是带有USB2.0接口和2路CAN接口
    发表于 02-21 11:37

    基于USB的CAN总线适配器的设计

    采用内嵌CAN控制器的Motorola MC68HC908AZ60A作为微控制器,以PDIUSBD12作为USB的接口芯片,设计了基于USB接口CAN
    发表于 07-07 15:01 31次下载

    RS-232转CAN总线协议适配器的设计

    本文介绍一种设计RS-232 转CAN 总线协议适配器的方法,采用STC89C51 作为微处理器,MCP2510 作为CAN 总线控制器。详
    发表于 01-13 14:09 87次下载

    基于USB技术的CAN总线适配器的设计

    基于USB技术的CAN总线适配器的设计 CAN总线是德国BOSCH公司20世纪80年代初为解
    发表于 04-12 12:40 610次阅读

    基于DSP的PCI总线CAN适配器设计

    基于DSP的PCI总线CAN适配器设计  1 引 言   CAN总线是一种开放式、数字化、多点通信的串行
    发表于 03-05 11:21 1696次阅读
    基于DSP的PCI<b class='flag-5'>总线</b><b class='flag-5'>CAN</b><b class='flag-5'>适配器</b>设计

    一种高速CAN—LonWork总线互联适配器的设计与实现

    摘要:针对目前国内测控领域流行的CAN总线与LonWorks总线通信标准互不兼容的问题,提出了一种高速CANLonWorks总线互联适配器
    发表于 02-27 15:14 27次下载

    CAN总线无线电适配器

    电子发烧友网站提供《CAN总线无线电适配器板.zip》资料免费下载
    发表于 07-29 09:23 3次下载
    <b class='flag-5'>CAN</b><b class='flag-5'>总线</b>无线电<b class='flag-5'>适配器</b>板

    基于LPC2292的CAN总线USB接口适配器的设计

    电子发烧友网站提供《基于LPC2292的CAN总线USB接口适配器的设计.pdf》资料免费下载
    发表于 10-09 16:53 1次下载
    基于LPC2292的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>USB<b class='flag-5'>接口</b><b class='flag-5'>适配器</b>的设计