内葛阿
我在研究 CAN 的规格的时候遇到个想不通的点,
我们知道,在 CAN bus 里面,当一个 sender 收到与自己正在传输的位元不一样的准位
的信号时,也就是它原本正在送 1,结果收到 0,它会知道发生碰撞,并且让出 bus 给
正在传输的节点。
问题来了!
如果 header 已经传完了,当下正在传输的是 payload,并且正在传送 1 的资料,这时
刚好其他节点开始说话了,并且发送 0。这样不就造成即便 can_id 是最小的 frame,
也就是优先序最高的 frame,也会失去这次发送资料的机会?!?!
还是说,transceiver 的实做会在收完 header 的那几个位元之后,就停止自己这个节点
的发送,直到其他节点传送完资料,才会再次发送待传送的资料,以避免上述情况发生?
蛤?