I started down this path, because I've got a CAN driver in uCLinux that I'm reviewing. I'm new to CAN in general, so I was doing a little research about it, and I've stumbled upon a question that I haven't found an answer to.

If CAN is a serial interface, and CANopen doesn't have a "bus master", then how does the CAN protocol handle inevitable collisions of data on the bus? If there's no one governing when you can send, given enough devices and time there will have to be sends that collide.

It's a pretty basic question, so it's possible I found an answer and just didn't understand it... If anyone can provide an answer/example that would be great.

有帮助吗?

解决方案

It's done through CSMA/CD.The signal of CAN is wire AND logic. So the smaller message id can have higher priority based competing with wire AND logic.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top