网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> 文库 >> 工业电子 >> 文章正文
  [组图]基于USB总线的CAN总线通信适配器的设计           ★★★ 【字体:
基于USB总线的CAN总线通信适配器的设计
作者:周如培,…    文章来源:现代电子技术    点击数:    更新时间:2007-1-31    

 :针对控制系统小尺寸、低功耗的要求,本文首先简述了采用USB总线控制器PDIUSBD12CAN总线控制器SJA1000设计了基于USB总线的CAN总线通信适配器,并利用WinDriver开发其Windows设备驱动程序。该系统在工业现场可以灵活、高速、高效地完成大量数据交换,并可应用于多种控制系统中。该系统具有极大的应用价值。
  关键词USB总线;PDIUSBD12CAN总线;SJA1000设备驱动程序

Design of CANBus ControlSystem Based on USBBus

  ZHOU RupeiYU YueW ANG Dongfang

  (College of AntomationInformation EngineeringXi′an University of TechnologyXi′an710048China

  AbstractAim atcontrolsystem smalland low powerthis paper renderthe design of CAN bus based on USBBus which usePDIUSBD12 and SJA1000and use WinDriver to develop system windows driver programThe system has flexibilityquicklyhigh efficiency characteristic in industry localuseThe system indicates great application value
  KeywordsUSBbusPDIUSBD12CAN busSJA1000Windows driver


1
 概 述
  现场总线CANController Area Network)控制器局域网是德国Boshch公司于20世纪80年代初开发的一种用于汽车控制与测试仪器间进行数据通信的串行通信网络。他的最大特点是采用了通信数据块编码,而不是传统的站地址编码,使得网络内的节点数在理论上不受限制,数据块的标识符可由11 b29 b组成,这种数据编码方式可实现多主工作方式,数据收发方式灵活,可实现点对点、一点对多点及全局广播等多种传输方式,这一点在分布式控制系统中非常有用。CAN总线通过硬件CRC检测并提供了相应的硬件处理能力,保证了数据在通信中的可靠性。CAN总线的传输距离远,通信速率高。当通讯速率为1 Mbs时,其任意2个节点之间的最大距离为40 m;当通信速率为96 kbs时,其任意2个节点之间的距离可达5 km;当通信速率为5 kbs时,通信距离可达10 kmCAN总线以其高性能,高可靠性以及独特的设计,越来越受到人们的高度重视,不但在汽车行业中应用广泛,而且在工业控制、机器人、医疗器械等领域发展迅速。
   通用串行总线USBUniversal Serial Bus)是MicrosoftIntel等为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信的标准。他具有传输速度快(有3种速度,15 Mbs的低速,12 Mbs的全速和480 Mbs的高速)、灵活(4种类型和3种速度,可适用于多种外设)、易于使用(自动配置,即插即用,可进行热插拔)、双向、同步传输等特点。USB设备的安装不需要用户的设置,同时USB总线不占用系统的地址空间、中断号等系统资源,使得系统简化,同时解决了系统地址空间以及中断号冲突的问题。USB总线具有很高的容错性,通过硬件CRC检测,在协议中规定了出错处理和差错恢复的机理。随着PC机的发展,USB总线已经成为PC机上的标准接口,但USB的传输距离通常不超过几m,这对工业应用来说是不够的。本设计结合USB总线与CAN总线的优点,使用USB接口扩展CAN总线的监控和管理功能,通过PC机强大的性能,监控、管理CAN总线上的用户系统,收集CAN总线上各个节点的信息,并通过CAN总线向各个节点发送控制和监控命令,提高CAN总线在工业应用中的监控管理功能,同时扩大CAN总线的应用范围。

2
 USB总线接口的设计
   在微控制器和USB接口的选择上有2种方式,一种是采用具备USB通信功能的微处理器。随着USB应用的日益广泛,IntelCypressCypressPhilips等芯片厂商都推出了具备USB通信接口的微处理器。其中有8x930A8x931AEZ_USB等。由于这些单片机具有USB接口,这些芯片与过去的开发系统是不兼容的,需要购买新的开发系统,投资较高。另一种是采用普通微处理器加上专用的USB通信芯片。
  现在的专用芯片中较流行的有NationalSemiconductor公司的USBN9602ScanLogic公司的SL11PhilipsPDIUSBD12等。其中PDIUSBD12是一款性价比很高的USB接口器件,他通过并行接口与微处理器进行通信,这种接口方式使得设计者可以选择自己熟悉的控制器进行开发,简化了开发难度,加快了系统的设计。所以本系统采用PDIUSBD12AtmelAT90S8515连接的方式进行开发。
   图1PDIUSBD12连接的硬件设计框图。

  

  图1AT90S8515PDIUSBD12通过并行接口进行连接,单片机从CAN总线接受数据然后通过USB将数据发送到微机,其中PB3控制PDIUSBD12的复位,PB2PDIUSBD12的片选信号,PA0..7]为数据线,PDIUSBD12从主机接受信号,触发单片机的中断,单片机进行中断处理。USB设备与主机的连接速度是由D+,D-连线上的电阻位置决定的,如果D+线上有上拉电阻,USB设备为全速设备,如果D-连线上有上拉电阻,则USB设备为低速设备。PDIUSBD12softconnect技术在片内集成了15 kΩ的上拉电阻,可以通过微处理器发送命令来控制D+上的上拉电阻是否与VCC连接。
  USB设备的软件设计主要包括2个部分:一是USB设备端的单片机软件,主要完成USB协议处理,以及其他控制功能,二是主机端的程序,由USB驱动程序和用户控制程序,USB驱动程序完成USB协议的处理,用户控制程序完成数据的处理和采集以及系统
的控制。
  USB设备的程序编写介绍如下:首先是对PDIUSB12进行初始化,设定内部时钟,选择内部连接方式。接着设定系统的初始地址为0,完成初始化后,主机会向USB设备发送获取设备描述符的命令,设备描述符描述了设备的基本属性。
  设备描述符描述了设备所属的设备类及子类,其中厂商标志(VenderID)和产品标志(ProductID)比较关键。他表明了设备的厂家和产品系列,同时他们是系统为设备安装驱动程序的依据。
  每个USB设备都有一个独立的地址,地址由主机分配,主机在取得设备描述符后,向设备分配一个空闲地址并向设备发送配置地址命令,设备根据主机的要求更改自己的地址,以后的数据交换都通过这个地址进行。
  完成地址设置后,主机发送获取配置描述符命令,USB返回配置所包含的所有接口和接口所包含的端点的描述符。
  USB有一个或多个配置,每个配置有一个或多个接口,每个接口有0个或多个端点,每个端点对应一个输入或输出管道。
  主机在获得USB设备的设备描述符,配置描述符并进行地址设置后,设备与主机的连接初步完成。主机通过Vender IDProduct ID安装设备对应的驱动程序。驱动程序安装完成后,驱动程序与USB进行连接。  
  USB设备编程可分为2个部分:后台ISR(中断服务程序)和前台主程序循环,其中后台ISR与前台主程序之间的数据交换通过事件标志和数据缓冲区来实现。当PDISUBD12USB收到一个数据包,那么就对微处理器产生一个中断请求,微处理器立即响应中断。在ISR中,数据包从PDIUSBD12内部缓冲区移到循环数据缓冲区并在随后清零PDIUSBD12的内部缓冲区以使其能接收新的数据包,微处理器可以继续他的前台任务直到完成。
  由于这种结构,主循环不关心数据是来自USB还是其他接口,他只检查缓冲区内需要处理的新数据。这样主循环专注于数据的处理而ISR能够以最快的速度进行数据传输。
  同样,控制端点在数据包处理时采用相同的方式。
ISR
接受和保存数据缓冲区的传输并设置相应的标志寄存器,主循环向协议处理程序发送请求。
  主循环和ISR之间的任务分配是这样的:ISRD12收集数据,而主循环对数据进行处理,当ISR收集了足够的数据时,他只通知主循环已经准备好等待处08理。这将减少主循环不需要的服务时间并简化了主循环的编程。

3
 CAN总线接口的设计
   这部分由微处理器、CAN控制器和CAN收发器组成,微处理器负责将数据发送给CAN控制器,并经由CAN控制器、光耦以及CAN收发器将数据发往CAN总线,原理图如图2所示。

  CAN总线控制器采用Philips公司的SJA1000,并辅以该公司的PCA82C250接口驱动器。为了增加系统抗干扰能力,在SJA1000CAN总线收发器82C250之间使用了2个高速光电隔离器件6N137实现了总线与控制器的隔离,以避免干扰提高工作可靠性。CAN控制器可以选择从RX0TX0RX1TX1接受发送数据,当使用RX0TX0工作时,需要将RX1接到一个稳定的电平上。
  CAN总线软件设计与USB的类似,也是采用后台ISR与前台主程序之间的数据交换通过事件标志和数据缓冲区来实现。
  系统首先进行资源分配,对SJA1000进行初始化。 在前台主程序判断是否有接受和发送的数据,如果有则分别进行处理。
  在CAN总线初始化之前需要进入复位模式,只有在复位模式才可进行系统的控制寄存器的设置。进入复位模式后,需要设置其他的寄存器。命令寄存器控制缓冲器的收发状态,中断寄存器、状态寄存器查询SJA1000的工作状态,接受寄存器设定工作地址,接受屏蔽寄存器设定工作形式,总线定时寄存器设定工作频率、采样频率,输出控制寄存器一般设置为正常输出方式。最后进入SJA1000工作模式,接受发送数据。

4 Windows驱动程序设计
  驱动程序是建立在对外设资源访问的基础上的,或者只是简单提供对硬件资源访问的方法。基本的外设资源包括:存储器、IO和中断请求,此外还有寄存 器,寄存器实质上就是外设存储空间上特定的单元。在Windows 9x操作系统下,用户程序可以通过在程序中嵌入MOVEOUTIN等汇编指令来实现对硬件资源的访问,但是这种方式不适合NT内核的操作系统(如Windows 2000XP等)。因为出于安全性的考虑,NT内核系统拒绝用户程序直接访问硬件,所以通常需要通过底层驱动(NT内核驱动为WDM)来实现,但是这种方法不但底层编程的工作量大、难度高,而且调用驱动的用户程序也很难写,所以在工业控制中很少这样使用,一般使用第三方的软件制作动态链接库(DLL),在DLL中使用第三方的库函数访问硬件,由第三方的库函数去通过他的WDM驱动实现硬件访问。
  在这里我们采用了Jungo公司的WinDriver来进行USB驱动的开发,利用他可以在几分钟内实现基本的硬件资源访问。我们通过WinDriver生成的驱动程序顺利地驱动了USB总线,并完成通信和控制。

5
 结 语
  USB设备的应用目前处于高速发展阶段,其高效、灵活、独特的设计越来越受到人们的重视,USB的应用在国内已经起步。
  CAN总线与USB总线作为流行的、先进的总线技术都具有广泛的应用和发展前途。本设计通过结合USBCAN的优点连接扩展了USB在工业控制中的功能,同时大大简化了工业控制与PC机之间的数据通讯,具有十分广泛的应用价值。本设计已经完成,并在西安恒新自动控制公司的控制系统中得到应用,取得良好的效果。

参考文献

1SJA1000 Stand-alone CAN Controller.Philips Data Sheet,1999.
2]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996
3]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,1999
4PDIUSBD12 USB固件编程与驱动开发.北京:北京航空航天大学出版社,2003
5PDIUSBD12 USBinterface device with parallel busPhilips Data Sheet1998
6WinDriver V5 User Guide Jungo Ltd.,2002

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    USB OTG 5V电荷泵
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号