stm32之can ---can id过滤器分析

stm32之can ---can id过滤器分析

ID:13310683

大小:636.09 KB

页数:11页

时间:2018-07-21

stm32之can ---can id过滤器分析_第1页
stm32之can ---can id过滤器分析_第2页
stm32之can ---can id过滤器分析_第3页
stm32之can ---can id过滤器分析_第4页
stm32之can ---can id过滤器分析_第5页
资源描述:

《stm32之can ---can id过滤器分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、前言在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时,根据标识符(CANID)的值决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。为满足这一需求,bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器组(13~0),以便只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件过滤从而占用一定的CPU开销。每个过滤器组x由2个32位寄存器,CAN_FxR0和CAN_FxR1组成。为了让大家了解STM

2、32的bxCAN的接收过滤机制,首先大家需要了解几个概念。2几个重要的概念2.1过滤器组STM32总共提供14个过滤器组来处理CAN接收过滤问题,每个过滤器组包含两个32位寄存器CAN_FxR0和CAN_FxR1组成,在设置为屏蔽位模式下,其中一个作为标识符寄存器,另一个作为屏蔽码寄存器。过滤器组中的每个过滤器,编号(叫做过滤器号)从0开始,到某个最大数值(这时最大值并非13,而是取决于14个过滤器组的模式和位宽的设置,当全部配置为位宽为16,且为标识符列表模式时,最大编号为14*4-1=55)。2.2过滤器的过滤模式STM32提供两种过滤模式供用户设

3、置:屏蔽位模式和标识符列表模式。2.2.1屏蔽位模式为了过滤出一组标识符,应该设置过滤器组工作在屏蔽位模式。在屏蔽位模式下,标识符寄存器和屏蔽寄存器一起,指定报文标识符的任何一位,应该按照“必须匹配”或“不用关心”处理。2.2.2标识符列表模式为了过滤出一个标识符,应该设置过滤器组工作在标识符列表模式。在标识符列表模式下,屏蔽寄存器也被当作标识符寄存器用。因此,不是采用一个标识符加一个屏蔽位的方式,而是使用2个标识符寄存器。接收报文标识符的每一位都必须跟过滤器标识符相同。2.3过滤器的位宽每个过滤器组的位宽都可以独立配置,以满足应用程序的不同需求。根据

4、位宽的不同,每个过滤器组可提供:●1个32位过滤器,包括:STDID[10:0]、EXTID[17:0]、IDE和RTR位●2个16位过滤器,包括:STDID[10:0]、IDE、RTR和EXTID[17:15]位2.3过滤器组的过滤模式和位宽设置过滤器组可以通过相应的CAN_FMR寄存器(CAN过滤器主控寄存器)配置。但是不是什么时候都可以直接配置,在配置一个过滤器组前,必须通过清除CAN_FAR寄存器(CAN过滤器激活寄存器)的FACT位,把它设置为禁用状态。然后才能设置或设置过滤器组的配置。·通过设置CAN_FS1R(CAN过滤器位宽寄存器)的相

5、应FSCx位,可以配置一个过滤器组的位宽。·通过CAN_FM1R(CAN过滤器模式寄存器)的FBMx位,可以配置对应的屏蔽/标识符寄存器的标识符列表模式或屏蔽位模式。(见后续3.2节)应用程序不用的过滤器组,应该保持在禁用状态。关于过滤器配置,可参见下图:图12.4过滤器匹配序号一旦收到的报文被存入FIFO,就可被应用程序访问。通常情况下,报文中的数据被拷贝到SRAM中;为了把数据拷贝到合适的位置,应用程序需要根据报文的标识符来辨别不同的数据。bxCAN提供了过滤器匹配序号,以简化这一辨别过程。根据过滤器优先级规则,过滤器匹配序号和报文一起,被存入邮箱

6、中。因此每个收到的报文,都有与它相关联的过滤器匹配序号。过滤器匹配序号可以通过下面两种方式来使用:●把过滤器匹配序号跟一系列所期望的值进行比较●把过滤器匹配序号当作一个索引来访问目标地址对于标识符列表模式下的过滤器(非屏蔽方式的过滤器),软件不需要直接跟标识符进行比较。对于屏蔽位模式下的过滤器,软件只须对需要的那些屏蔽位(必须匹配的位)进行比较即可。在给过滤器编号时,并不考虑过滤器组是否为激活状态。另外,每个FIFO各自对其关联的过滤器进行编号,如下图:图22.5过滤器优先级规则根据过滤器的不同配置,有可能一个报文标识符能通过多个过滤器的过滤;在这种情

7、况下,存放在接收邮箱中的过滤器匹配序号,根据下列优先级规则来确定:●位宽为32位的过滤器,优先级高于位宽为16位的过滤器●对于位宽相同的过滤器,标识符列表模式的优先级高于屏蔽位模式●位宽和模式都相同的过滤器,优先级由过滤器号决定,过滤器号小的优先级高如下图:图3如上图,在接收一个报文时,其标识符首先与配置在标识符列表模式下的过滤器相比较;如果匹配上,报文就被存放到相关联的FIFO中,并且所匹配的过滤器的序号(这时为4)被存入过滤器匹配序号中。如同例子中所显示,报文标识符跟#4标识符匹配,因此报文内容和FMI4被存入FIFO。如果没有匹配,报文标识符接着

8、与配置在屏蔽位模式下的过滤器进行比较。如果报文标识符没有跟过滤器中的任何标识符相匹配,那么硬件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。