CAN总线标识符过滤器难点解析总线标识符过滤器难点解析
CAN总线是目前应用非常多的一种总线,在汽车电子,航空航天中应用广泛,今天和大家共同学习CAN总线标
识符过滤器的使用。
CAN总线是目前应用非常多的一种总线,在汽车电子,航空航天中应用广泛,博主用的是战舰的STM32开发板。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、过载帧。接着看
下文:
在报文传输时,不同帧有不同的而传输结构(例如数据帧有7个段构成,帧起始,仲裁段,控制端,数据段,CRC段,ACK
段,帧结束),只有严格按照该帧的结构进行帧的传输,才能被节点正确的接收和发送。 另外,在数据帧和遥控帧有标准格
式和扩展格式两种格式,标准格式有11位的标识符,扩展格式有29位的标识符。如下图:
标识符:标识符主要包括如下,也可以理解为仅包含ID号,但是在这里下面这些都是要包含的:
1个32位过滤器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位 2个16位过滤器,包括:STDID[10:0]、IDE、RTR和
EXTID[17:15]位