Jag har testat lite med open collector och pull-up motstånd på ca 3k3 och det verkar ju fungera (upp till 10 meter), men det är på gränsen - kanske 3k3 är lite för högt motstånd för att inte få för långa omslagstider. Kan tänka mig att 330 ohm ger distinktare omslag och mindre risk för störningar, men tycker det slösar onödigt med ström (15 mA).
Kom på att "open-collector"-lösningen egentligen är en AND-funktion, så varför inte använda en AND-grind istället, så blir ju omslagen supersnabba och något pull-up behövs i princip inte.
Exempel A är med AND-grind och exempel B är med open drain:

(kretsarna sänker upp till 25 mA)
Det går ju att cadda ett kretskort som passar båda varianterna, om jag bara sätter en jumper som förbinder "ingående" och "utgående" SDO (slave data output) i exempel B. (glömde rita in den på bilden).
För / nackdelar med open-drain / AND-grind:
Open drain: hög ström, långsammare up-flank, samma databuss hela vägen. (=fördel vid kontaktering: jag kan sätta IDC-kontakter med jämna mellanrum på samma kabel och få det mycket enkelt)
AND grind: propagation delay adderas vid varje grind (dock inget problem vid < 16 grindar), låg ström, SDO linjen måste separeras vid varje slav = separata datalinjer mellan varje slav = kräver separata kontakter och seriekoppling.
Om jag väljer open-drain med 1k pull-up (5 mA) - hur lång fördröjning på uppåtflanken kan jag räkna med i ett nät som ovan ( 16 slavar, 3 meter flatkabel) - kommer det att vara tillförlitligt med god marginal vid 600 kbps eller bör jag cadda så jag kan använda AND-grindar också för säkerhets skull. ( då måste jag ha två kontakter på varje slav , en "in" och en "ut" = bökigare.
Ska man köra 300 Mbps så krävs det andra lösningar, men jag tycker mina 600 kbps är så pass långsamt att det inte ska behövas så avancerade interface.