I2C Question! Arbitration under special cases

Jul 12, 2006 1 Replies

Hi, all Under multi-master enviroment, if there are two masters which



are accessing the same slave at the same time. One master wants to



write one byte to the slave, the other master wants to write two bytes



to the slave. The first master sends the message " Start + Slave



address + Ack + byte one + Stop ", while the second master sends the



message " Start + Slave address + Ack + byte one + Ack + byte two+ Ack


  • Stop". When the first master wants to send stop, while the second master wants


to send first bit of the second byte, who will win the arbitration? My question is related descriptions on I2C spec ver2.1 P13. " In other



word, arbitration isn't allowed between



*A repeated start condition and a data bit
*
A stop condition and a data bit
*A repeated start condition and a stop condition. " So question comes. If such cases happen, how to do with arbitration ? thanks

In hardware terms, to allow multiple device control of the I2C bus, the SDA and SCL bus signals are open collector driven. This essentially means that the signals can only be pulled 'low' by the devices through an internal transistor, to get a 'high' on SCL or SDA an external pull-up resistor is required (normal at-rest state). Therefore, in the event of device A transmitting a 'high' (not really transmitting a high but rather releasing the bus for the external resistor to pull the bus 'high') and device B transmitting a 'low', the 'low' condition will always win.

Regards Alan

formatting link

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required