Microcontroller – Same Priority for Masters in a CAN Network

canmicrocontroller

I'm aware that messages on the CAN network are assigned priorities. I'm working on a 2oo3 voting system, and if each of the messages by the three masters are given three unique id's, I'll be making masters among the three masters for the messages i.e. I'll be prioritising among the masters.

I have considered the approach where the slaves keep transmitting the data (either periodically or when they detect a change in the inputs), so that by this way all the three masters can receive the data at the same time and act on the same data. Or, another approach wherein the three masters decide among themselves who will request the slave and when the slave replies, all three masters will process the data at the same time.

I want to know if there is a way, by using a CAN network, I can ensure that the three masters are given the same priority without going with the slave sending approach as mentioned above, and making sure that the masters initiate all actions and not the slaves.

Note: I'm aware of how useful ID's are in arbitration. I just want to know if there a way by which this method is possible.

Best Answer

In the CAN context, there are no masters. You can only speak about transmitters and receivers. The priority is set only between frames ID during the arbitration phase.

Therefore if you transmit the same ID message, the first transmitter emitting is going to transmit its frame. If they transmit at the same time, the frame is going to be corrupted (as soon as a bit differs). The ECU are going to send the error frame and therefore the message is not going to be taken into account by the CAN controllers.