查看: 2071  |  回复: 0
揽把秋风,一起来HC32F4看CAN(2)——筛选器

主题

回复
发表于2021-11-09 17:02:55 | 只看该作者
1# 电梯直达

盈盈秋水望穿

点点相思

弱水三千

只取一瓢饮

揽把秋风

一起来HC32F4来看CAN


                             ——lux


【注】CAN:一种控制器局域网络,常用于工控、汽车,本诗中读作“kàn”


开篇省略千万字,免去CAN基础知识“闲言赘语”,


意欲提升内功,敬请参悟终极大法ISO11898!



HC32F4xx的CAN


华大HC32F4系列目前已搭载标准CAN、CAN-FD(具体因不同型号而异),完全遵循CAN2.0A/B、CAN-FD协议。



主要特性


CAN2.0支持最高波特率1Mbps;灵活的波特率时钟分频1~256;8个接收缓冲器(FIFO、错误或滤波数据不覆盖存储)1个高优先级主发送缓冲器PTB3个副发送缓冲器STB(FIFO、优先级仲裁方式)16组独立筛选器(支持11位ID及扩展29位ID)静默模式回环模式错误类型报警可编程错误警告限定值

支持TTCAN模式


一个古老的CAN节点们的故事


对CAN总线通信机制有一定了解的朋友可能知道,CAN总线上的任意节点,都能接收到总线上的数据;但在一个CAN网络或系统中,并非每个节点都需要关心或处理来自总线的消息。

每每此时,总有这样一些玩转各类嵌入式通信的“高手们”按捺不住自己激动的心情:“在协议中加入特殊序列,收到后看看是否和自己有关,决定是否进一步处理……”

这时候……

“休眠者节点”发话了:“我就想事不关己高高挂起,别将我有限的“绳命”投入到无限的琐事当中,芝麻大点的事就不要烦我了”;

“高级职场PUA节点:“你们这些节点工作不饱和啊,什么事都瞅一眼,啥时候干活啊”;


但仍不乏一些“奋斗者节点们”:“我们拼了命地干活,但高峰期的时候还是忙不过来啊,导致丢失了很多重要的信息”


一声声哀怨叹息,随着凄凉的秋风吹到了CAN老大的身边,随着CAN老大轻轻挥一挥自己手中的“筛选神器”,这些哀怨又随风消逝,无影无踪,仿佛来过很多次,又仿佛从未来过,又仿 “佛 跳 墙”……



如此神器,究竟为何物?


HC32F4xx的CAN筛选器


CAN_CTRL提供16组(具体型号可能不同)32位的筛选器:可用于过滤不需要的ID的数据从而来降低CPU的负荷;CAN筛选器支持11位的标准ID和29位的扩展ID;每组筛选器由CODE和MASK组成;总线上的数据只要能通过其中一组筛选器,便可被CAN_CTRL接收处理。


如此神器,该如何驾驭?


筛选器的原理及配置方法示例,千说万道,不如一张图 ↓ ↓ ↓

 

上图紫色部分为寄存器及其配置值


CODE:希望匹配的ID;

MASK:对应位为‘1’表示不比较ID的该位,为‘0’表示比较ID的该位;


筛选器的配置:

(1)通过ACFEN使能对应的筛选器组;

(2)通过ACFADR选择当前待配置的筛选器组;

(3)配置筛选器(MASK和CODE)

       a、设置SELMSK=0,向CODE写入希望匹配的ID;

       b、设置SELMSK=1,向MASK写入希望比较的掩码值;


筛选器的应用场景:

(1)降低CAN节点的负载,CAN节点只关注自己希望处理的ID;

(2)降低MCU的负荷,MCU可处理其他业务逻辑;

(3)简化系统开发,应用软件不必对非必要的ID进行接收判断,避免系统开发的冗余;


(本文来源:公众号微风无起)


主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部