( Caro | 2019. 09. 10., k - 07:55 )

Pontosan erről van szó, ha a master-ben és a slave-ben eltér az órajel (pl. a slave elmaradt, vagy inkább összeszedett +1-et), akkor az adat irányában sem fognak megegyezni, és ezért fog a master arbitrációt veszíteni a slave-el szemben.
Pontosabban: arbitrációs hibát fog érzékelni (nem az van kint, amit ő ad), és ezért fogja "elengedni" a buszt. A slave meg ottmarad a meghúzott adatvonallal.

Ez egy könnyen előforduló hiba, és illik rá felkészülni. Ezen segít az, ha ilyenkor órajel impulzusokat adunk a slave-nek.

BTW ahogy írod, a clock stretching nem (elsősorban) azért kell, mert a biteket nem tudja előállítani a slave, hanem mert esetleg ennél egy komplexebb műveletet kell elvégeznie (pl. AD konverter), és maga az adat nem áll rendelkezésre.
Aki programozott i2c slave-et, az tudja miről beszélek. Pl. PIC18 i2c slave automatikusan clock stretch-el (az ACK-nál), ha olvassák. Ekkor kell beletölteni az adatot a TX bufferbe, ami a slave részéről akármeddig is eltarthat.