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

eCAN模块与SJA1000的应用比较

时间:06-08 来源:互联网 点击:
接收

eCAN和SJA1000在接收总线上的信息时,都可以采用查询方式或者中断方式。这里仅讨论各自的中断方式。

eCAN要接收信息时,相应的邮箱需要配置成接收邮箱并使能,还需要设定信息标识符寄存器(MID)。局部接收屏蔽寄存器(LAM),用来存储局部接收屏蔽位。覆盖保护寄存器(CANOPC)相应位,当其为1时,保护相应邮箱里的数据不被新的数据覆盖,此时还需要另一个邮箱来接收新的后续信息,否则会引起数据丢失;有数据丢失时CANRML相应的位会置1。当eCAN邮箱接收到信息时,就会产生相应的中断,继而CPU判断是哪个邮箱接收到信息,再读取邮箱里的数据。以31号邮箱为例,eCAN的信息接收的流程如图3 (a)所示。

SJA1000接收信息时,在接收中断使能的情况下,当总线上的信息满足报文验收的接收条件,无论该信息是数据帧还是远程帧,都会将信息存放在接收缓冲区,并产生接收中断。CPU就可以读取接收缓冲区中的信息并保存,然后可以清空接收缓冲区,等待接收下一条信息。SJA1000的信息接收流程如图3(b)所示。



SJA1000在PeliCAN模式下有两种滤波方式:单滤波方式和双滤波方式。当验收屏蔽寄存器的某位为1时,验收代码寄存器的相应位“不起作用”,即信息标识符相应位无论是“0”还是“1”都会被接收;当验收屏蔽寄存器的某位是0时,信息标识符相应位与验收代码寄存器的相应位必须一致,该信息才被接收。有关这两种滤波方式的具体内容请参见相关手册或论文。eCAN的验收条件比SJA1000相对复杂。当邮箱标识符寄存器中的AME位为0时,LAM将不起到作用,此时只有标识符与邮箱的标识符完全一样的信息才被邮箱接收或者存储;当AME为1时,eCAN将使用LAM,此时对信息的接收情况与SJA1000的单滤波方式相似,只接收符合条件的信息。

此外,eCAN与SJA1000在对远程帧的处理上也有较大的差别。eCAN处理远程帧时分为两种情况:向其他节点请求数据和自动应答远程帧。这两种情况必须将报文控制寄存器中RTR位置“1”。要向其他节点请求数据,必须将某邮箱配置成接收邮箱,写入标识符,使能该邮箱,将CANTRS相应的位置“1”,就向总线上发送了一个远程帧。eCAN会将对方的应答信息存在这个邮箱(这得保证没有相同ID的其他接收邮箱)。自动应答远程帧时,邮箱配置成发送邮箱,且邮箱标识符寄存器中的AAM位必须置“1”,写入需要发送的数据。当该邮箱接收到其他节点发送来的远程帧时,CANTRS中的相应位自动置位,将报文发送到总线上。而SJA1000接收到1帧信息后,根据RTR位来判断是否是远程帧,如果是远程帧,则根据制定的通信协议对该远程帧作出相应的回答,不能自动应答远程帧。

结语

eCAN和SJA1000都是功能十分强大的CAN总线控制器,都有各自的优点,可以应用在不同的场合。虽然它们在CAN总线通信中具体操作上有较大的差别,但其基本思路是一致的。在软件编程上大致可分为初始化、信息发送和信息接收三个基本模块,再加上总线睡眠与唤醒处理、总线出错处理和总线超载处理等功能模块,就可以构成一个比较完整的CAN总线通信软件。随着CAN总线技术的推广,eCAN和SJA1000都将有不错的表现。

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

网站地图

Top