当前位置:首页 > 单片机 > 单片机
[导读]CAN总线是目前应用非常多的一种总线,在汽车电子,航空航天中应用广泛,博主用的是战舰的STM32开发板。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]位

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

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

下面重点介绍过滤器:

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的发送和接收流程,这个可以看看手册上的流程图,讲的很详细。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭