Electronic – CAN data transmission

can

I have four separate nodes (A, B, C, and D) that will transmit via a common CAN bus.
For a full packet of data to be sent to a node, each CAN controller has to send three times (20 bytes of data).

Node A, B, and C request data from D.

A has a lower ID than B, B has a lower ID than C, but greater than A.

My question is: If A sends its first packet to D and is almost about to send the second packet (delay due to loading of data into transmit registers), and if B detects that the bus is idle, will B begin to send?

Even if B begins to send, if A's transmit buffer has been loaded, will A send? If A sends data, will D receive the data uncorrupted?

Note: I'm thinking of implementing time slots for each node A, B, C (but I won't be using the full potential of CAN).

Best Answer

All CAN messages are broadcasts. Therefore a message from one node to all the other nodes only needs to be sent once. In fact, it can't be sent just to a individual node. That's not how CAN works.

You need to learn about CAN before proceeding any further.