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所示。