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

admin 2024年3月18日10:14:31评论12 views字数 1278阅读4分15秒阅读模式

1. 什么是 FilterMask

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

共享的内存:

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

kCanRegCheckMaskSMIDFE_S0 = 0x7FF

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

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

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

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

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

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

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

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

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

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

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

标准模式描述:

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

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

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

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

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

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

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

End

原文始发于微信公众号(汽车电子嵌入式):AUTOSAT-Can-FilterMask 为什么用FilterMask,什么时候用,为什么用

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月18日10:14:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   AUTOSAT-Can-FilterMask 为什么用FilterMask,什么时候用,为什么用https://cn-sec.com/archives/2583917.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息