Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[General] I2C arbitration at edge or level of SCL

Status
Not open for further replies.

yuhiub90

Member level 2
Joined
Aug 2, 2012
Messages
52
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,288
Location
Hanoi, Vietnam, Vietnam
Activity points
1,618
Guys,

On I2C bus, if 2 masters issue START signal at almost the same time, bus arbitration must be performed. With respect to 1 SCL pulse of arbitration, I'm wondering where the process is taking place, only at edge of SCL or the whole HIGH duty cycle of SCL pulse?

Thanks
 

I2C controller: edge or level trigger design?

Guys,

With I2C interface design, which design style should be used: edge (flop) or level trigger (latch) based. I see no restriction in I2C specs, latch based design could work fine.

Thanks
 

the i2c protocol states that SDA changes should be when SCL is low and it shouldn't change when SCL is high (except START and STOP right?) you can change SDA just right after the SCL falling edge, but you better read SDA in the middle of the SCL pulse, but to implement arbitration, you should read the SDA just after the rising edge of SCL, if SDA is low when your master tried sending high, then your master lost the arbitration, and should change to slave (with half the data recieved) or wait the STOP condition...
 
What happens if SDA changes after rising edge of SCL during arbitration process. I mean at rising edge of SCL, both SDA of 2 master are HIGH, so both win the arbitration, but master 1 issues RESTART signal, and master 2 continues transferring data bit. Which master will win the arbitration?
 

of course master 2 should always check for a RESTART condition, the arbitration process is checked on every bit until the stop, not only on the first bit...
 

The restart wins, according to I2C specification:
Arbitration takes place on the SDA line, while the SCL line is at the HIGH level, in such a way that the master which transmits a HIGH level, while another master is transmitting a LOW level will switch off its DATA output stage because the level on the bus doesn’t correspond to its own level.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top