USB转CAN总线智能节点设计
据《硅谷》杂志2012年第17期刊文称,提出一种USB总线转CAN总线的接口方案。其中主要论述其硬件电路、软件编写及驱动软件。该方案选用单片机加独立CAN总线控制器的模式实现不同总线间的数据通讯,此方案在电路小型化和电路可靠性等方面有独特优势,实现USB接口与工业现场中的CAN总线网络相互通信,拓展CAN总线应用范围,具有一定的市场前景。
1.绪论
在当今时代,信息技术飞速发展,各类信息采集系统、数据处理系统、智能终端等自动化装置在产品和工业现场的大规模应用,如何解决数据向上位机的传输以及自动化装置之间数据的高速、可靠、及时的传输成为一个值得不断深入研究的问题。现场总线正式在这样的背景下应运而生的。CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准。是目前国际上应用最广泛的现场总线之一。
随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。典型的分散式控制系统由现场设备、接口与计算设备以及通信设备组成。现场总线(FIELDBUS)能同时满足过程控制和制造业自动化的需要,因而现场总线已成为工业数据总线领域中最为活跃的一个领域。现场总线的研究与应用已成为工业数据总线领域的热点。尽管目前对现场总线的研究尚未能提出一个完善的标准,但现场总线的高性能价格必将吸引众多工业控制系统采用。同时,正由于现场总线的标准尚未统一,也使得现场总线的应用得以不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。它是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。控制器局域网将在中国迅速普及推广。
2.主控单片机方案
本设计的目的是设计一个成本低,结构简单、性能稳定的USB转CANBUS接口适配器。可以满足现场设备与计算机之间高速、可靠、稳定的通讯。本方案由主要由MCU及USB控制模块、CAN模块组成。从装置微、小型化和电路可靠性方面考虑,选择带有USB功能的MCU,然后可以直接构成与上位机通讯的物理层的连接。目前市面上常见的带有USB模块的MCU芯片有SiliconLaboratories公司的C8051F家族中的C8051F3X系列,CYPRESS公司的EZ-USBFX2系列芯片中的CY7C6系列和CY8C24X94,还有Microchips公司的PIC18F14K50、PIC16C765等。CAN控制器有NXP公司的SJA1000,Microchip的MCP2515,Philips公司的PCA82C200。CAN收发器方面有通用型收发器CTM8251,PCA82C250/251,高速CAN收发器TJA1040/1050,高速CAN收发器TJA1041,容错CAN收发器TJA1054,单线CAN收发器AU5790。
从MCU的处理能力、内部硬件资源、芯片面积、外围电路、主芯片价格等多方面综合考虑,本案主控制器采用SiliconC8051F340全速USBFLASH微控制内核。CAN的节点模块,选用CAN独立控制器+集成CAN收发器方案,CAN独立控制器为SJA1000。CAN节点集成收发器选用CTM8251A芯片,该芯片内部集成了所有必需的CAN隔离及CAN收、发器件。硬件电路主要包括了有MCU与USB控制模块、CAN节点模块、电源支持电路及其它电路几部分。
3.软件关键点设计
设计的样品电路板如图1所示,其正常工作的软件整体结构主要包括:1)F340I/O口模拟SJA1000的Intel模式读写时序;2)CANBUS编程设计;3)USBBUS软件设计三部分。整个的过程中,上位机发送信息时,MCU通过USB接口读入上位机USB接口发送数据,然后存入缓存器中。然后,在软件中的写SJA1000子程序调用这个数据后对SJA1000进行写操作,SJA1000自动以CAN的报文之形式发到CAN收发器CTM8251,后者将CAN报文的逻辑电平转换为CAN总线的差分电平,发送到CAN总线上。上位机接收数据时,先是从CAN总线上的CTM8251接收到数据将CAN总线的差分电平转化为SJA1000的控制电平后,经SJA1000的验收代码滤波后,产生中断并存到接收缓冲寄存器中。MCU接收到SJA1000的中断后,从SJA1000的缓冲寄存器中,读取数据,通过软件传给USB发送函数,发送到上位机。由于SJA1000是典型的51的地址/数据总线复用结构,而C8051F340则是采用分离结构。因此如何用C8051F340的I/O口来模拟51的读写时序是程序的一个难点,还有就是上位机软件和USB驱动的编写。
因为SJA1000的数据口是地址数据复用接口,而340单片机则不是,因此需要用C8051F340的I/O口来模拟SJA1000的读写时序。本装置中用单片机的P1.6端口来模拟SJA1000的ALE端口时序要求。通过合理设置单片机端口上的数据信号和控制信号,把需要的数据传输至SJA1000中,然后通过SJA1000对数据进行编码,传输到CAN总线上去,实现两类总线的数据智能通讯。
当电源打开时,首先进行的是主控制器的也就是C8051F340自身的初始化,包括初始化时钟配置,关闭看门狗,初始化端口配置。第二步是最主要的也就是SJA1000的寄存器的初始化。SJA1000有两种模式,一种是复位模式,另一种是工作模式。只有当进入复位模式时才能对SJA1000进行设置。所以首先就是要确保SJA1000进入复位模式。当确定SJA1000进入复位模式后,就可对SJA1000根据选择的波特率、验收滤波位、定时等等进行设置。设置完成以后再对SJA1000的模式寄存器进行设置,设置为工作模式,并通过程序,确保使之完全可靠的退出工作模式。
CAN总线数据发送过程是数据交换的典型过程之一。在这个过程中首先要初始化SJA1000的发送缓冲区。发送缓冲区长度为13个字节。第一步是要初始化帧信息和标识码。它的第一个字节是帧信息字节,它说明了这个报文的帧格式它说明了帧格式(SFF标准帧或EFF扩展帧)远程或数据帧和数据长度。然后就是初始化标识码SFF(标准帧)有两个字节的识别码EFF(扩展帧)有四个字节的识别码。本设计采用扩展帧。第二步要对发送区进行初始化并确保SJA1000不在接收状态、发送缓冲器没有被锁。这些可以通过软件来查询状态寄存器来确保。第三步就是要写发送缓冲区的数据区,EFF(扩展帧)的数据区最长有8字节。第四步就是将命令寄存器的发送位置1,启动发送,数据就自动转化为CAN报文的形式发送给CAN收发器CTM8251。
4.结论
本设计目的是实现一个基于单片机的适配器,可以将CAN总线上的数据通过USB接口传输到其他主机(PC、工控机等智能终端)进行分析和处理、监控设备的工作状态等等。也可以用上位机通过数据转换器向CAN节点发送命令或数据,从而实现了上位机(计算机)与现场设备的之间的通信。本设计选择了单片机加独立CAN控制器的方案,智能节点功能组织灵活,硬件布局设计合理,有一定的实用和推广价值。
|