微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > eCAN模块与SJA1000的应用比较

eCAN模块与SJA1000的应用比较

时间:06-08 来源:互联网 点击:
引言
TMS320F2812是TI公司新推出的DSP芯片,内嵌CAN总线控制器eCAN模块(以下简称为eCAN),性能较已有的DSP(如TMS320C24x)内嵌的控制器有很大的提高;数据传输更加灵活方便,数据量较大,可靠性更高,功能更加完备。而SJA1000是Philips半导体公司推出的新型独立CAN控制器,是PCA82C200的替代产品,支持CAN2.0B协议,完全兼容CAN2.0A,是目前应用比较多的CAN独立控制器之一。

CAN总线系统通信的软件一般可以分为三个主要模块:系统初始化模块、信息发送模块和信息接收模块。下面以TMS320F2812内嵌的eCAN模块与广州周立功公司的DP51+仿真实验仪之间的CAN通信为例,主要就eCAN和SJA1000在这三个部分的操作进行比较。

1 eCAN简介

eCAN同时支持11位和29位的标识码,是一个32位的控制器。eCAN的有些寄存器(如控制寄存器)必须以32位方式访问;一些寄存器(如时间标识寄存器)和邮箱所在的RAM范围可以以8位、16位或32位方式访问。eCAN对信息的接收和发送是基于邮箱的,共有32个邮箱,占用512字节RAM。每一个邮箱都可以有自己独立的ID,独立配置成接收邮箱或者发送邮箱,也可以禁止不用。这样大大增加了数据的容量和信息的处理能力。



TMS320F2812内嵌的eCAN还有一种SCC模式。它是eCAN的缺省工作模式,功能有所简化,同样支持11位和29位的标识码;但只有16个(0~15)邮箱可用,有些寄存器(如CANTSC)也保留不用,可以通过主控制寄存器(CANMC)中SCB位的置“1”来进入eCAN模式。本文若没有特别说明指的就是全功能eCAN工作模式。

2 系统初始化

CAN控制器有两种状态模式,即工作模式和复位模式(eCAN是初始化配置模式)。不同的状态模式,对寄存器的访问操作功能是不同的。无论是eCAN还是SJA1000,在使用之前,也就是进入工作模式之前,必须对它们进行初始化。

仅当eCAN处于初始化模式下,初始化才能进行。DSP复位后就激活了初始化模式,此时对eCAN进行初始化。首先必须将主控制寄存器的改变配置请求位(CCR)置“1”,且CANES的改变配置使能位(CCE)也必须为“1”时才能正式进入配置模式,就可以对位定时器配置寄存器进行操作了。要返回工作模式,必须将CCE和CCR依次成功清“0”。图1(a)为eCAN初始化的流程。

将模式寄存器的复位位置“1”,就可以使SJA1000进入复位模式。在复位模式,需要设定时钟分频寄存器、总线定时寄存器、报文验收寄存器、验收屏蔽寄存器和输出控制寄存器等。设置好各个寄存器后,就可以将复位位清“0”,进入正常的工作模式。进入复位模式后,需要立即设置时钟分频寄存器,将CAN模式位置“1”才能进入PeliCAN模式,否则进入SJA1000的缺省工作模式,即BasicCAN;而其他寄存器的设置则没有严格的次序限制。在这两种工作模式中,SJA1000寄存器从数量、地址分配到功能等方面是有较大区别的。这里主要讨论的是SJA1000的PeliCAN模式。图1(b)给出了SJA1000初始化的流程。

由图1可以看出,eCAN的初始化在操作上比SJA1000要复杂一点,需要成功地将CCR和CCE先后置“1”,才能进行配置操作;而SJA1000只需要将复位位置“1”就可以进行初始化操作了。

3 信息发送

eCAN要发送信息,首先须将某个邮箱配置成发送邮箱,写邮箱标识符寄存器和报文控制寄存器以及数据。使能该邮箱后,将发送寄存器(CANTRS)相应的位置“1”,eCAN就将该邮箱中的数据发送到总线上。报文控制寄存器中的TPL用来设定消息发送的优先级,数字越大,优先级越高。当多个邮箱需要向总线发送消息时,虽然同时将CANTRS相应的位置“1”,优先级高的邮箱先将消息发送;如果邮箱的优先级相同,则邮箱号数大的,先发送。以0号邮箱为例,其发送消息的流程如图2 (a)所示。

SJA1000一般可以采用查询方式来发送信息。不过每一次操作只能向总线上发送1帧信息,而不像eCAN那样,可以一下子向总线发送多帧消息。当SJA1000的发送缓冲区为空时,CPU就可以将要发送的信息写入该缓冲区,然后置命令寄存器的发送请求位,即可将消息发送到总线上。发送完毕后,清空发送缓冲区,等待CPU写入新的信息。SJA1000发送信息时的流程如图2(b)所示。



对于eCAN,如果邮箱需要发送另一条信息,就需要将邮箱的RAM更新。一般只需要更新数据场,即重新写MDL和MDH中的内容。更新数据时,须将CANMC中的CDR位置“1”,并在MBNR处写入需要更新数据的邮箱号,就可以写入新的数据了。之后,将CDR清“0”,使能该邮箱就可以按正常步骤发送信息了。由此可见,对eCAN发送的信息进行数据更新比SJA1000复杂得多。

4 信息

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top