STM32 CAN总线标识符过滤器难点解析

时间:2017-09-22

是目前应用非常多的一种总线,在汽车电子,航空航天中应用广泛,博主用的是战舰的开发板。CAN的介绍和功能特点就不讲了,书本上网上都有,请大家在阅读本文前了解CAN总线协议的特点和功能。今天博主将和大家共同学习CAN总线的使用(非常重要!)
      请认真读这段话(来自STM32中文参考手册):在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接受者。节点在接收报文时,根据标识符的值,决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就丢弃,且无需软件的干预。在,STM32F103ZET6这款芯片中,bxCAN控制器为应用程序提供了14个位宽可变的,可配置的过滤器组(13~0),以便只接受那些软件需要的报文。硬件过滤的做法节省了CPU的开销,否则就必须由软件过滤从而占用一定的CPU开销。每个过滤器组x由2个32位寄存器,CAN_FxR0和CAN_FxR1组成。
      有些读者看了之后觉得,报文,标识符,过滤器,他们是什么?他们有什么联系?有这些问题说明你就要懂了。。别急,听我慢慢道来~~~
      过滤器:过滤器在接收时使用,在发送时不需配置过滤器!过滤器会根据标识符而决定节点要不要发送者发过来的报文。通俗一点:是我想要的,我就要;不是我想要的,我就不要。
      报文:报文(MESSAGE)是网络中交换与传输的数据单元,即站点性要发送的数据块。报文包含了将要发送的完整的数据信息,期长短不一致,长度不限且可变。注意(这里才是重点!):报文也是网络传输的单位,传输过程中会不断的封装成分组,包,帧来传输,封装的方式就是加一些信息段,那些就是报文头以一定格式组织起来的数据。
      这里补充一点:CAN总线上的报文传输由4个不同的帧类型表示和控制。1、数据帧 2、远程帧 3、错误帧 4、过载帧。接着看下文:


      标识符:标识符主要包括如下,也可以理解为仅包含ID号,但是在这里下面这些都是要包含的:

      例如在数据帧和远程帧中,标识符都是包含在里面的,而数据帧和远程帧是报文的一种表示类型。故,发送端发帧数据给接收端后,接收端根据标识符来进行筛选,决定取舍。

      看完上面三个定义,再回头看上面那段话应该没有问题了吧~

      下面重点介绍过滤器:

      STM32提供两种过滤器模式供用户选择,屏蔽位模式(标识符屏蔽位模式)和标识符列表模式。上图:


屏蔽位模式:

      在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”和“不用关心”处理。

标识符列表模式:

      在标识符列表模式下,屏蔽寄存器也被当做标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是采用两个标识符寄存器。接收报文的每一位都必须跟过滤器标识符相同。

      标识符列表模式很好理解:就是指过滤器寄存器的所有位都用来过滤,也就是说,发送端发送的标识符所有的位必须和接收端的过滤器的寄存器定义的一模一样,有一个为不同,都拒收次消息!

      而屏蔽位模式稍微复杂一点,但也好理解:举个简单的例子,我们过滤器组0工作在:1个32位过滤器-标识符屏蔽模式,然后设置CAN_F0R1=0XFFFF0000,CAN_F0R2=0XFF00FF00。其中,存放到CAN_F0R1的值是期望收到的ID,即我们希望收到的映像(STID+EXTID+IDE+RTR)是:0XFFFF0000。而0XFF00FF00就是设置我们需要必须关心的ID,表示收到的映像,其位[31:24]和位[15:8]这16个位,必须和CAN_F0R1中对应的位一模一样,而另外的16个位则不必关心,可以一样,也可以不一样,都认为是正确的ID,即收到的映像必须是0XFFxx00xx,才算是正确的(x表示不关心)。也就是说,屏蔽位(CAN_F0R2)中的数值:

      1:必须匹配,到来的标识符位必须和过滤器对应的标识符寄存器位相一致。

      0:不关心,可以一样,也可以不一样,都认为是正确的ID

因此:

      为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式

      为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式

注意:应用程序不用的过滤器组,应该保持在禁用模式。(这个很好理解)
关于CAN的发送和接收流程,这个可以看看手册上的流程图,讲的很详细。

上一篇:基于STM32的触摸屏学习笔记
下一篇:STM32系列之电容触摸屏讲解

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料