HC32F4xx的CAN
华大HC32F4系列目前已搭载标准CAN、CAN-FD(具体因不同型号而异),完全遵循CAN2.0A/B、CAN-FD协议。
主要特性
CAN2.0支持最高波特率1Mbps;
灵活的波特率时钟分频1~256;
8个接收缓冲器(FIFO、错误或滤波数据不覆盖存储)
1个高优先级主发送缓冲器PTB
3个副发送缓冲器STB(FIFO、优先级仲裁方式)
16组独立筛选器(支持11位ID及扩展29位ID)
静默模式
回环模式
错误类型报警
可编程错误警告限定值
支持TTCAN模式
一个古老的CAN节点们的故事
更多信息咨询请联系angel.qi:13827489351(微信与手机号码同步)
对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进行接收判断,避免系统开发的冗余; |