CAN总线与USB的转接技术
发布时间:2008/5/27 0:00:00 访问次数:538
    
     东华理工学院 范新峰
    
    引言
    
    usb(universal serial bus)是一种通用串行总线。随着计算机技术的发展和广泛应用,人们对串行总线提出了更高的要求。因此,开发一种兼容低速和高速的技术,从而为广大用户提供一种可共享、可扩充、使用方便的串行总线已成为众多厂商的共同目标。usb总线就是一种新型、快速、双向、同步传输、并可以热插拔的数据传输总线,它满足了人们对总线易用性、扩展能力强和低成本的要求,因此,usb在pc外设领域的传输速率从1.5mbps的低速和12 mbps的全速提高到如今的480 mbps的高速数据传输。目前,usb总线已经逐渐成为计算机领域中应用最广泛的外设总线连接规范。
    
    与此同时can(controller area network)总线技术也日趋成熟,其传输距离远,传输速率高,抗干扰能力强,易于组网,而且节约成本,已被公认为是最有前途的现场总线之一,并在国内外控制领域获得了普遍重视。目前,德国现代汽车公司和欧洲其他几个主要汽车公司的车内控制系统全部采用can总线,国内的很多工业控制系统,(如车载控制系统、医疗控制系统和很多智能小区中的智能控制系统)都采用了can总线技术。随着更加完善的can2.0b协议的提出,国外已有专家提出预言,can总线的应用寿命至少还有二十年。
    
    虽然上述两种总线的特点都比较突出,但二者在控制领域的应用仍有其自身局限性。usb的传输距离通常不超过几十米,经常达不到工业应用的要求;而can适配器与主机在传统接口上的连接十分繁琐和复杂,不利于can的应用扩展。所以,本设计考虑将传输距离较远的can总线技术与即插即用的usb接口技术相结合,即利用usb接口方便的实现can总线和主机的连接,从而有力的扩展了can总线的监控和管理功能,扩大can总线的应用范围。
    
    1 接口模块的总体设计
    
    本文所介绍的usb-can转接技术总体框图如图1所示,该设计分两大部分:一是与主机usb接口相连的usb控制部分;二是与can总线相连的can控制器部分。两者中间通过单片机联系起来。usb控制部分用usb接口控制芯片ch372来实现数据的接收和发送;can控制器sja1000用来实现can总线间的数据通信。单片机用来进行相应的控制、协调以及系统的通信。
    
    
    2 at89c52在系统中的功能
    
    单片机at89c52在系统中主要起到一个桥梁和协调控制的作用。主机通过ch372把数据发送到单片机,单片机再把数据通过sja1000发送到can总线,从而实现整个系统的通信。此外,单片机还需要对ch372和sja1000进行初始化,并通过地址/数据以复用的方式访问ch372和sja1000。由于在访问其中一个芯片时,如果另一个芯片还保持有输出,那么单片机就不能读到正确的数据,因此,单片机要通过片选控制信号分配有效地址。单片机主要通过主循环来监控系统的通信,其主循环流程图见图2所示。
    
    
    3 usb控制部分
    
    usb控制部分使用usb接口控制芯片ch372来实现数据的接受和发送。ch372是一个usb总线的通用设备接口芯片,ch372在单片机端,具有8位数据总线和读、写、片选控制线以及中断输出,因此可以方便地挂接到单片机/dsp/mcu等控制器的系统总线上;在计算机系统中,ch372的配套软件提供了简洁易用的操作接口,因此,与本地端的单片机通讯就如同读写文件一样简单。
    
    ch372在计算机端提供有应用层接口,应用层接口是由ch372动态链接库dll提供的面向功能应用的api,所有api在调用后都会有操作状态返回,但不一定有应答数据。ch372动态链接库提供的api包括:设备管理api、数据传输api、中断处理api等。
    
    在应用层设计中,笔者采用的是请求加应答的方式。该方式使用一个下传的主动请求和一个上传的被动应答进行交互式双向数据通讯,下传与上传一一对应,相互关联。主动请求是指由计算机应用层下传给单片机的数据请求,被动应答则是单片机收到数据请求后,上传给计算机应用层的应答数据。所有的通讯都由计算机应用层发起,然后以接收到单片机的应答结束,其完整的过程包括如下步骤:
 &n
    
     东华理工学院 范新峰
    
    引言
    
    usb(universal serial bus)是一种通用串行总线。随着计算机技术的发展和广泛应用,人们对串行总线提出了更高的要求。因此,开发一种兼容低速和高速的技术,从而为广大用户提供一种可共享、可扩充、使用方便的串行总线已成为众多厂商的共同目标。usb总线就是一种新型、快速、双向、同步传输、并可以热插拔的数据传输总线,它满足了人们对总线易用性、扩展能力强和低成本的要求,因此,usb在pc外设领域的传输速率从1.5mbps的低速和12 mbps的全速提高到如今的480 mbps的高速数据传输。目前,usb总线已经逐渐成为计算机领域中应用最广泛的外设总线连接规范。
    
    与此同时can(controller area network)总线技术也日趋成熟,其传输距离远,传输速率高,抗干扰能力强,易于组网,而且节约成本,已被公认为是最有前途的现场总线之一,并在国内外控制领域获得了普遍重视。目前,德国现代汽车公司和欧洲其他几个主要汽车公司的车内控制系统全部采用can总线,国内的很多工业控制系统,(如车载控制系统、医疗控制系统和很多智能小区中的智能控制系统)都采用了can总线技术。随着更加完善的can2.0b协议的提出,国外已有专家提出预言,can总线的应用寿命至少还有二十年。
    
    虽然上述两种总线的特点都比较突出,但二者在控制领域的应用仍有其自身局限性。usb的传输距离通常不超过几十米,经常达不到工业应用的要求;而can适配器与主机在传统接口上的连接十分繁琐和复杂,不利于can的应用扩展。所以,本设计考虑将传输距离较远的can总线技术与即插即用的usb接口技术相结合,即利用usb接口方便的实现can总线和主机的连接,从而有力的扩展了can总线的监控和管理功能,扩大can总线的应用范围。
    
    1 接口模块的总体设计
    
    本文所介绍的usb-can转接技术总体框图如图1所示,该设计分两大部分:一是与主机usb接口相连的usb控制部分;二是与can总线相连的can控制器部分。两者中间通过单片机联系起来。usb控制部分用usb接口控制芯片ch372来实现数据的接收和发送;can控制器sja1000用来实现can总线间的数据通信。单片机用来进行相应的控制、协调以及系统的通信。
    
    
    2 at89c52在系统中的功能
    
    单片机at89c52在系统中主要起到一个桥梁和协调控制的作用。主机通过ch372把数据发送到单片机,单片机再把数据通过sja1000发送到can总线,从而实现整个系统的通信。此外,单片机还需要对ch372和sja1000进行初始化,并通过地址/数据以复用的方式访问ch372和sja1000。由于在访问其中一个芯片时,如果另一个芯片还保持有输出,那么单片机就不能读到正确的数据,因此,单片机要通过片选控制信号分配有效地址。单片机主要通过主循环来监控系统的通信,其主循环流程图见图2所示。
    
    
    3 usb控制部分
    
    usb控制部分使用usb接口控制芯片ch372来实现数据的接受和发送。ch372是一个usb总线的通用设备接口芯片,ch372在单片机端,具有8位数据总线和读、写、片选控制线以及中断输出,因此可以方便地挂接到单片机/dsp/mcu等控制器的系统总线上;在计算机系统中,ch372的配套软件提供了简洁易用的操作接口,因此,与本地端的单片机通讯就如同读写文件一样简单。
    
    ch372在计算机端提供有应用层接口,应用层接口是由ch372动态链接库dll提供的面向功能应用的api,所有api在调用后都会有操作状态返回,但不一定有应答数据。ch372动态链接库提供的api包括:设备管理api、数据传输api、中断处理api等。
    
    在应用层设计中,笔者采用的是请求加应答的方式。该方式使用一个下传的主动请求和一个上传的被动应答进行交互式双向数据通讯,下传与上传一一对应,相互关联。主动请求是指由计算机应用层下传给单片机的数据请求,被动应答则是单片机收到数据请求后,上传给计算机应用层的应答数据。所有的通讯都由计算机应用层发起,然后以接收到单片机的应答结束,其完整的过程包括如下步骤:
 &n