Electronic – CAN bus communication mechanism

automotivecancommunication

Does every node on a CAN bus just keep transmitting data no matter what or does it only transmit data when it is "requested" to by other nodes on the same bus?

Best Answer

First of all the basic CAN transfer mechanism is:

Any node can initiate a transfer.

If a node wants to transmit and the bus is busy it waits until the end of the current packet.

If two nodes start to transmit at the same time then the message with the lower ID will take priority, the message with the higher ID will abort, wait until the bus is idle and then try again.

Most nodes will be configured to generate an ACK pulse at the end of every valid packet they receive. This doesn't mean that they will do anything with the packet, just that they read a valid packet and checksum. Multiple nodes can all generate an ACK for the same packet without any issues (normally every device on the bus will). If the transmitter doesn't see any ACK pulse it will indicate to it's controller that there was a transmission error.


There is nothing about a CAN bus that requires the system to keep transmitting no matter what or to only transmit when requested, that is entirely up to the software controlling the messages. All the CAN bus requires are that the bus has at least two nodes, the correct bus termination, and that the nodes are configured such that at least one node acknowledge every packet.

There are other standard protocols that can be used on top of CAN (e.g. ISO 15765-2) to control message transmission in a request/reply structure but they are entirely optional. Whether it is best to just blast messages out, use a standard protocol, use your own protocol, or a mixture of the above depends entirely upon the application in question.