I2C bus operates in numerous states and sub-states. Transmissions alter bus state. Initially the bus begins in ‘free’ state meaning free for use. Whenever a master starts transmitting, the bus enters ‘busy’ state. Busy state continues until end of transmission. See Figure 1.5 showing free and busy super-states.
Start and stop events trigger the change from free to busy and back again. The bus master signals start and stop when communication starts and ends.
When free, no device accesses the bus. Devices can detect bus free and can make an attempt to lock access to it if needed. Devices making the attempt act as bus masters. Only one master can succeed. If multiple masters start access simultaneously only one ever wins. Bus masters follow a prescribed arbitration procedure designed to produce exactly one winner no matter how many contenders.
The winner holds the bus until it decides to release the bus. The bus remains ‘busy’ until the master stops using it. ‘Messages’ pass along the bus during its busy condition. The master determines which messages and when; so condition is nominally busy even if not actually busy hence perhaps ‘locked’ is a better description. Any number of separate messages can pass between devices during busy, not necessarily just the one message. The master does not have to free the bus after the first message, or the second. Masters can lock up the bus indefinitely if they wish or if they crash! Successful I2C protocol relies on cooperation.
Therefore the starts and ends of messages do not necessarily equate to start and end of bus control. While a master holds the bus, it can run repeated messages over it. No other master can capture the bus until the current master signals stop. See Figure 1.5.
In conclusion, what all this means is that masters can combine multiple messages of different kinds in sequence and to differing slave addresses all during the same busy condition. Considerable flexibility exists.