当前位置:首页 > 嵌入式 > 嵌入式分享

CAN 过滤器的本质是 “基于 CAN 帧 ID 的硬件匹配电路”,其核心功能是通过预设的 “过滤规则”,判断接收帧的 ID 是否符合条件,仅允许符合条件的帧进入接收缓冲区。不同厂商的 CAN 控制器(如 ST 的 bxCAN、NXP 的 SJA1000、Microchip 的 MCP2515)在过滤器的硬件实现上略有差异,但核心逻辑一致,主要包含 “过滤器组”“过滤模式”“ID 类型”“接收 FIFO” 四大组件,共同构成 “帧接收 - ID 匹配 - FIFO 存储” 的完整流程。

(一)过滤器的核心组件:从规则定义到数据存储

1. 过滤器组(Filter Bank):过滤规则的载体

CAN 控制器通常包含多个 “过滤器组”(如 STM32 bxCAN 支持 28 个过滤器组,SJA1000 支持 2 个),每个过滤器组可独立配置一套过滤规则,实现多维度的筛选需求。例如,某汽车 ECU 需要同时接收 “发动机转速帧”(ID=0x123)与 “水温帧”(ID=0x124),可配置两个过滤器组,分别匹配这两个 ID;也可通过一个过滤器组的 “列表模式” 同时匹配多个 ID,灵活度取决于应用场景。

每个过滤器组包含 “过滤器寄存器”(用于存储目标 ID 与匹配规则)与 “控制寄存器”(用于配置过滤模式、ID 类型、激活状态):

过滤器寄存器:通常分为 “过滤器 ID 寄存器”(Filter ID Register)与 “过滤器掩码寄存器”(Filter Mask Register),前者存储目标 ID 的位 pattern,后者定义哪些位需要严格匹配、哪些位可忽略(仅掩码模式需要);

控制寄存器:配置过滤器的工作模式(掩码模式 / 列表模式)、ID 类型(标准 ID / 扩展 ID)、关联的接收 FIFOFIFO0/FIFO1)、激活状态(激活 / 未激活)。

2. 过滤模式:精准匹配与灵活筛选的选择

CAN 过滤器支持两种核心模式 ——掩码模式(Mask Mode) 与列表模式(List Mode),分别对应 “灵活筛选一类 ID” 与 “精准匹配多个固定 ID” 的需求,是过滤器配置的核心区别。

1)掩码模式:灵活的 “模糊匹配”

掩码模式(也称为 “掩码位宽模式”)通过 “过滤器 ID” 与 “过滤器掩码” 的配合,实现对某一类 ID 的灵活筛选。其核心逻辑是:掩码的每一位定义了过滤器 ID 对应位的 “匹配强度”—— 掩码位为 1 时,接收帧的对应位必须与过滤器 ID 的对应位完全一致(“严格匹配位”);掩码位为 0 时,接收帧的对应位可任意(0 1,“忽略位”)。这种模式适合筛选 “ID 具有相同前缀或后缀” 的一类帧,无需为每个 ID 单独配置过滤器。

以标准 ID11 位) 为例:若需筛选 ID 0x120~0x12F 的所有帧(共 16 ID),过滤器 ID 可设为 0x120(二进制00010010000),过滤器掩码设为 0x1F0(二进制00011111000)。此时,掩码的高 6 位(bit10~bit5)为 1,接收帧的这 6 位必须与过滤器 ID 000100完全一致(即 ID 的高 6 位为 0x12);掩码的低 4 位(bit4~bit0)为 0,接收帧的这 4 位可任意(0~F),因此所有 ID 0x120~0x12F 范围内的帧都会被匹配。

以扩展 ID29 位) 为例:若需筛选扩展 ID 0x12345000~0x12345FFF 的帧(低 8 位任意),过滤器 ID 设为 0x12345000,过滤器掩码设为 0xFFFFFF00。掩码的高 21 位为 1,需严格匹配 0x12345;低 8 位为 0,可任意,实现对该范围 ID 的筛选。

掩码模式的优势是 “一规则覆盖多 ID”,节省过滤器组资源;缺点是无法排除 “范围内不需要的 ID”—— 例如,若 0x120~0x12F 中包含不需要的 0x128 帧,掩码模式无法单独排除,需结合软件二次筛选(但仍比无过滤器时节省资源)。

2)列表模式:精准的 “枚举匹配”

列表模式(也称为 “标识符列表模式”)将过滤器 ID 寄存器直接作为 “目标 ID 列表”,接收帧的 ID 需与列表中的某一个 ID 完全一致才能通过筛选。其核心逻辑是:过滤器组的两个寄存器(Filter ID1 Filter ID2)可存储两个目标 ID,接收帧的 ID 只需与其中一个完全匹配(标准 ID 11 位全一致,扩展 ID 29 位全一致),即可通过过滤。部分高端 CAN 控制器(如 STM32H7 bxCAN)支持 “扩展列表模式”,可通过多个过滤器组级联,实现更多 ID 的精准匹配。

例如,某工业 PLC 需精准接收 ID 0x001(紧急停止帧)、0x002(启动帧)、0x003(暂停帧)的三个关键帧,可配置两个过滤器组:

过滤器组 1Filter ID1=0x001Filter ID2=0x002(列表模式,标准 ID);

过滤器组 2Filter ID1=0x003Filter ID2=0x003(列表模式,标准 ID,重复配置以仅匹配 0x003)。

此时,只有 ID 0x0010x0020x003 的帧能通过过滤,其他 ID(如 0x0040x123)会被直接丢弃。

列表模式的优势是 “精准筛选,无冗余数据”,适合需要严格控制接收 ID 的场景(如安全相关帧);缺点是 “一 ID 需一规则”,过滤器组资源消耗大 —— 若需匹配 10 ID,至少需要 5 个过滤器组(每个组存 2 ID),不适用于多 ID 筛选场景。

3. ID 类型:标准 ID 与扩展 ID 的匹配适配

CAN 帧的 ID 分为 “标准 ID11 位)” 与 “扩展 ID29 位)”,过滤器需先配置 “ID 类型”,确保与接收帧的 ID 位宽一致,否则会导致匹配失效。

标准 ID 过滤:过滤器仅匹配 11 ID CAN 帧(CAN 2.0A 协议),过滤器 ID 寄存器的高 11 位存储目标 ID,低 18 位(扩展位宽)无效或设为 0

扩展 ID 过滤:过滤器仅匹配 29 ID CAN 帧(CAN 2.0B 协议),过滤器 ID 寄存器的高 29 位存储目标 ID,低 3 位无效或设为 0

部分 CAN 控制器支持 “混合模式”(如 SJA1000 的 “双缓冲器模式”),可同时接收标准 ID 与扩展 ID 帧,但过滤器需分别配置 —— 例如,用一个过滤器组匹配标准 ID,另一个过滤器组匹配扩展 ID,避免 ID 类型混淆导致的过滤错误。

4. 接收 FIFO:过滤后数据的暂存区

通过过滤的 CAN 帧会被存入 CAN 控制器的 “接收 FIFO”(通常包含 FIFO0 FIFO1 两个独立 FIFO),FIFO 的作用是 “暂存有效数据,避免 MCU 读取不及时导致的数据丢失”。每个 FIFO 有固定的深度(如 STM32 bxCAN FIFO 深度为 3 级,可存储 3 帧数据),当 FIFO 未满时,新过滤后的帧会依次存入;当 FIFO 满时,新帧的处理策略由 “FIFO 溢出模式” 决定:

丢弃模式:新帧直接丢弃,仅保留 FIFO 中的旧数据;

覆盖模式:新帧覆盖 FIFO 中最早存入的帧(FIFO 头部数据),确保最新数据不丢失(适用于实时性要求高的场景)。

MCU 通过读取 FIFO 中的数据(如读取 CAN_RIR 寄存器获取 IDCAN_RDLR/CAN_RDHR 寄存器获取数据),完成有效帧的处理;处理后需通过 “释放 FIFO” 操作(如读取 FIFO 后自动释放,或通过寄存器手动释放),为新帧腾出空间。

(二)过滤器的工作流程:从帧接收到数据存储

CAN 过滤器的工作流程是 “硬件自动执行” 的,无需 MCU 干预,核心步骤可分为四步:

帧接收与 ID 提取:CAN 控制器接收总线上的差分信号,解析出 CAN 帧的结构(帧起始、ID 场、控制场、数据场、CRC 场、ACK 场),并提取 ID 场的二进制数据(11 位标准 ID 29 位扩展 ID),暂存到 “临时 ID 寄存器”。

过滤器激活判断:控制器检查当前配置的过滤器组是否处于 “激活状态”(通过控制寄存器的 “激活位” 判断)—— 未激活的过滤器组不参与匹配,所有帧直接进入 FIFO(或丢弃,取决于控制器配置);激活的过滤器组进入下一步匹配。

ID 匹配与规则判断:激活的过滤器组根据预设的 “过滤模式” 与 “ID 类型”,对临时 ID 寄存器中的 ID 进行匹配:

若为掩码模式:将临时 ID 与过滤器 ID 进行 “按位与” 运算,再与 “过滤器 ID & 过滤器掩码” 的结果比较 —— 若一致,说明 ID 符合规则;若不一致,判定为无效帧。

若为列表模式:将临时 ID 与过滤器 ID1、过滤器 ID2 分别比较 —— 若与任意一个 ID 完全一致,判定为有效帧;若均不一致,判定为无效帧。

有效帧存储与无效帧丢弃:

有效帧:控制器将完整的 CAN 帧(ID + 数据 + 状态)存入关联的接收 FIFOFIFO0 FIFO1),若 FIFO 未满,直接存入;若 FIFO 满,按溢出模式处理(丢弃或覆盖),同时置位 “FIFO 满标志”,提醒 MCU 及时读取。

无效帧:控制器直接丢弃该帧,不占用 FIFO 资源,也不触发 MCU 中断,仅更新 “无效帧计数寄存器”(部分控制器支持),用于后续故障排查。

整个流程的耗时均为 “硬件级速度”(通常为几十纳秒),远快于 MCU 的软件解析速度(需数百纳秒到微秒),确保了筛选的高效性。

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

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭