查看:
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进行接收判断,避免系统开发的冗余;
(本文来源:公众号微风无起) |
|