摘要:介绍了一种基于DSP的CAN控制器和USB芯片的USB总线和CAN总线的通信模块的设计,提出了一种使用USB接口实现CAN总线网络与计算机连接的方案。利用USB100芯片可在不了解任何USB协议的情况下,完成计算机RS 232串口升级为USB接口,同时CAN接口采用DSP片上CAN控制器,硬件设计极为简单。在DSP的控制下,PC机与CAN节点可以双向通信,通信波特率可高达1 Mb/s,传输数据稳定,可靠。实验证明,运用TMS320F2812片上eCAN模块来构成CAN总线通信系统更为简单,实用。
0 引言
随着计算机技术的飞速发展,全电子的计算机连锁控制系统由上位机,联锁机和智能执行单元三层结构组成。本文所介绍的模块正是在此背景下为数据通信进行服务的。CAN总线是目前为止唯一有国际标准的现场总线,由于采用了许多新技术及独特的设计,与一般的通信总线相比,它的数据通信具有突出的可靠性,实时性和灵活性,其应用范围目前已不再局限于最初的汽车行业,而扩展到了机械工业包括数控机床,医疗器械,家用电器等领域。USB接口速度快、连线简单和即插即用的特性是与上位机通讯非常好的外设接口。因此,基于USB接口实现CAN总线与PC机之间数据通信的研究具有一定的应用意义。
1 系统结构
本系统主要是由USB接口和CAN接口等模块组成,其中微处理器TMS320F2812控制全局,实现通过USB接口将CAN总线数据传送给PC机,以及通过USB接口将PC机数据传送给CAN节点的双向通信功能。传统的CAN总线通信模块一般要用到独立的CAN控制器芯片,本系统微处理器F2812片上带有eCAN模块,设计时较为方便,下面简要介绍eCAN模块。
eCAN模块是TMS320F2812 DSP片上的增强型CAN控制器,其性能较之已有的DSP内嵌CAN控制器有较大的提高,数据传输更加灵活方便,数据量更大、可靠性更高、功能更加完备。eCAN模块它完全兼容CAN2.0B协议,可以在有干扰的环境里使用上述协议与其他控制器串行通信。除具有一般DSP内嵌CAN控制器的所有功能外,与TMS320LF240x系列DSP的CAN模块相比,它主要具有如下的一些增强特性:增加了邮箱数量,多达32个;eCAN是一个32位的高级CAN控制器;具有时间标识;具有超时功能。
以上这些增强特性使得TMS320F2812进行CAN通信时,传输更加方便灵活、数据量更大、功能更完备。图1为系统结构图。
2 系统硬件设计
2.1 USB模块的硬件设计
本系统USB接口模块采用USB100模块作为主控芯片。USB100模块是USB通用设备接口芯片,具有8位数据总线接口,内部多达384 B的发送缓冲区和128 B的接收缓冲区,数据通信速率最高可达8 Mb/s,USB100模块读写数据分别由RD和WR2个引脚控制,相当于有读写2个地址,因此将这两个地址映射到F2812外设接口的区域xzcs01中,0x2000作为写地址,0x4000作为读地址,通过XA13,XA14,XZCS01,XWE,XRD5个管脚进行译码,即可方便地控制USB模块的数据收发。选用altera公司的CPLD芯片EPM7032作为译码器件,可以进行在系统编程操作,其中上述5个管脚作为CPLD的输入引脚,CPLD2个输出引脚分别接至USB100模块的RD和WR两个引脚。由于USB100模块是5 V供电,F2812是3.3 V供电,所以8位数据总线通过电平转换器件741vc4245相连,数据方向由F2812的XR/W控制。根据USB100模块时序图,当F2812检测到USB100模块TXE引脚为低时,表示内部发送缓冲区允许发送数据到USB端口,可以将数据通过八位总线发给USB100模块;当F2812检测到USB100模块RXF为低时,表示内部发送缓冲区有来自USB端口的数据。
2.2 eCAN模块应用设计
由于采用TMS320F2812片上增强型控制器eCAN,所以CAN模块硬件电路极为简单,只需将F2812的RX和TX引脚经过电平转换器件连接至CAN收发器PCA82C250的TXD和RXD引脚,并以F2812作为CAN总线系统的微处理器,进行实时数据收发。其硬件系统分为2层:第一层,CAN总线与F2812接口层;第二层,F2812与外围器件的信息处理。CAN收发器采用低廉的PCA82C250,系统的扩展性强,至少可连接110个节点,其引脚8(Rs)用于选择工作模式,高速工作时上接一个斜率电阻,根据总线通信速度可适当调整,一般在16~140 Kb/s之间。
3 系统软件设计
3.1 DSP程序设计
本系统中,微处理器TMS320F2812主要完成2个功能:一是对eCAN控制器进行初始化;二是完成上位机USB接口和下位机CAN接口的数据通信。USB接口通信通过查询USB100的TXE和RXF引脚的状态来完成上位机与微处理器F2812的数据交换,CAN接口的通信主要包括eCAN模块的消息发送和接收。
F2812上电复位后,必须对软件进行初始化,其中最重要的是对eCAN模块初始化。消息发送时,需要初始化发送邮箱,包括向寄存器CANME使能相应邮箱、设置CANMD方向、通过MBOXn.MSGID(n=O~31)设置发送邮箱的ID等操作,初始化后向消息数据寄存器ECanaMboxes.Mboxn.MDR写入上位机USB接口发送的数据,然后设置EcanaRegs.CANTRS.bit.TRSn为1请求发送消息,等待传输响应位TA=1,表示消息成功发送,并产生发送中断,本系统通过发送中断子程序统计发送消息个数。消息接收时,同样需要初始化相应的接收邮箱,完成初始化后,当下位机通过CAN接口发送数据时,如果eCAN模块的接收邮箱的ID与下位机消息的ID匹配,并成功接收,则相应的接收消息挂起寄存器(CANRMP)的相应位被置1;若CPU开放了eCAN接收中断,则同时也产生接收消息中断,在接收中断子程序,可以将相应的消息数据寄存器的内容发给USB100模块的写地址,同时需要查询USB100的TXE端是否允许向USB端口发送数据。
作者:叶成 刘晓刚 刘春生 来源:电子元器件应用