This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F5437 I2C Arbitration



I have a quick question about I2C multi master communication.

The User Manual for MSP430x5xx/MSP430x6xx Family says the following:

Arbitration is not allowed between:

  1. • A repeated START condition and a data bit
  2. • A STOP condition and a data bit
  3. • A repeated START condition and a STOP condition

 

What exactly does this mean?  

Is this saying that when there is a repeated START condition, another master trying to transmit cannot, until the stop condition is sent.

Or is it conveying something more/something else.

  • Dominic Pritham said:
    Is this saying that when there is a repeated START condition, another master trying to transmit cannot, until the stop condition is sent.

    Exactly.

    The purpose of a repeated start condition is to tell the other masters 'I'm not done with my transfer, I just want to switch direction'. Imageine a slave that requires setting a start address before reading data.

    You send a start, then the start address, then a repeated start to begin reading,and during repeated start you lose the bus due to arbitration. Now a different master accesses the same slave. A terrible mess would follow. Since you try to read now (address-LSB = 1) and the other master wants to write a start address (Address-LSB = 0), he would win the arbitration, undoing your just written configuration. And you wouldn't know, as you only know you lost the bus, but not that you also lost your slave to the other master.

    So as long as you do not send a STOP condition, no other master should try to get the bus.

**Attention** This is a public forum