摘要:介绍了基于DSP的CAN控制器的设计及应用方法,利用该方法可以在波特率高达lMb/s的条件下稳定、可靠地传输数据,而且延迟时间很少。实验证明,利用TMS320F2812内嵌的CAN模块来构成的硬件电路和软件设计十分简单实用。
关键字:CAN总线;串行通信;分布式控制;DSP;TMS320F2812
0 引言
eCAN模块是一种片上增强型控制器,其性能较之已有的DSP内嵌CAN控制器有较大的提高,而且数据传输更加灵活方便,数据量更大、可靠性更高、功能更加完备。随着TMS320F2812的大量推广使用,基于DSP的CAN总线通信方式将得到广泛的应用。
1 eCAN模块的增强特性
eCAN模块是TI公司的新一代32位高级CAN控制器,它完全兼容CAN2.0B协议,可以在有干扰的环境里使用上述协议与其它控制器串行通信。该模块除具有一般DSP内嵌CAN控制器的所有功能外,与TMS320F2812系列DSP的CAN模块相比,它还主要具有如下一些增强特性:
(1)增加了邮箱数量,并且所有邮箱都具有独立的接收屏蔽寄存器。TMS320F2812有多达32个邮箱,其所占用的512字节RAM都可以配置为
发送或接收邮箱,且都有一个可编程的接收屏蔽寄存器。因而其数据传输更加方便灵活、信息量大大增加;
(2)eCAN是一个32位的高级CAN控制器。其控制寄存器的状态寄存器必须以32位方式访问,而接收屏蔽、时间标识寄存器、超时寄存器和邮箱所在的CAN范围则可以以8位、16位和32位方式访问;
(3)时间标识。eCAN模块应用一个全速运行的32位定时器(LNT)来获得接收或者发送一个信息(有效的CAN数据帧)的时间。当一个接收
信息被保存或被发送时,定时器的内容将写入到相应邮箱的时间标识寄存器(MOTS)里。这样就可获得接收或发送一个信息的时间。当邮箱成功发送或接收一个信息时,LNT寄存器被清除。所以可以通过使用邮箱来实现网络的全局时间同步;
(4)超时功能。为了确定所有的信息都能在预定的时间里送出或接收,每个邮箱都有它自己的超时寄存器(MOTS)。如果一个信息没有在超
时寄存器设定的时间内完成发送或接收,其超时状态寄存器里将设置一个标志位,并据此判断是否超时。
以上这些增强特性使得TMS320F2812在进行CAN通信时,其数据传输更加方便灵活、数据量更大、功能更完备。
2 应用设计
针对TI公司的TMS320F2812内嵌的eCAN模块的方便性和实用性,可用TMS320F2812微控制器组成一个CAN总线网络来进行实时数据收发。其
中CAN驱动器使用TI公司的SN65HVD230D。此方案可扩展性强,功能强大。若要增加节点个数,只需要在CAN总线上挂接带有CAN模块的控制器
即可。
在TM320F2812的eCAN模块与USB-CAN模块之间进行通信时,上位机可选用派恩公司的USB-CAN模块,其调试界面为PCANView。这里将eCAN的邮箱0配置成发送邮箱,邮箱5配置成发送邮箱,并采用扩展信息帧格式。发送采用查询方式,接收用中断方式,同时可采用DsP将接收的数据转发回上位机,并对接收和发送的数据进行错误计数。图1所示为采用上位机设置端口、波特率等参数,并通过USB-CAN模块与下位机通信的调试界面图,它可用来检验TM320F2812的CAN总线通信是否正常。
3 硬件设计
本设计的硬件系统分为两层:第一层是CAN总线与TMS320F12812接口层,用来实现CAN总线和TMS320F12812的物理接口;第二层为DSP与外
围器件的信息处理层,其中TMS320F2812是针对控制领域应用而设计的一款新型工控芯片,它集成了数字IO、事件管理器、A/D模数转换、SPI串行外设接口、SCI异步串行通信接口、CAN控制器等控制资源。其CAN总线通信接口电路如图2所示。
4 软件设计
在使用CAN控制器之前,首先必须对它的内部寄存器进行初始化设置,包括相关IO口设置以及邮箱的相关配置。这里着重介绍如何进行初始化设置和发送与接收的配置。图3所示是本系统的主程序流程图,其CAN配置流程如图4所示。
在软件设计时,首先应进行IO口配置。由于CAN通讯所用到的两个引脚CANTX和CANRX均为复用IO口,因此,首先要配置寄存器CANTIOC
的TXFUNC和RXFUNC位为l;再就是要初始化位时序,即对位时序配置寄存器CANBCR进行配置,包括CAN控制器的通讯波特率、同步跳转宽度、采样次数等参数。
当完成以上CAN配置之后,还需按照图5所示的流程图来完成数据的发送与接收配置,同时初始化邮箱。邮箱初始化主要是设置邮箱的标识符和控制域(即发送的是远程帧还是数据帧),以及对相应的邮箱赋初值。
数据接收时,所接收到的信息的标识符必须与相应的接收邮箱的标识符相同,否则该信息将被滤除。这里,数据的发送与接收请求均采用标志位查询方式。
按照以上步骤设置好后,接着就是对数据的发送与接收请求进行配置。数据接收可采用中断方式,中断配置可在主程序流程中进行配置。正确配置中断入口地址及中断函数,并开放CAN接收中断后,还要分别配置不同的数据帧,包括标准帧和扩展帧,以及数据帧和远程请求帧。
图6表示为上位机接收数据的调试界面。可以看到,CAN通信和下位机间的数据通信,可以写数据并发送给下位机,同时也可接收下位机的数据来验证电路及软件的正确性。
5 结束语
利用TMS320F2812内嵌的eCAN模块可使得硬件电路设计更为简单而可靠,而且性能也较已有的DSP内嵌的CAN控制器有较大的提高。同时,采用C语言编程,则可使得程序的设计难度降低,提高程序的可维护性并缩短开发时间。