Content originally posted in LPCWare by JohnR on Tue Feb 08 16:20:17 MST 2011
Hi
I setup two LPC1343 LPCXpresso boards as masters on a single I2C bus. One master reads an ADC over the bus, the other repetively reads data from an EEPROM. The clock rates on the two boards are offset very slightly so that every now and then the master requests coincide.
I had expected that the case statement in the interrupt handler that deals with lost arbritation (0x38) would be triggered when a collision occurred and the system would halt until the error was cleared in software (that I thought I would have had to write).
However, the I2C firmware seems to be smarter than I thought. Looking at the I2C signals on a logic analyser, the transfer that is second to arrive at the I2C module seems simply to be delayed until the first transaction has completed.
Could anyone please confirm that this is the expected behaviour?
Thanks in advance,
John.