The open-collector adds inconveniences like requiring an external pull-up resistor and slows down the throughput. Why did the I2C designers choose to use open-collector/open-drain?
Answer
Open drain allows there to be multiple masters on the same bus. If two masters try to transmit at the same time with push-pull drivers, they can damage each other, and even if they don't it's hard to tell which master will win. Open drain acts as a "wired AND", which makes it easy to share the line and arbitrate collisions. CAN does something similar, although the physical layer is differential instead of single-ended.
In I2C in particular, open drain allows the receiver to stretch the clock by holding it low when the receiver needs more time to process the data. Whether this is a bug or a feature is a matter of opinion.
No comments:
Post a Comment