新闻详情

新闻详情

首页 / 资讯中心 / 详情

CAN数据帧和过滤器

发布时间:2026/9/27 10:21:31来源:尧图网络
CAN数据帧和过滤器
一、can通信的数据帧起始位 识别码 RTR1位(0) 11位(每个设备都有属于自己的识别码) 1位(数据帧0远程请求帧1)控制码IDE 空闲位 DLC1位区分标准(0识别码11位)和拓展(1识别码29位) 1位(0) 数据长度(字节)数据码0~8字节DLC为1这数据码是8位CRC CRC界定符 ACK ACK界定位 结束位16位 1位(1) 1位(发送端1接收端0) 1位(1) 7位(1111111)二、can过滤器过滤器组• 掩码模式过滤出一组多个符合要求的ID• 列表模式过滤出一个或多个符合要求的ID• 16位过滤器只能用来过滤标准帧ID• 32位过滤器一般用来过滤扩展帧ID当然也可以过滤标准帧一个过滤器组是由两个32位寄存器组成可以将其配置为• 四个16位列表模式的过滤器可以过滤出来四个ID号的信息• 两个16位掩码模式过滤器• 一个32位掩码模式过滤器掩码模式当我们设置为掩码模式时一般我们称CAN_FxR1寄存器为ID寄存器或者验证码寄存器CAN_FxR2为掩码寄存器。代码详解1、设置为16位列表模式sFilterConfig.FilterMode CAN_FILTERMODE_IDLIST; // 列表模式 sFilterConfig.FilterScale CAN_FILTERSCALE_16BIT; // 16位位宽 sFilterConfig.FilterIdHigh 0x01 5; sFilterConfig.FilterIdLow 0x025; sFilterConfig.FilterMaskIdHigh 0x085; sFilterConfig.FilterMaskIdLow 0x0000;列表模式IDLIST只接收“列表中明确列出的 ID”不在列表中的全部丢弃白名单16位位宽在列表模式下整个过滤器组会被拆分成 4 个 16 位的“ID槽位”FilterIdHighFilterIdLowFilterMaskIdHighFilterMaskIdLow。左移5位STM32 CAN 过滤器硬件寄存器中标准 ID11位存放在高 11 位bits[15:5]低 5 位bits[4:0]用于存放 IDE/RTR 等标志位。允许通过的标准帧 ID 为0x01、0x02、0x08、0x00。2、设置为32为列表模式sFilterConfig.FilterMode CAN_FILTERMODE_IDLIST; //列表模式 sFilterConfig.FilterScale CAN_FILTERSCALE_32BIT; // 32位位宽 sFilterConfig.FilterIdHigh 0x01 5; sFilterConfig.FilterIdLow 0x0000; sFilterConfig.FilterMaskIdHigh 0x085; sFilterConfig.FilterMaskIdLow 0x0000;表示32位列表模式在32位列表模式下一个过滤器组被拆分成2个 32位的ID槽位。槽位1ID1由FilterIdHighFilterIdLow组合而成槽位2ID2由FilterMaskIdHighFilterMaskIdLow组合而成左移5位STM32 CAN过滤器寄存器中标准ID11位存储在32位寄存器的 bit[31:21]。实际过滤结果只接收标准ID 0x01和标准ID 0x08的数据帧。3、设置位16位掩码模式sFilterConfig.FilterMode CAN_FILTERMODE_IDMASK; // 掩码模式 sFilterConfig.FilterScale CAN_FILTERSCALE_16BIT; sFilterConfig.FilterIdHigh 0x01 5; sFilterConfig.FilterIdLow 0xfffE5; sFilterConfig.FilterMaskIdHigh 0x01 5; sFilterConfig.FilterMaskIdLow 0xfffE5;表示 16位掩码模式掩码模式的核心逻辑“ID的哪些位必须匹配哪些位可以忽略”。1单元A由 FilterIdHigh FilterMaskIdHigh 构成ID值0x01 50x20二进制0010 0000掩码值0x01 50x20二进制0010 0000匹配规则掩码中为1的位必须与ID值完全一致为0的位忽略。这里掩码只在bit5位有1其他位都是0。因此硬件只会检查标准ID的bit5是否为1对应11位标准ID的最低位即bit0。结论所有标准ID为奇数0x001, 0x003, 0x005 ... 0x7FF的帧都能通过。2单元B由 FilterIdLow FilterMaskIdLow 构成写入值0xFFFE 5。注意标准ID最大为0x7FF11位0xFFFE远超范围。这里实际运算为0xFFFE 5 0x1FFFC0写入16位寄存器时自动截断为低16位即0xFFC0。掩码值同理同样被截断为0xFFC0实际生效ID0xFFC0二进制1111 1111 1100 0000实际生效掩码0xFFC0二进制1111 1111 1100 0000匹配规则掩码中为1的位bit15~bit6必须与ID完全一致为0的位bit5~bit0忽略。寄存器中的 bit15~bit6 对应标准11位ID的 bit10~bit1。这意味着强制要求标准ID的高10位bit10 ~ bit1全部为 1。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

智算网络技术导论:第三部分工程实践 如何建设一张智算网络 2026/9/27 11:23:29

智算网络技术导论:第三部分工程实践 如何建设一张智算网络

第三部分 工程实践:如何建设一张智算网络 第九章 规模测算方法 前两部分建立了概念与结构。本部分转入工程实施,从最基础的工作开始——把一个"多少卡"的需求,逐步转化为设备数量、机柜数量、供电容量与投资估算。 9.1 从卡数到设备台数的推算方法 设备数量…

阅读更多 →
using-lwc - SKILL 2026/9/27 11:23:10

using-lwc - SKILL

name: using-lwc description: “当项目决策、代码结构、研究、事件或已验证的上下文必须通过 LWC 记忆和图索引在未来的编码 Agent 会话中存续时使用。” category: development risk: critical source: community source_repo: JanYork/using-lwc source_type: community dat…

阅读更多 →
unship - SKILL 2026/9/27 11:22:32

unship - SKILL

name: unship description: “Compare AI agent-made UI variants locally in a real app, then keep one and clean up unused temporary code.” category: development risk: critical source: community source_repo: mbenhard/unship source_type: community date_added: …

阅读更多 →
嵌入式偶发Bug排查实战:串口假故障、蓝牙断开与烧录失败的差分定位法 2026/9/27 11:22:04

嵌入式偶发Bug排查实战:串口假故障、蓝牙断开与烧录失败的差分定位法

干嵌入式这行,最怕的不是那种逻辑写错、一查就出的硬 bug,而是“偶尔出现、一测就好、一放就坏、换个环境又消失”的偶发问题。你蹲在板子面前守了半天,它稳如老狗;你刚把示波器探头收起来,它又当场表演。尤其串口通信…

阅读更多 →
搞懂如何运营一个网站完整流程,别在备案上栽跟头 2026/9/27 11:21:58

搞懂如何运营一个网站完整流程,别在备案上栽跟头

搞懂如何运营一个网站完整流程,别在备案上栽跟头 你是不是也遇到过这种情况?网站代码写完了,UI也调好了,满心欢喜准备上线,结果卡在备案环节。看着工信部的系统提示,心里直打鼓,流程一头雾水,不知道先填什么、后传什么,更怕填错资料被驳回,白白浪…

阅读更多 →
专业购物网站建设哪家好:避开5大坑的选型注意事项 2026/9/27 11:21:51

专业购物网站建设哪家好:避开5大坑的选型注意事项

专业购物网站建设哪家好:避开5大坑的选型注意事项 改个商品详情页的按钮颜色,建站公司拖了一周还没动静?这种憋屈事在电商圈太常见了。选对专业购物网站建设哪家好,核心不在看PPT多炫,而在吃透这些 注意事项…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉