1
\$\begingroup\$

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?

\$\endgroup\$
3
\$\begingroup\$

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.

\$\endgroup\$
1
\$\begingroup\$

Using open collector gives the bus a lot of flexibility also it is required because the bus is bidirectional on a single wire. For example imagine if every device had an internal pullup of 10K ohms. If there are two devices then there is only 5K ohms on the bus and the internal drivers have no problem pulling the lines low to talk. If the bus were expanded to 255 devices (I2C can easily support that) the bus now has a 39 ohm pullup and every device has a problem pulling the lines low. By having external pllups you are given the choice of what values to use and where to place them.

\$\endgroup\$
  • \$\begingroup\$ Also it's important to use open collector to avoid the risk of one device driving HIGH while another drives LOW, resulting in a short. \$\endgroup\$ – Nick Williams Jul 27 '15 at 12:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.