问题描述
我对 CAN HW 对象感兴趣。
我知道 CAN 接受过滤器改变了 CAN ID 过滤。
为什么在接收中存在 CAN 硬件接受过滤器?
当收到CAN报文时,是否执行CAN仲裁程序?
发送CAN报文时,是否不需要CAN仲裁?
解决方法
接受过滤器用于根据接收到的 CAN 报文的 ID 对其进行过滤,这样固件就不会被它不感兴趣的报文所中断。过滤器是在硬件收到报文后应用的。如果消息无法通过任何过滤器,则将其丢弃。这可以防止不必要的硬件中断。
TX 端不需要任何过滤器,因为固件设计者选择发送什么。
每个节点在发送期间通过对总线进行采样来执行 CAN 仲裁程序。如果发送节点仲裁失败,则停止发送,稍后再试。
总线上的节点只接收赢得仲裁的消息。仲裁过程是 CAN 协议必不可少的嵌入部分,它始终存在且必要。