Identifier filtering

In the CAN protocol the identifier of a message is not associated with the address of a node but related to the content of the message.

Consequently a transmitter broadcasts its message to all receivers.

On message reception a receiver node decides - depending on the identifier value - whether the software needs the message or not.

If the message is needed, it is copied into the SRAM.

If not, the message must be discarded without intervention by the software.

To fulfill this requirement, the bxCAN Controller provides 28 configurable and scalable filter banks (27-0) to the application.

In other devices the bxCAN Controller provides 14 configurable and scalable filter banks (13-0) to the application

in order to receive only the messages the software needs.

This hardware filtering saves CPU resources which would be otherwise needed to perform filtering by software.

Each filter bank x consists of two 32-bit registers, CAN_FxR0 and CAN_FxR1. = 2 * 28 = 56 Registers

Scalable width

To optimize and adapt the filters to the application needs, each filter bank can be scaled independently.

Depending on the filter scale a filter bank provides:

One 32-bit filter for the STDID[10:0], EXTID[17:0], IDE and RTR bits.
Two 16-bit filters for the STDID[10:0], RTR, IDE and EXTID[17:15] bits.

Furthermore, the filters can be configured in mask mode or in identifier list mode.

Mask mode

In mask mode the identifier registers are associated with mask registers specifying

which bits of the identifier are handled as must match or as dont care.

Each bit of the register specifies whether the bit of the associated identifier register
must match with the corresponding bit of the expected identifier or not.

0: Dont care, the bit is not used for the comparison --- Don't Care
1: Must match, the bit of the incoming identifier must have the same level
has specified in the corresponding identifier register of the filter -- Do Care.

Identifier list mode

In identifier list mode, the mask registers are used as identifier registers.

Thus instead of defining an identifier and a mask, two identifiers are specified,

doubling the number of single identifiers.

All bits of the incoming identifier must match the bits specified in the filter registers.

Each bit of the register specifies the level of the corresponding bit of the expected identifier.

0: Dominant bit is expected
1: Recessive bit is expected

Filter bank scale and mode configuration

The filter banks are configured by means of the corresponding CAN_FMR register.

To configure a filter bank it must be deactivated by clearing the FACT bit in the CAN_FAR register.

The filter scale is configured by means of the corresponding FSCx bit in the CAN_FS1R register, refer to Figure 342.

The identifier list or identifier mask mode for the corresponding Mask/Identifier registers is configured

by means of the FBMx bits in the CAN_FMR register.

To filter a group of identifiers, configure the Mask/Identifier registers in mask mode.

To select single identifiers, configure the Mask/Identifier registers in identifier list mode.

Filters not used by the application should be left deactivated.

Each filter within a filter bank is numbered (called the Filter Number)

from 0 to a maximum dependent on the mode and the scale of each of the filter banks.

Concerning the filter configuration, refer to Figure 342.

Filter match index

Once a message has been received in the FIFO it is available to the application.

Typically, application data is copied into SRAM locations.

To copy the data to the right location the application has to identify the data by means of the identifier.

To avoid this, and to ease the access to the SRAM locations, the CAN controller provides a Filter Match Index.

This index is stored in the mailbox together with the message according to the filter priority rules.

Thus each received message has its associated filter match index.

The Filter Match index can be used in two ways:

Compare the Filter Match index with a list of expected values.
Use the Filter Match Index as an index on an array to access the data destination location.

For nonmasked filters, the software no longer has to compare the identifier.

If the filter is masked the software reduces the comparison to the masked bits only.

The index value of the filter number does not take into account the activation state of the

filter banks. In addition, two independent numbering schemes are used, one for each FIFO.

Refer to Figure 343 for an example.

Filter priority rules

Depending on the filter combination it may occur that an identifier passes successfully through several filters.

In this case the filter match value stored in the receive mailbox is chosen according to the following priority rules:

A 32-bit filter takes priority over a 16-bit filter.
For filters of equal scale, priority is given to the Identifier List mode over the Identifier Mask mode
For filters of equal scale and mode, priority is given by the filter number (the lower the number, the higher the priority).

The example above shows the filtering principle of the bxCAN. On reception of a message, the identifier is compared first with the filters configured in identifier list mode.

If there is a match, the message is stored in the associated FIFO and the index of the matching filter is stored in the Filter Match Index.

As shown in the example, the identifier matches with Identifier #2 thus the message content and FMI 2 is stored in the FIFO.

If there is no match, the incoming identifier is then compared with the filters configured in mask mode.

If the identifier does not match any of the identifiers configured in the filters, the message is discarded by hardware without disturbing the software.

STM32 Controller area network (bxCAN) Identifier filtering的更多相关文章

  1. 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结

    1. 前言 bxCAN是STM32系列最稳定的IP核之一,无论有哪个新型号出来,这个IP核基本未变,可见这个IP核的设计是相当成熟的.本文所讲述的内容属于这个IP核的一部分,掌握了本文所讲内容,就可以 ...

  2. Real-time storage area network

    A cluster of computing systems is provided with guaranteed real-time access to data storage in a sto ...

  3. 存储区域网络(Storage Area Network,简称SAN)

    存储区域网络(Storage Area Network,简称SAN)采用网状通道(Fibre Channel ,简称FC,区别与Fiber Channel光纤通道)技术,通过FC交换机连接存储阵列和服 ...

  4. mvc action controller area

    获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); 获取Action名称: ViewContext.Ro ...

  5. linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux

    tc 是linux 内置的命令:使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制: ne ...

  6. HDU 2125 Local area network

    简单DP,N×M的网格其中有一条边坏掉了,问从起点到终点的放法数 有两种方法,一种是DP很好理解 //#define LOCAL #include <cstdio> #include &l ...

  7. STM32(12)——CAN

    简介: CAN是Controller Area Network,是 ISO 国际标准化的串行通信协议. CAN  控制器根据两根线上的电位差来判断总线电平.总线电平分为显性电平和隐性电平,二者必居其一 ...

  8. stm32之CAN总线基础

    can总线协议概述: CAN是Controller Area Network的缩写,由德国博世公司开发:CAN通过ISO11891以及ISO11519进行了标准化:     CAN总线的特点: 1.多 ...

  9. CAN通信(STM32)

    1.CAN是控制器局域网络(Controller Area Network, CAN)的简称 (理论知识不做讲解了,太多了) 2.芯片选用:TJA1050 差分信号输入, 这里的显性电平CANH和CA ...

随机推荐

  1. 爬虫笔记之自如房屋价格图片识别(价格字段css背景图片偏移显示)

    一.前言 自如房屋详情页的价格字段用图片显示,特此破解一下以丰富一下爬虫笔记系列博文集. 二.分析 & 实现 先打开一个房屋详情页观察一下: 网页的源代码中没有直接显示价格字段,价格的显示是使 ...

  2. Ubuntu GNOME单击任务栏图标最小化设置

    在Ubuntu GNOME的发行版中,桌面使用的是GNOME,GNOME可以像Windows那样有一个底部任务栏,在Ubuntu GNOME中它称为 dash to dock,如下图: Windows ...

  3. linux怎么执行jar文件 怎么打可执行的jar包

    Linux下执行jar文件方法:命令行下进入文件目录,执行java -jar file.jar即可,也可在桌面创建一个启动器,在命令栏填写相关的命令:java -jar /file路径/file.ja ...

  4. free vmstat查看内存及系统调优【转】

    内存查看 查看内存是否存在瓶颈,使用top指令看比较麻烦,而free命令更为直观: [/home/weber#]free total used free shared buffers cached M ...

  5. shell脚本练习【转】

    1.写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin):分别这两类用户的个数:通过字符串比较来实现: #脚本内容 [root@ce ...

  6. contos 7创建阿里云镜像源

    今天在ESC上安装mariaDB,发现centOS 7默认的yum源上的mariaDB版本过低,然后又镜像到网易上,发现网易源上没有mariaDB,几经折腾才发现阿里镜像上mariaDB版本较新.更改 ...

  7. css初始化minireset.css

    一个很小的现代CSS重置,涵盖了基本内容: 重置字体大小:这样使用语义标记不会影响样式 重置块边距:所以只有在需要时才应用间距 重置表格:这样表格数据只占用它所需的空间 保留了行内间距:因此,按钮和输 ...

  8. tomcat -> 简介&部署

    Tomcat 简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开 ...

  9. Spring:@Cacheable 中condition条件的理解

    condition=false时,不读取缓存,直接执行方法体,并返回结果,同时返回结果也不放入缓存. ndition=true时,读取缓存,有缓存则直接返回.无则执行方法体,同时返回结果放入缓存(如果 ...

  10. 2013 ACM/ICPC 杭州网络赛C题

    题意:驴和老虎,在一个矩阵的两个格子里,有各自的起始方向.两者以相同的速度向前移动,前方不能走时驴总是向右,老虎总是向左.他们不能超出矩阵边界也不能走自己走过的格子(但可以走对方走过的格子).如果不能 ...