AUTOSAT-Can-FilterMask 为什么用FilterMask,什么时候用,为什么用

30 篇文章 52 订阅 ¥15.90 ¥99.00

1. 什么是 FilterMask

答:首先CAN的传输分为Basic Can和Full Can。Basic Can 的作用是一个 MailBox 可以接收一组或多个 CAN 报文(一组的报文都有哪些,就要用到FilterMask,它会将我需要的报文过滤过来,也就是说fifo buffer存储的都是我想要的报文。),而Full Can MailBox 的作用是一个 MailBox 只能接收一个CAN 报文,并且会将所有的报文存储在MailBox里。

MailBox就是一个RAM区域,如果接收的报文是Full Can,它存储在mailbox里就是按照一个一个存储的,如果我想要获取某个报文,我需要把整个Full Can的mailbox遍历一遍。

如果接收的报文是Basic Can,它存储在mailbox里就是一个fifo buffer存储的,我想要获取这部分报文,我就需要从FIFO buffer里获取。

2. 何时用到 FilterMask,或者一般什么情况用Basic Can或Full Can(配置准则-参考)

3. FilterMask是如何基于Basic Can筛选信号的

FilterMask是通过CAN在初始化的情况下,将要过滤的报文写到内存里

根据controller判断要拿的信号要从哪里开始,比如Can_GetCanSIDFEStartIndex(canHwChannel)=0,则他的范围是0,下一个19

Can_GetCanSIDFC_LSSOfCanSIDFC(canHwChannel)=每个controller的范围,比如controller=0时,他的范围是19,也就是0x13

0~19的范围就对应下表:

将要过滤的报文写到共享的内存里:

根据报文所处的位置,将报文放到对应的内存地址

共享的内存:

kCanRegCheckMaskSMIDFE_S0 = 0x7FF

如果是Extended ID Filter 需要进一步check,可以通过下面的方式:

最后将所有的报文ID写道寄存器里

首先我们用的是标准的筛选模式:

11 位标准Message ID 筛选的设置。标准 ID 筛选器配置控制标准Message筛选器路径

(vuint32)( ((vuint32)(initPara->stdFeCount) << 16) | ((vuint32)Can_GetCanSIDFC_FLSSAOfCanSIDFC(canHwChannel)) )

扩展模式下的描述。与标准模式对比:

标准模式描述:

可为 11 位标准 ID 配置 128 个Filter。访问标准Message ID Filter元素时,其地址是筛选器列表标准起始地址 SIDFCi.FLSSA 加上筛选器元素的索引 (0...127)

&(Cn->SIDFC)是 CAN 控制器的寄存器地址,基地址

((vuint32)Can_GetCanSIDFC_FLSSAOfCanSIDFC(canHwChannel)) 是 SIDFCi.FLSSA 筛选器列表起始地址

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
filter code 的关系是什么?何时会用到 filter mask 以及如何配置它们? filter maskfilter code 是用于过滤 CAN 总线上的报文的参数。在 CAN 总线上,每个报文都有唯一的报文 ID,filter maskfilter code 的作用就是根据报文 ID 的特定位来决定是否接收该报文。 具体来说,filter code 是用来匹配报文 ID 的指定位,而 filter mask 则是用来定义哪些位是关心的(1)和哪些位是不关心的(0)。当 filter code 和 filter mask 进行与运算后,结果与报文 ID 进行与运算,如果结果与 filter code 相等,则表示匹配成功,该报文将被接收。 在 CAN 总线应用中,当需要接收特定范围的报文时,会使用 filter maskfilter code 进行配置。举例来说,如果需要接收报文 ID 范围为 0x500 – 0x57F 的标准帧报文(标准帧的报文 ID 为 11 位,前 3 位后 8 位),可以将 filter mask 设置为 0xFF8,将 filter code 设置为 0x500,并将 filter code 和 filter mask 进行与运算后与报文 ID 进行与运算,以确定是否接收该报文。 因此,filter maskfilter code 的关系是通过与运算来匹配报文 ID 的指定位,以确定是否接收该报文。配置 filter maskfilter code 的情况通常发生在需要接收特定范围的报文时。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [CAN 接收邮箱 掩码设置](https://blog.csdn.net/ddzlq/article/details/107051544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [AUTOSAT-Can-FilterMask 为什么用FilterMask,什么时候用,为什么用](https://blog.csdn.net/xiandang8023/article/details/128830782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅尔文

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值