Hello
I am considering setting up a multi-master I2C bus with a DM6435 as one of the masters. Now I read about the arbitration process and that made sense until I hit the paragraph in the I2C user's guide where it says (2.9):
-
- A repeated START condition and a data bit
- A STOP condition and a data bit
- A repeated START condition and a STOP condition
Now I wonder:
- When could this actually happen? I see a chance for this to happen if
- one of the masters just came out of reset (in which case I have more problems than that, because that master will likely take over communication, but will have produced a repeated start that it doesn't know about)
- both masters sent the same command, but one master wants to terminate the communication with a STOP and the other wants to send a repeated START.
- Why does arbitration not take place in this situation? Wouldn't that be the right thing (tm) to do?
- If I forgot a case in 1, how is a master supposed to detect that another master transmits a STOP? If master A is pulling SDA down because it wants to transmit a 0 and master B wants to send STOP, then SDA will stay low, the STOP will not be sent, and no device other than master B will ever know that B wanted to send STOP.
Thanks for your help
Markus