CAN作为总线通信协议,在总线上可能会有大量的数据包同时传输,适当的过滤机制可以提升数据处理的效率,节省处理器的资源。通过配置CAN过滤器定义自己的数据接收规则,只接收和处理符合规程的CAN数据帧,规则之外的数据直接丢弃,此过程外设自动处理,尽量减少软件对报文筛选的干预。
本文仅适用于采用CH32F2x、CH32V2x、CH32V3x微控制器系列的CAN设备过滤器说明,其他微处理器也可参考本文学习。
以CH32V307为例,最多支持28组过滤器配置,可选16位或32位过滤模式,支持两种方式过滤(屏蔽位或标识符列表)。
RTR:1远程帧,0数据帧;
IDE:1扩展帧,0标准帧;
STID:标准帧ID;
EXID:扩展帧ID;
在16位标识符列表模式下,寄存器组被拆分成四个寄存器,四个寄存器都用作标识符寄存器。
将CAN_FxR1[15:0]、CAN_FxR1[31:16]、CAN_FxR2[15:0]、CAN_FxR2[31:16]分别配置为0xFFE0、0x0FF0、0x1009、0x101F,第一个寄存器代表仅接收ID为7FF的标准数据帧,第二个寄存器代表仅接收ID为7F的标准远程帧,第三个寄存器代表仅接收扩展ID的28位、15位为高并且ID第27位到第16位为低的扩展数据帧,第四个寄存器代表仅接收ID的28位、第17位到第15位为高并且第27为到第18位为低的扩展远程帧;
按上图配置CAN硬件过滤,仅可接收下述符合规则的CAN数据帧:
1:ID为7FF的标准数据帧;
2:ID为7F的标准远程帧;
3:ID为10008000到1000FFFF的扩展数据帧;
4:ID为10038000到1003FFFF的扩展远程帧;
在16位模式下,寄存器组被拆分成四个寄存器,包含2组16位标识符寄存器和16位屏蔽寄存器;
ID对应关系与16位列表模式一致,只是高16位做MARK(掩码),低16位做标识符,掩码位为高时,代表接收CAN的帧对应ID应与标识符寄存器对应位一致(或帧格式一致),否则数据被过滤,反之不进行该位验证;
以下图为例:
1) 将CAN_FxR1[15:0]配置位0x0020,CAN_FxR1[31:16]配置为0x0038,标识符寄存器的IDE与RTR为低,Mark的IDE与RTR为高,代表仅接收标准数据帧,在看标识符寄存器的STID的第0位为高,Mark也为高,代表接收奇数ID,综合一下CAN_FxR1寄存器限制CAN仅接收ID为奇数标准数据帧;
2) 将CAN_FxR2[15:0]配置位0xFFFF,CAN_FxR2[31:16]配置为0XFFFF,标识符寄存器的IDE与RTR为高,Mark的IDE与RTR也为高,代表仅接收扩展远程帧,CAN_FxR2[15:5]与CAN_FxR2[2:0]都为高,代表ID从15位开始到28位全部为高,同时对应的Mark也为高,代表ID在0x1FFF8000-1FFFFFFF才会被接收
以上就是16位CAN硬件过滤器应用说明,下面我们将介绍CH32FV系列32位CAN硬件过滤器的应用说明,可点击阅读。
今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多CAN总线模组产品以及CAN总线技术资料,感兴趣的小伙伴可以登录我们的亿佰特官网和企业公众号进行了解,也可以直接拨打400电话咨询技术专员!
相关阅读:
1、【教程】利用ECAN-401实现CAN报文自定义协议转发
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 杭州办事处戴经理:17512568697
常州办事处崔经理:15906110783 南京办事处葛经理:17626012283
业务邮箱:support@cdebyte.com
全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都亿佰特电子科技有限公司【版权所有】 蜀ICP备13019384号-3